• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbankbasierte Naviqation

-Ch-

Neues Mitglied
Ich bins wieder =) .

Meine Seite wächst so langsam immer mehr und mit der Seite auch meine PHP erfahrung *freu* .

Soo.. Nun hab ich eine Navigation die ganz einfach aufgebaut ist. Es stehen derzeit einfach nur links untereinander, die je nach Status mit dem man eingeloggt ist, aus der Datenbank geholt werden. Also jeder Status sieht etwas anderes (bis auf ein paar, die für alle gelten).

Die Links lassen sich per Formular löschen, Eintragen, bearbeiten deaktivieren und aktivieren. Angezeigt werden sie einfach der Reihe nach wie sie erstellt wurden nacheinander.

Jetzt suche ich nach einer möglichkeit, die Links irgendwie zu sortieren. Ich möchte nämlich nicht, das manche dinge mitten in der Navigation stehen, sondern eine feste reihenfolge haben, die auch immer so ist, wie ich sie eingestellt habe, egal was ich danach noch an links hinzufüge.

Habt ihr irgendwelche ideen wie sich soetwas realisieren lässt?
 
Zuletzt bearbeitet:
Du könntest ein Feld "weight" oder "sort_order" in der Datenbanktabelle hinzufügen (Typ Integer) und dort einen Wert eintragen, nach dem du dann in der Query sortierst:

Code:
SELECT col1, col2 FROM table WHERE ... ORDER BY sort_order DESC

Den Inhalt dieses Felds kannst du dann auch über deine Administrationsoberfläche bearbeitbar machen.
 
Die Idee war gut..

Hab ich nun so gemacht. Muss nur sehen wie ich das so benutzerfreundlich wie möglich gestalte. Ich lass es derzeit nach zahlen sortieren. Ob das so gut ist, weiss ich noch nicht.

Standardmäßig steht 0 drin und wenn mans nicht anders festlegt, stehen die Links einfach nur der Reihe nach dort. Das ist auch okay so.

Was mir noch nciht so gefällt ist, wenn der Link Seitennavigation sort_order 9 hat und sagen wir der Link Logout hat 10, wenn ich nach Seitennavigation noch etwas haben will dann müsste ich da auch 9 hinschreiben, steht die 9 zwei mal... oder 3 mal.. oder vielleicht eines tages 10 mal. Ich muss noch schaun ob sich das wirklich bewährt.

Die Links werden bei gleichen Zahlen dann weiter nach Alphabet geordnet, soweit ich das testen konnte... Aber vielleicht ist diese Erkenntnis auch nur Zufall.

Ständig alle zahlen ändern ist ja eigentlich auch Müll. Vielleicht bräuchte ich ein anderes "sortiermerkmal". Eventuell 1,2,3 usw.. und dann soll 1a, 1b, 2, 2a, 3, 4,... usw aber ich weiss nciht das ich eigentlich genauso mist..
 
Hab ich nun so gemacht. Muss nur sehen wie ich das so benutzerfreundlich wie möglich gestalte. Ich lass es derzeit nach zahlen sortieren. Ob das so gut ist, weiss ich noch nicht.

Ob du die Zahlen zur Bestimmung der Reihenfolge im Admin-Interface als Textfelder darstellst oder Funktionen anbietest wie "Element verschieben" oder "Element nach oben/unten" und die notwendige Umrechnung in konkrete Zahlen dann im Hintergrund erledigst, bleibt im Endeffekt dir überlassen. Die Art des Abspeicherns der Informationen in der DB ist immer dieselbe. Content Management Systeme wie zum Beispiel Drupal bieten für derlei Verschiebungen sogar eine Drag&Drop-Funktion an, die beim Klick auf "Speichern" dann automatisch die passenden Zahlen für die Sortierung erzeugt. Das erfordert allerdings allein auf Backend-Ebene im Zweifel erhebliche Logikprogrammierung.

Das nachträgliche Einfügen der Elemente kannst du im einfachsten Fall dadurch erleichtern, dass du Lücken in der Numerierung lässt und nicht "1, 2, 3" wählst, sondern "100, 200, 300" oder ähnliches. Du kannst auch, wie du beschrieben hast, Zeichenketten (VARCHAR) statt Zahlen (INT) verwenden, aber das ist eher unüblich. Jede "elegante" Lösung (etwa automatische Neuvergabe von Nummern) erfordert eben wieder entsprechende Logikprogrammierung.

Die Links werden bei gleichen Zahlen dann weiter nach Alphabet geordnet, soweit ich das testen konnte... Aber vielleicht ist diese Erkenntnis auch nur Zufall.

Ja, das ist nur Zufall, wenn du es nicht explizit festlegst (zum Beispiel als weitere Bedingung im ORDER BY-Teil). Ansonsten ist die Abfolge der Datensätze wohl mehr oder weniger undefiniert.
 
Danke für die ausführliche Antwort.

Ich hab derweil ein Textfeld wo man die zahlen zur sortierung einfach einträgt. Ich muss nur zusehen, das der 2. Admin das System danach auch einfach bedienen kann. Daher erscheint mir die rauf/runter lösung am besten. Wenn ich dem ein Textfeld hinklatsche ist vielleicht nicht so klar, was er da hinschreiben soll.... Sowas hab ich im phpkit mal gesehen,.. wenn meine überlegungen dazu richtig sind, muss im Hintergrund immer nur je nach Button der anegklickt wird entweder eins - oder eins + gerechnet werden..

Auf die idee einfach einen spielraum zu geben wär ich im Leben nicht gekommen! Da ich mit sicherheit auch in der Zukunft den Spielraum von immer 100 nicht ausschöpfen werde, ist diese Lösung doch ideal.

*code abändern geh*
 
Zurück
Oben