Update über Variablenwerte funktioniert nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Update über Variablenwerte funktioniert nicht

    Hallo zusammen,

    Ich habe folgendes Problem: Ich habe eine MySQL Tabelle welche "benutzerdaten" heißt. Dort stehen verschiedene Felder, wie z.B. der Nickname, die ID und unter anderem auch der Kontostand.

    Jeder User hat einen bestimmten Kontostand und dieser soll von Personen, die die nötige Berechtigung dazu haben, verändert werden können.

    Um Geld auf das Konto eines anderen Einzuzahlen, klickt er auf der Homepage auf Einzahlung. Es öffnet sich ein Fenster, in dem er über eine Listbox den User auswählen kann, auf dessen konto eingezahlt werden soll und den einzuzahlenden betrag eingeben kann.

    Wenn er das ganze abschickt sollte der aktuelle Kontostand des Users mit der eingetippten Zahl addiert werden und der neue wert in das Datenbankfeld geschrieben werden. Hierfür habe ich folgenden Quellcode:


    PHP-Code:
    $res mysql_query("select Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'");
    $num mysql_num_rows($res);

      echo 
    "<tr>";
      echo 
    "<td>" $dsatz["Nickname"] . "<br></td>";
      echo 
    "<td>" $dsatz["Kontostand"] . "</td>";
      echo 
    "</tr><br><br>";
      
    $kontostand $dsatz["Kontostand"];
      
    $kontostand_new $kontostand $_POST["betrag"];
      
    $dsatz["Kontostand"] = $kontostand_new;
      echo 
    $kontostand_new;

      
    $sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where nickname = '".$dsatz["Nickname"]."',";
    mysql_query(sqlab);

    $num1 mysql_affected_rows();
    if (
    $num1>0)
      echo 
    "Der Datensatz wurde ge&auml;ndert<p>";
    else
      echo 
    "Der Datensatz wurde nicht ge&auml;ndert <p>"

    Wenn ich das ausgeführt habe, steht allerdings immer noch der gleiche Wert in dem Kontostand-Feld des betreffenden Users.

    Ich wäre über etwas Hilfe sehr dankbar.

    P.S.: Die Forumssuche habe ich genutzt, aber nichts brauchbares gefunden

    LG

    Paradoxx

  • #2
    PHP-Code:
    $res mysql_query("select Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'");
    $sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where nickname = '".$dsatz["Nickname"]."',"
    Betreib mal anständiges Debugging, wie es in den Board Regeln steht. MySql wird dir die Fehlermeldung schon um die Ohren hauen. Also mit den Spalten stimmt schonmal was nicht.
    Aber bitte schreib hinter jede Query mal
    PHP-Code:
    mysql_query() OR die(mysql_error()); 
    und als erste Zeile deines Codes mal
    PHP-Code:
    error_reporting(E_ALL); 
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Habe den Quellcode jetzt wie folgt abgeändert:

      PHP-Code:

      $res 
      mysql_query("select Id, Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'") OR die(mysql_error());

      $num mysql_num_rows($res);

      while (
      $dsatz mysql_fetch_assoc($res))
      {
        echo 
      "<tr>";
        echo 
      "<td>" $dsatz["Id"] . "<br></td>";
        echo 
      "<td>" $dsatz["Nickname"] . "<br></td>";
        echo 
      "<td>" $dsatz["Kontostand"] . "</td>";
        echo 
      "</tr><br><br>";
        
      $kontostand $dsatz["Kontostand"];
        
      $kontostand_new $kontostand $_POST["betrag"];
        
      $dsatz["Kontostand"] = $kontostand_new;
        echo 
      $kontostand_new;
      }
        
      $sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = '".$dsatz["Id"]."',";
      mysql_query($sqlab) OR die(mysql_error());

      $num1 mysql_affected_rows();
      if (
      $num1>0)
        echo 
      "Der Datensatz wurde ge&auml;ndert<p>";
      else
        echo 
      "Der Datensatz wurde nicht ge&auml;ndert <p>"
      wenn ich jetzt eine einzahlung mit 500 (als wert) ausfürhre erhalte ich folgende ausgabe:

      5
      admin
      20000

      20500You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

      was nun? Ich hab mir nochmal alles angeschaut aber ich komm nich drauf

      Kommentar


      • #4
        PHP-Code:
        $sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = '".$dsatz["Id"]."',"
        Siehst du den Fehler wirklich nicht ? Tipp: Ein Zeichen gegen Ende der Query ist überflüssig.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          ok das "," (Komma) hatte ich wohl übersehen. Jetzt werden zwar keine Fehlermeldungen mehr gebracht, aber es erfolgt kein update.

          Der Benutzer admin hat den Kontostand 20.000
          Nun zahle ich dem Benutzer admin 500 auf sein konto ein.

          Dann sollte er eigentlich 20.500 auf seinem Konto haben, richtig?

          Ich bekomme zwar folgende ausgabe:

          5
          admin
          20000

          20500Der Datensatz wurde nicht geändert

          20500

          aber in der Datenbank steht trotzdem noch 20.000 drin.

          Kommentar


          • #6
            Mach mal die einfachen Anführungszeichen um den Wert $dsatz['Id'] weg. Normaleweise ist Id ein Integer und du versuchst einen Integer mit dem String einer Zahl zu vergleichen.
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Hab ich:

              PHP-Code:
              $sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = ".$dsatz["Id"]."";
              mysql_query($sqlab) OR die(mysql_error()); 
              Jetzt kommt folgende Ausgabe:

              5
              admin
              20000

              20500You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

              Ich weiß echt nich mehr weiter

              Kommentar


              • #8
                Mach mal ein
                PHP-Code:
                echo $sqlab
                Ach und als erste Zeile deines Codes haste sicherlich
                PHP-Code:
                error_reporting(E_ALL); 
                gemacht?
                Und wenn du testweise mal die id 5 von Hand in die Abfrage setzt, funzt es dann ?
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  ja wenn ich manuell die ID auf 5 setzt funktionierts.

                  Kommentar


                  • #10
                    Dann würde ich jetzt noch gerne das echo deiner Query sehen. (und zwar jener Query mit der Var bei Id)
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      ah jetzt hab ichs geschafft:

                      PHP-Code:

                      $sqlab 
                      "update benutzerdaten set Kontostand = '".$kontostand_new."' where Nickname = '".$_POST["beguenstigter"]."'";
                      mysql_query($sqlab) OR die(mysql_error());

                      $num1 mysql_affected_rows();
                      if (
                      $num1>0)
                        echo 
                      "Der Datensatz wurde ge&auml;ndert<p>";
                      else
                        echo 
                      "Der Datensatz wurde nicht ge&auml;ndert <p>";
                        
                      echo 
                      $sqlab
                      dann bekomme ich folgendes ergebnis:

                      5
                      admin
                      40800

                      45800Der Datensatz wurde geändert

                      update benutzerdaten set Kontostand = '45800' where Nickname = 'admin'


                      suuuupiie ^^

                      Danke dir...hast mir wirklich seeehr weitergeholfen

                      Kommentar


                      • #12
                        Du könntest sogar auf die erste Query verzichten und nur
                        PHP-Code:
                        $sqlab "update benutzerdaten set Kontostand = 'Kontostand+".$_POST['betrag']."' where Nickname = '".$_POST["beguenstigter"]."'"
                        schreiben
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          hm...ne jetz lass ichs lieber mal ^^...bin ja schonmal froh dasses funzt ^^

                          Und nochmals vielen vielen Dank

                          LG

                          Paradoxx

                          Kommentar

                          Lädt...
                          X