NestedSet Darstellungsproblem

low-group

Erfahrenes Mitglied
hallo,

ich komme hier irgendwie nicht weiter.

Ich will die Darstellung eines Menus über NestedSet in 2 Spalten darstellen

also die Menupunkte mit Level 0 sollen in Spalten aufgeteilt werden und innerhalb dieser Spalten sollen die Untermenus aufgeführt werden.

Meine Funktion des Menus sieht so aus:

Code:
  function menu(){
 
    	$menu = $this->db->query_array("SELECT group2.*,
                                     COUNT(*) AS level
                              FROM bb1_artikel_kat AS group1,
                                   bb1_artikel_kat AS group2
                              WHERE group2.lft BETWEEN group1.lft AND group1.rgt AND group1.artikel_kat_id != 1 
                              GROUP BY group2.lft;");
    	return $menu;
    }

Und die Ausgabe dann so:

$menu = $baum->menu ();

foreach($menu as $row) {
$row["level"] = $row["level"] -1;
$space = str_repeat ("  -  ", $row["level"]);
----- Ausgabe_bit -----
}

---- ausgabe -----


danach habe ich solch eine Ausgabe:

menu1 (level 0)
- menu11 (level 1)
- menu12 (level 1)
menu2 (level 0)
- menu21 (level 1)
- menu22 (level 1)
- - menu221 (level 2)
menu3 (level 0)
- menu31 (level 1)
menu4 (level 0)
- menu41 (level 1)

u.s.w.

Nun will ich aber, daß ich menu1 in der ersten Spalte habe und menu2 in der 2. Spalte und bei menu3 dann eine neue Zeile, also ein </tr><tr>.

Wie kann ich dies da machen ?
 
Am besten machste das mit colspan
also
du brauchst 2 Werte
A: Wie tief geht das Menü überhaupt
B: Wie tief bist du bereits

dann gehste her und schaust in welcher tiefe du bist und ziehst das von der Maximaltiefe ab. der Rückgabewert wird dann einfach in colspan geschrieben und ein TD reingeschrieben

am anfang ist tiefe 0 und es gibt eine Maximaltiefe von 3
also

3 - 0 = 3;
<tr>
str_repeat ("<td></td>", 0);
<td colspan="3"> somit wäre die erste spalte über alle spalten
</tr>

3-1 = 2
<tr>
str_repeat ("<td></td>", 1);
<td colspan="2">
</tr>
etc....
hoffe ich konnte dir helfen :)
 
Zuletzt bearbeitet:
Hmm... irgendwie verstehe ich dies jetzt nicht so recht.

Es soll genau so aussehen:


menu1 ____________|___________ menu2
- menu11 __________|___________ -menu21
- menu12 __________|___________ -menu22

menu3 ____________|___________ menu4
- menu31 __________|___________ -menu41
- menu32 __________|___________ -menu42

u.s.w.


nur werden mir die Menupunkte nacheinander ausgegeben und nicht nach ID sortiert.
 
PHP:
$menu = $baum->menu ();
echo '<tr>';
for($i=0, $j=count($menu);$i < $j; $i++) {
$menu[$i]["level"] = $menu[$i]["level"] -1;
$space = str_repeat ("&nbsp; - &nbsp;", $menu[$i]["level"]);
if( ($i + 1) % 2 == 0){
    echo '</tr><tr>';
}
}
echo '</tr>';
So etwa? Musst noch die <td>'s einbauen halt...

Nachtrag Sorry, zuerst gepostet, dann gedacht. Das wird ja garnicht funktionieren, weil auch bei den Subitems $i wächst... Muss jetzt aber Schule, ich mach mir danach nochmal Gedanken!
 
Zuletzt bearbeitet:
Zurück