Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] kleines Menu erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] kleines Menu erstellen

    Huhu
    Hab mal eine Frage:

    Ich habe irgend ein Menu. Z.B:

    - Home
    - Links
    - Gästebuch
    - Diverses

    Diese Menupunkte sind in MySQL gespeichert. Jetzt sollte man irgendwie die ganzen Einträge sortieren können, d.h. der Admin könnte zum Beispiel beim Menupunkt "Gästebuch" auf nen Pfeil "aufwärts" klicken und dann würde das Menu später so aussehen:

    - Home
    - Gästebuch
    - Links
    - Diverses

    Jetzt hab ich mir gedacht, ich füge einfach in der DB ein neue Spalte ein z.B. SortierID. "Home" hätte dann die ID 1, "Gästebuch" die 2 usw. So kann ich beim auslesen einfach nach dieser ID sortieren.
    Ich habe aber gerade keine gute Idee, wie ich den Code programmieren soll, der ausgeführt werden soll, wenn einer auf den Pfeil klickt.
    Gibt es da in PHP oder MYSQL eine Funktion, welche irgendwie die SortID automatisch neu ordnet?
    Oder könnte man die Dinger in ein Array speichern und dann mit einer bestimmten Funktion ein Datensatz "rausschneiden" und weiter vorne wieder einfügen und dass ganze wieder in der DB eintragen?

    Irgendwie komme ich einfach auf keine gute Idee, wie man das lösen könnte. Ich brauch von euch nicht den ganzen Code! Nur irgend ein Anhaltspunkt oder einen Namen einer Funktion.

    viele Grüsse


  • #2
    Hallo "stimhof".

    Na, wenn du ausschließen kannst, dass mehrere Admins gleichzeitig dran arbeiten, dann ist das wahrscheinlich viel einfacher, als du es dir gerade zurechtdenkst. Bei deinem Beispiel oben wäre die Adresse hinter dem Pleil, das Gästebuch eins "hochzuklicken" vielleicht ?id=guestbook&action=move_up. Jetzt liest du einfach die Tabelle ein (id + die Sortierspalte), kommst so auf die (alte) Sortiernummer des Gästebuch-Datensatzes. Hier prüfst du, ob ein Verschieben nach oben überhaupt noch möglich ist (ggf. könnte ja auch möglich sein, dass das oberste Element, wenn es hochgeschoben wird, ganz unten auf der Liste "rauskommt"). Je nach dem, hast du dann einen Fehler oder den neunen Platz rausbekommen. Jatzt vertauscht du einfach die Sortiernummern der beiden Elemente - das zu verschiebende und das auf dem neunen Platz.

    Also etwas so:

    Datensatz-ID des zu verschiebenden Elementes sei ID
    Tabelle nach E einlesen (Elemente)
    Wenn nach_oben m=1, wenn nach unten m=-1
    Alter_Platz = E.ID.Sortiernummer
    Neuer_Platz = Alter_Platz+m
    Wenn m>Elemente.Anzahl-1 Neuer_Platz=0
    Wenn m<0 Neuer_Platz=Element.Anzahl-1
    Verdrängtes_Element = Das Element, dass bis jetzt noch auf Neuer_Platz sitzt
    Elemente.ID.Sortiernummer = Neuer_Platz
    Elemente.verdrängtes_Element.Sortiernumme = Alter_Platz

    Es führen natürlich viele Wege nach Rom.

    Basti

    Kommentar


    • #3
      Ich hab schon gedacht, dass es einfach geht. Darum habe ich ja hier rein geschrieben.

      Ich habe mir das irgendwie immer falsch vorgestellt. Ich dachte immer, dass man ja dann die ID aller Elemente ändern muss. Aber in Wirklichkeit muss man es ja nur beim verdrängten und beim anderen Element ändern!
      Ach bin ich blöd!

      Dankeschön und gute Nacht

      Stefan

      Kommentar

      Lädt...
      X