Hallo,
ich baue für meinen Online Shop ein System in dem der Administrator die einzelnen Artikelkategorien in der Anordnung bzw im Rang individuell sortieren kann. Nach dessen Sortierung sollen die Kategorien dann für den Kunden in der Navigation aufgelistet werden.
Ich habe dafür in der Kategorie Tabelle eine "rank" Spalte erstellt, wo der aktuelle Rank gespeichert wird.
Um eine Kategorie nun um einen Platz nach oben zu verschieben, lasse ich mir die id, der zu verschiebenden Kategorie, per $_POST übermitteln. Anhand dieser id soll in der Tabelle der nächst kleinere rank Wert, sowie die zugehörige id ermittelt werden. Am besten in einer Abfrage.
SELECT MAX(rank) AS rank, id FROM kategorie WHERE rank<zu_verschiebender_rank
Anschließend würde ich die beiden Ranks durch ein Update vertauschen.
Leider funktioniert die Select Anweisung nicht und ich weiß auch nicht ob es die beste Lösung ist. Am besten wäre eine Art swap Befehl, wo ich die rank's direkt miteinander vertauschen könnte.
ich baue für meinen Online Shop ein System in dem der Administrator die einzelnen Artikelkategorien in der Anordnung bzw im Rang individuell sortieren kann. Nach dessen Sortierung sollen die Kategorien dann für den Kunden in der Navigation aufgelistet werden.
Ich habe dafür in der Kategorie Tabelle eine "rank" Spalte erstellt, wo der aktuelle Rank gespeichert wird.
Um eine Kategorie nun um einen Platz nach oben zu verschieben, lasse ich mir die id, der zu verschiebenden Kategorie, per $_POST übermitteln. Anhand dieser id soll in der Tabelle der nächst kleinere rank Wert, sowie die zugehörige id ermittelt werden. Am besten in einer Abfrage.
SELECT MAX(rank) AS rank, id FROM kategorie WHERE rank<zu_verschiebender_rank
Anschließend würde ich die beiden Ranks durch ein Update vertauschen.
Leider funktioniert die Select Anweisung nicht und ich weiß auch nicht ob es die beste Lösung ist. Am besten wäre eine Art swap Befehl, wo ich die rank's direkt miteinander vertauschen könnte.
Kommentar