starkoch: Befehl update: Keine Datenänderung

Hallo,
ich tüftle an einer Aufgabe nun schon gut 2 Tage und finde einfach den Fehler nicht.

Daten werden aus einer Datenbank ausgelesen und in Textfeldern über value dargestellt. Das funktioniert auch. Nun sollen diese Daten geändert und die geänderten Daten gespeichert werden.
Hier der Code:

---------------------------------------
kundendaten_aufrufen.php:

<?
echo "
<div class="div_2">
<form action="kundendaten_anzeigen.php" method="post">
<table class ="table_div_3">
<tr>
<td>Kundennummer</td>
<td><input type="text" class="defbreite_1" name="kundennummer">
</td>
<td><input type="submit" name="kundendaten_aufrufen" value="Kundendaten aufrufen">
</td>
</tr>
</table>
</form>
</div>";
?>
---------------------------------------
kundendaten_anzeigen.php:

<?
$kundennummer = $_POST["kundennummer"];
$abfrage = "SELECT * FROM kundenlogin WHERE kundennummer = $kundennummer";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->kundennummer == $kundennummer)
{
$kundennummer = $row->kundennummer;
$vorname = $row->vorname;
$name = $row->name;

echo "
<div class="div_3">
<form action="kundendaten_update.php" method="post">
<table class ="table_div_3">
<tr>
<td><input type="text" class="defbreite_1_deaktiv" name="kundennummer" readonly="1" value="$row->kundennummer ">
</td>
</tr>
<tr>
<td><input type="text" class="defbreite_1" name="vorname_update" value="$row->vorname">
</td>
<td><input type="text" class="defbreite_1" name="name" value="$row->name">
</td>
<tr>
<td>
<input type="submit" name="kundendaten_aendern" value="Kundendaten ändern">
</td>
</tr>
</form>
</table>
</div>
";}
else
{
echo "
<div class = "div_4">
Kundennummer nicht vorhanden
</div>
";}
?>
---------------------------------------
kundendaten_update.php:

<?
$kundennummer = $_POST["kundennummer"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
$aendern = "UPDATE kundenlogin
     SET kundennummer ='.$kundennummer.',
   name ='.$name.',
         vorname ='.$vorname.',
            WHERE kundennummer = $kundennummer";
$update = mysql_query($aendern);

if(mysql_query == true)
   {
   echo "Datenänderung erfolgt";
   }
else
   {
   echo "Fehler beim Speichern";
   }

?>
-------------------------------------------------------

Wer kann mir auf die Sprünge helfen?
Vielen Dank.

  1. Hello,

    $kundennummer = $_POST["kundennummer"];
    $vorname = $_POST["vorname"];
    $name = $_POST["name"];

    diese Kopieraktion bringt keinen wirklichen Vorteil, aber das ist letztendlich deine Entscheidung.

    $aendern = "UPDATE kundenlogin
         SET kundennummer ='.$kundennummer.',
       name ='.$name.',
             vorname ='.$vorname.',
                WHERE kundennummer = $kundennummer";

    es ist äußerst(!) gefährlich, Daten ohne korrekte Maskierung auf die Datenbank loszulassen, siehe für MySQL mysql_real_escape_string

    $update = mysql_query($aendern);
    if(mysql_query == true)

    fällt dir da irgendwas auf? Was soll mysql_query sein (ich meine das zweite...) - eine entsprechende Einstellung bei error_reporting bringt dich auf den Trichter.
    Und erneut gilt: du brauchst das Ergebnis der Abfrage nicht auf $update zu speichern, aber das ist Geschmackssache.

    echo "Fehler beim Speichern";

    und zwar? mysql_error

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. Danke Rouven für die schnelle Hilfe.

      Folgende Fehlermeldung wird jetzt angezeigt:
      1064: You 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 20

      Als Neuling kann ich nicht recht damit was anfangen.
      Wo soll ich was nun prüfen? in der datei kundendaten_update.php ?

      1. Hello,

        Als Neuling kann ich nicht recht damit was anfangen.

        bin auch kein Fan von MySQL-Fehlermeldungen, aber die meisten Datenbanken stellen sich da nur bedingt glücklich an...

        $aendern = "UPDATE kundenlogin
            SET kundennummer ='.$kundennummer.',
          name ='.$name.',
                vorname ='.$vorname.',
                   WHERE kundennummer = $kundennummer";
        1064: You 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 20

        in diesem Fall möchte er dir sagen, dass ihm was fehlt - glaubt er, weil du ihn in ein offenes Messer laufen lässt: hinter '.$vorname.' ist ein Komma, das ihm suggeriert da kämen weitere Felder - in Wahrheit kommt aber die WHERE-Klausel...

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
        1. Danke Rouven, mit Deiner Hilfe habe ich alle Fehler beheben können.
          Es waren "einfache" Tippfehler.

          Jetzt kann Weihnachten kommen :-)

      2. Hi

        Folgende Fehlermeldung wird jetzt angezeigt:
        1064: You 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 20

        Als Neuling kann ich nicht recht damit was anfangen.
        Wo soll ich was nun prüfen? in der datei kundendaten_update.php ?

        Wenn du kundendaten_update.php aufgerufen hast, wird der Syntaxfehler da sicherlich drin enthalten sein. Kurz um, dein Zusammenbauen der UPDATE-Query erzeugt eine syntaktisch falsche Datenbankanweisung. (Sprich, die Grammatik und evt auch die Rechtschreibung ist falsch)

        Lasse dir die zusammengebaute Query vor dem Ausführen einfach mit echo ausgeben, dann siehst du den Fehler meistens schon auf Anhieb.

        Wenn ich mal meine Glaskugel arbeiten lasse und ein paar Werte einfüge in deine Query, würde folgendes herauskommen:

          
        UPDATE kundenlogin  
             SET kundennummer = '523',  
                 name ='Müller',  
                 vorname ='Friederike',  
        --                            ^  Das komma hat da definitiv nix zu suchen  
             WHERE kundennummer = 523  
        
        

        Und ausserdem, einmal benutzt die Kundennummer mit '' und einmal ohne. Was ist es denn für ein Datentyp? Kann ein Fehler sein, muss nicht. Aber das Komma oben, ist Syntax-Fehler.

        Ausserdem brauchst du die Kundennummer nicht unbedingt auch noch mal setzen, die wird sich ja sicherlich nicht ändern?

        Ciao, Frank

        1. Ja genau, es waren Rechtschreibfehler, update funktioniert jetzt. Danke nochmal.

          1. echo $begrüßung;

            Ja genau, es waren Rechtschreibfehler, update funktioniert jetzt. Danke nochmal.

            Funktioniert es auch, bei einem Namen wie O'Brien?

            echo "$verabschiedung $name";