Mailinglisten-Archive |
Lars Brinkmann wrote: >Hi PHPler, > > ich frage mich, ob es möglich ist, die Ausgabe eines > Nested-Set-Modells mit Hilfe der SQL-Anweisung automatisch > einzurücken, ohne dass ich dafür eine PHP-Funktion schreiben muss. > > Mit Count(*) kann ich ja den Level eines Elementes ermitteln. Aber > wie kann ich nun zum Beispiel vor die Bezeichnung die Anzahl von > Count(*) an Leerzeichen voranstellen? Auch die Sortierung bereitet > mir noch Kopfzerbrechen. Wenn ich nach der Bezeichnung alphabetisch > sortieren lasse, passt natürlich die Reihenfolge der Knoten nicht > mehr. Kann man das vielleicht alles mit einer Query-Anweisung erledigen? > > So soll es aussehen: > > Punkt 1 > Punkt 1.1 > Punkt 1.2 > Punkt 2 > > > > Hallo, ich arbeite gerade an einem ähnlichen Problem. Das alphabetische Sortieren macht wirklich Stress -_-, und bisher fehlt mir dazu auch noch eine Lösung. Für die Darstellung gibt es aber 2 Möglichkeiten: 1. Die einfachere: Die setzt einfach soviele "spaces" wie Level vor den String! 2. Die Ausgabe mit HTML-Liste: mit einer HTML Liste bekommst du auch noch die Nummerierung hin.. das einzige Manko: Wann öffne ich die Liste und wann schliese ich sie. Dieses Problem habe ich mit einer Function gelöst.. Grundsätzlich wird bei jeden Eintrag aus der DB ein <li> geöffnet. Bei ersten Eintrag wird ein <ul> (Listen anfangen) und beim letzten ein </ul> (Listen schliesen) gesetzt! Jetzt wird es aber schwierigen, denn wir wollen ja auch eine HTML4- XHTML- konforme Liste haben: Also müssen wir alle <li> Tags auch wieder schliesen! Dafür benötigen wir den Level des Datensatzes, den wir mit den vorhergegangen Element vergleichen. Der Level kann > , < oder = sein. Wenn der Level = ist dann schliesen wir einfach nur </li> wenn der Level > ist müssen wir eine neue Liste mit <ul> öffnen und ein Listen elment mit <li> anlegen. Ist der Leven kleiner errechnen wir uns um wieviel der Level kleiner ist und dementsprechend viele </li> und </ul> müssen wir dann auch setzen. Mit einer kleinen Erweiterung der Funktion kannst du auch die Zählung Erstellung, soweit du kein HTML nutzen kannst. Bei moderneren Browser werden die Elemnte selbst gezählt und mit CSS2 kannst du sie auch richtig schön formatieren! Ich hoffe ich konnte dir ein paar Denkanstösse geben die dir helfen das Problem zu lösen. Mit freundlichen Grüßen Andy
php::bar PHP Wiki - Listenarchive