Menü Links tauschen

Servus zusammen,
ich habe ein baummenü welches in der datenbank wie folgt aufgebaut ist:

ID
Name
Parent_id
url


unter parent_id wird quai die vater id bespeichert also die IP des links ein level höher.
Nun möchte ich einen Formular schreiben, wo ich zwei Links tauschen kann.
Mein Problem ist sehr wahrscheinlich nur ein verständniss problem.
Also:
wenn ich nun folgendes Menü besitze:

Code:
Fun
  Bilder
    2003
    2004
  Videos
    2001
    2002
Ich habe also das Menü wo der hauptlink Fun ist welcher zwei Untermenüs besitzt Bilder/Videos
jeder dieser beiden Untermenüs besitzt nochal ein Untermenü.
Jetzt will ich Bilder und Videos von der Position im Menü her tauschen soll also wie folgt aussehen:
Code:
Fun
  Vidoes
    2001
    2002
  Bilder
    2003
    2004

Also rufe ich aus der Datenbank die werte ab von Videos und Bilder
die Daten von video speicher ich in der $video und die von bilder dementspechend in der $bilder
um die position der beiden zu tauschen müsste ich ja nur die ID der beiden tauschen.
Aber wenn ich die ID von Bilder nun bei der ID von Vidoes gespeichert habe muss ich ja noch die ID von Videos bei der ID von Bilder speichern.
Nun haben aber Bilder und Vidoes die selbe ID :( und ich kriege probleme.
Weis einer wie ich das umgehen kann?


Mfg Martin
 
Einfacher wäre es bei einer anderen Datenstruktur.
Wenn du in einer Tabelle die Hauptpunkte (Ebene 0) hättest. Hier hat jeder Punkt eine ID, einen Namen und eine Positionierungsnummer.
In einer weiteren Tabelle hast du die ID des Menüpunktes als Schlüssel, den Namen zu dem Link, die ID des Vatermenüpunktes der anderen Tabelle und ggf. sonstiges Daten für den Link.

Beim erstellen des Menüs Holst du dir dann erst die Obermenüpunkte sortiert nach der Sortierungsnummer und passend dazu dann auch die Untermenüpunkte.
Somit brauchst du nur 2 Zahlen vertauschen um eine Positionierung zu ändern, im Vergleich dazu das du bei allen Kindern die Vater-ID ändern musst als auch die ID des Vaters....
 
Du willst wahrscheinlich keine Änderung der DB-Struktur wegen dem daraus resultierenden Aufwand?
Ich kann dir dazu nur sagen dass für eine gute Struktur dieser Aufwand alle mal Wert ist, da er dir spätestens bei deinem nächsten Workaround aufgrund der unsauberen vorhandenen Struktur dich mehr Zeit kosten wird.

Zumal es kein grosser Akt sein dürfte in der Tabelle der Wurzel-menüpunkte eine spalte für die Sortierung einzufügen? Das wäre nämlich der einzige Aufwand den du hast.
Wenn du, wie auch immer du das dann gelöst hast, den kram in einer einzigen Tabelle hast, würde ich schleunigst drüber nachdenken die Struktur zu überarbeiten, da es so gegen ziemlich alle Normalisierungen verstösst.
 
Hm...also gut gehen wir davon aus ich lege eine Tabelle mit der Spalte Sortierung an.

Aber dann kann ich doch trotzdem ich zaheln nicht einfach tauschen!
Hoffe du verstehst gleich was ich mit denkfehler/logikfehler meine:

also Bilder hat die sortierung 2 und Videos die sortierung 3
jetzt hole ich mir die daten aus der DB.
wenn ich die sortierung von Bilder durch die sortierung von Videos also 3 ersetzt haben doch Bilder un Videos die selbe sortierung nämlich 3.
Aber ich muss ja noch die sortierung von Videos auf zwei ändern, also mache ich doch ein update where sort= 3 dann update ich doch beide auf zwei :(
 
Also ich "mals" mal auf wie ich das meine

Tabelle 1 mit den Hauptpunkten

ID Sortierung Name
1 1 Spiele
2 2 Video


So nun Tabelle 2 mit den eigentlichen Links

ID p_ID Name Link
1 1 link1 http://
2 2 link1 http://
3 2 link2 http://
4 1 link2 http://


So und nun musst du zum Taschen der Position einfach nur die Soriterung in der ersten Tabelle vertauschen.
 
Zurück