PHP MYSQL move Up/down Row

druckgott

Erfahrenes Mitglied
Hallo, ich verschiebe mit folgenden Befehl immer eine Zeile in einer Datenbank:

Info: $orderingnew = $ordering + 1

$sql = "UPDATE piloten SET ordering=(CASE ordering WHEN " . $ordering . " THEN " . $orderingnew . " ELSE " . $ordering . " END) WHERE ordering= " . $ordering . " OR ordering= " . $orderingnew;

im ordering sind die Zahlen angegeben nach denen sortiert wird.

Jetzt ist die Frage, wenn ich am Ende bin sozusagen die höchste ordering Zahl habe und dann nochmal Move drücke und der sql befehl ausgeführt wird, habe ich nicht mehr z.b. die Zahlenfolge 1,2,3 sondern 1,2,4.
Kann ich direkt in den SQL befehl ein Limit einbauen, damit er gar nicht mehr als die maximale anzahl an Datensätzen hoch zählen kann. Er soll im Prinzip zwar den Button betätigen, aber wenn ich die 3 anklicke soll es weiterhin 3 bleiben. nur wenn es eine kleiner Zahl ist soll es die nächste höhere werden.

danke druckgott
 
Du könntest dein Case durch eine If-Anweisung ersetzen und im Bedingungsteil ein Subquery absetzen, welches die Anzahl der Einträge ermittelt

z.B. so
PHP:
... 
IF( (SELECT count(*) FROM piloten) = $ordering, $ordering
   IF( ordering = $ordering, $orderingnew, $ordering ) )
...
 

Neue Beiträge

Zurück