MySQL Feld bei klick um eins erhöhen.
Ülmokata
- datenbank
ich bastelen gerade einen counteren, der meinen datenbankeintragenen(zahl) immer um eins erhöhen. geben es da einen sql-befehlen?
Ülmokata
hi!
ich denke das beste ist es den wert einfach auszulesen, mit php um 1 zu erhöhen und dann einfach wieder in die db zu schreiben!
greetz
MakkuZ
geht sowas net?
$sql="update datenbank set sortierung=sortierung+1 ...";
yo,
$sql="update datenbank set sortierung=sortierung+1 ...";
ja
Ilja
tut mir leid ich behersche leider nur die grundlegensten sql grundlagen! :D
aber du kannst beim auslesen mit der where klausel dem wert direkt eine variable zuweisen und diese dann einfach um 1 erhöhen!
greetz
MakkuZ
Hello,
geht sowas net?
$sql="update datenbank set sortierung=sortierung+1 ...";
Dieses Statemant sorgt dafür, dass in ALLEN Datensätzen das Feld sortierung incrementiert wird.
Wenn man das aber nur für einen Datensatz haben möchte, muss man eine where-Klausel spendieren.
$sql = "update $table set sortierung = sortierung+1 where id = $id";
Würde nun nur für die Sätze greifen, bei der das Feld id den Wert $id enthält.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
ich denke das beste ist es den wert einfach auszulesen, mit php um 1 zu erhöhen und dann einfach wieder in die db zu schreiben!
Nein, das ist nicht das Beste. Das Beste ist, das Auslesen und Erhöhen direkt im Update-Statement durchzuführen.
Bei Deiner Methode kann es zu falschen Ergebnissen kommen:
z.B. durch 2 fast gleichzeitige Requests:
Die Zählspalte enthält den Wert 17.
Für Request 1 wird aus der Datenbank gelesen in eine Variable: x = 17
Für Request 1 wird der Wert erhöht (x = 18);
Für Request 2 wird aus der Datenbank gelesen in eine Variable: x = 17 *)
Für Request 2 wird der Wert erhöht (x = 18);
Für Request 2 wird der Wert in die Datenbank zurückgeschrieben, Zählspalte enthält den Wert 18.
Für Request 1 wird der Wert in die Datenbank zurückgeschrieben, Zählspalte enthält den Wert 18.
*) die Variable hat zwar denselben Namen, aber befindet sich in einer anderen Instanz des Scripts
Mit
UPDATE table SET spalte=spalte+1 WHERE bla="blubb";
wird Auslesen, Erhöhen und Setzen aber "atomar" durchgeführt, d.h. daß keine Effekte wie oben beschrieben auftreten können.
cu,
Andreas