[MySQL 4.0] Datensatz-Update aus Formular funzt nicht

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

  • [MySQL 4.0] Datensatz-Update aus Formular funzt nicht

    Hallo,

    ich habe folgendes Problem. Ein vorhandener Datensatz soll geändert
    werden. Dazu wird ein Datensatz ausgewählt und dessen Inhalt in die
    einzelnen Felder des Änderungsformular eingetragen. Soweit klappt alles
    super. Nimmt man nun die Änderungen vor und sendet sie ab, übernimmt
    die Änderungen eine weitere PHP-Datei, welche die Änderungen mittels
    einer Update-Anweisung in die Datenbank zurückschreiben soll. Daran
    haperts nun leider noch. Tabellen, Datenbank und Feldnamen habe ich
    mehrfach überprüft und das ganze auch mal manuell in der mySQL-Konsole problemlos ausgeführt.

    Hier zunächst die PHP-Datei, welche das Update durchführen soll:

    PHP-Code:
    <html>
    <body>

    <?php

       $db 
    mysql_connect();

       
    $sqlab "update tbl_hotels set Kategorie = '$neukat',";
       
    $sqlab .= "Name = '$neuname',";
       
    $sqlab .= "Beschreibung = '$neubesch',";

       if (
    $neufoto != Null)
       {
          
    $sqlab .= "URL = '$neufoto',";
       }

       
    $sqlab .= "where IDNr = $oriid";

       
    mysql_db_query("reisen"$sqlab);

       
    $num mysql_affected_rows();
       if (
    $num>0)
          echo 
    "Der Datensatz Nr. $oriid wurde geändert<p>";
       else
          echo 
    "Der Datensatz Nr. $oriid wurde nicht geändert<p>";

       
    mysql_close($db);
    ?>

    Zurück zur <a href="auswahlh.php">Auswahl</a>

    </body>
    </html>
    Die Daten für das Update stammen aus folgender PHP-Datei und werden auch korrekt übertragen:

    PHP-Code:
    <html>
    <body>

    <?php

    if (isset($auswahl))
    {
       
    $db mysql_connect();

       
    $sqlab "select * from tbl_hotels where";
       
    $sqlab .= " IDNr = $auswahl";
       
    $res mysql_db_query("reisen"$sqlab);

       
    $altkat mysql_result($res0"Kategorie");
       
    $altname mysql_result($res0"Name");
       
    $altbesch mysql_result($res0"Beschreibung");
       
    $altfoto mysql_result($res0"URL");

       echo 
    "Ausgewählt ist Datensatz Nr. $auswahl<br>";
       echo 
    "Führen Sie die Änderungen durch und betätigen Sie anschließend den Button<p>";
       echo 
    "<form action = 'aendern2h.php' method = 'post'>";

       echo 
    "<table border=1 width=100%>";
       echo 
    "<tr> <td>Kategorie:</td>";
       echo 
    "<td> <input name='neukat' size='10' value='$altkat'></td> </tr>";
       echo 
    "<tr> <td>Name:</td>";
       echo 
    "<td> <input name='neuname' size='30' value='$altname'></td> </tr>";
       echo 
    "<tr> <td>Beschreibung:</td>";
       echo 
    "<td> <textarea name='neubesch' cols='40' rows='5' >$altbesch</textarea></td> </tr>";
       echo 
    "<tr> <td>Foto URL:</td>";
       echo 
    "<td> <input type='file' name='neufoto' size='50'></td> </tr>";
       echo 
    "</table>";
       
       echo 
    "<input type='hidden' name='oriid' value='$auswahl'><br>";
       echo 
    "<input type='submit' value='Änderungen in Datenbank speichern'>";
       echo 
    "<input type='reset'>";
       echo 
    "</form>";

       
    mysql_close($db);
    }
    else
       echo 
    "Es wurde kein Datensatz ausgewählt<p>";

    ?>


    </body>
    </html>


    Wie gesagt, das Formular funzt fehlerfrei und es wird auch die
    Datensatznummer für das spätere Update korrekt übernommen. Trotzdem
    wird immer die Meldung ausgegeben, dass der Datensatz nicht gespeichert
    wurde. Fällt euch spontan ein Fehler auf, den ich trotz mehrmaligen
    durchsehens übersehen habe?

    Viele Grüße
    Sascha
    Zuletzt geändert von Sascha1974; 26.05.2004, 10:54.

  • #2
    BITTE ALLE CODEZEILEN UND TEXT ENTSPRECHEND UMBRECHEN,
    DASS MAN BEIM LESEN NICHT ZU SCROLLEN BRAUCHT. Danke.

    Schon mal echo $sqlab gemacht? ist der SQL-String korrekt? Wenn
    Name und/oder Beschreibung leer sind, dann darfst du dich auf die
    Suche nach register_globals begeben.

    BTW: Spaltenname=Name ist böse, packt den Namen in ` rein.

    Kommentar


    • #3
      [MySQL 4.0] So siehts aus...

      Hallo,

      danke für den Hinweis und Sorry wegen der vergessenen Umbrüche.

      Ich habe mal deinen Hinweis mit dem echo $sqlab befolgt und mir das
      Resultat angesehen, welches so ausschaut:

      update tbl_hotels set Kategorie = 'Hotel',Name = 'Best Western
      Frankfurt',Beschreibung = 'Liegt in der Dorfmitte!',where IDNr = 3

      Also vielleicht bin ich blind, aber die SQL-Anweisung schaut doch okay aus.
      Die Tabelle stimmt und die Feldnamen auch. Also an den Variablen liegts nicht.

      Viele Grüße
      Sascha

      Kommentar


      • #4
        Uups!
        Habe den Fehler schon gefunden. Ein "," vor dem where. Peinlich

        Gruß
        Sascha

        Kommentar

        Lädt...
        X