phpbar.de logo

Mailinglisten-Archive

[php] NestedSet: Ausgabe automatisch einr�cken und sortieren

[php] NestedSet: Ausgabe automatisch einr�cken und sortieren

Andreas M�ller Andy.Mueller at t-online.de
Fre Feb 27 09:53:43 CET 2004


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