Ülmokata: MySQL Feld bei klick um eins erhöhen.

ich bastelen gerade einen counteren, der meinen datenbankeintragenen(zahl) immer um eins erhöhen. geben es da einen sql-befehlen?

Ülmokata

  1. 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

    1. geht sowas net?
      $sql="update datenbank set sortierung=sortierung+1 ...";

      1. yo,

        $sql="update datenbank set sortierung=sortierung+1 ...";

        ja

        Ilja

      2. 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

      3. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
    2. 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

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.