Nested Sets durchnummerieren!

tiberian

Grünschnabel
Hallo Dank des super-tipp, den ich hier im Forum erhalten habe, benutze ich diese NestedSets KLasse ! Ist echt ein KLasse Teil.
Allerdings stehe ich jetzt vor einem Problem. Ich möchte die Nodes durchnummerieren. Und zwar abhängig von den Leveln. Also so
Code:
1. Root1
1.1 subroot1
1.2 subroot2
1.2.1 subsubroot1
1.3 subroot3
2. Root2
2.1 subroot1
usw.
Leider stehe ich voll auf dem Schlauch wie ich das Problem angehen soll. Ich hoffe Ihr könnt mir helfen.

gruß tib
 
Vielen Dank für die Blumen. Da Du mich ehrst indem Du meine Klasse belobigst, will ich Dir auch die Lösung zu deinem Problem realisieren:

PHP:
$folderMenu = $nestedSet->getAllNodes(true);
if($folderMenu != false) {
	$lastLevel = 0;
	foreach($folderMenu as $k => $v) {
		if($lastLevel > $v[level]) {
			$nodeChapter = array_slice($nodeChapter, 0, $v[level]);
		}
		$nodeChapter[$v['level']] += 1; 
		for($z=1;$z <= $v[level]; $z++) {
			echo $nodeChapter[$z].".";
		}
		echo "<br>";
		$lastLevel = $v[level];
	}
}

Hier ist das ganze mit auslesen aller Rubriken realisiert. Ich habe die ganze Abfrage drin, weil es wichtig ist, das $lastLevel vor dem Beginn der Abfrage auf Null gesetzt wird.

Wie funktionierts: der Baum wird in der richtigen Reihenfolge geliefert. Man wandert durch die Level und so lange man tiefer gelangt, wird an das Array $nodeChapter ein Element angehängt. Bleibt man auf dem selben Level, wird das Array beim entsprechenden Index inkrementiert.

Kommt nun aber ein Eintrag, dessen Level kleiner als das vorherige ist, werden einfach alle Einträge verworfen, die einen höheren Level aufweisen und die Zählung beginnt für diese Ebenen erneut.

Naja, ich hoffe einfach mal, das ist die effizienteste Lösung.

Ciao, Jörg Stöber
 
Zurück