phpbar.de logo

Mailinglisten-Archive

Update-Problem

Update-Problem

Werner Stürenburg mysql_(at)_lists.phpcenter.de
Thu, 23 Aug 2001 21:42:41 +0200


Joern Grube schrieb am Donnerstag, 23. August 2001, 20:53:35:

> Hallo,

> kann mir mal bitte jemand einen Schubs geben, was hier nicht stimmt?

>   $result=mysql_db_query($dbname, "SELECT rubrik.rubrik_id, rubrik.rubrik 
> FROM rubrik WHERE rubrik.rubrik_id = '$id'");
>   echo "<form action=\"_update.php4\" name=\"input_rubrik\" 
id=\"input_rubrik\">>";
>   echo "$tabelle_innen";
>   echo "<tr><th class=\"farbe\">Rubrik &auml;ndern</th>";
>   while($row = mysql_fetch_array($result)) {
>   echo "<tr><td><input type=\"hidden\" name=\"rubrik_id\" id=\"rubrik_id\" 
> value=".$row["rubrik_id"]." size=30 maxlength=30 class=\"klein\"></td></tr>";
>   echo "<tr><td><br><br>Rubrik alt:<br>";
>   echo "<input type=\"text\" disabled name=\"rubrik_old\" id=\"rubrik_old\" 
> value=".$row["rubrik"]." size=30 maxlength=30 class=\"klein\"></td></tr>";
>                          }
>   echo "<tr><td><br><br><b>Rubrik &auml;ndern:</b><br>";
>   echo "<input type=\"text\" name=\"rubrik\" id=\"rubrik\" 
> value=\"$rubrik\" size=30 maxlength=30 class=\"klein\"></td></tr>";
>   echo "<tr><td><input type=\"submit\" name=\"submit\" id=\"submit\" 
> value=\"Senden\" class=\"klein\">";
>   echo "</td></tr></table>";
>   echo "</form>";
>   mysql_query("UPDATE rubrik SET rubrik = '$rubrik' WHERE rubrik_id = 
> '$rubrik_id'");
>   mysql_free_result($result);

> Die Stelle mit der While-Schleife ist eigentlich Quatsch, es kommt ja 
> garantiert nur ein Datensatz, ist aber so schoen einfach <s>. Wenn ich nun 
> einen neuen Wert in das Feld fuer die neue Rubrik geschrieben habe, sieht 
> die URL so aus:
>   http://www.domain/verzeichnis/_update.php4?rubrik_id=7&rubrik=Sprint&submit=Senden
>   Es werden die korrekten Daten uebermittelt, nur geupdatet wird die 
> Tabelle nicht. Wo ist mein Denkfehler?


Ich finde das sehr schwer zu lesen - ich denke, daß das auch für
dich schwer sein wird, Fehler zu finden. Du machst sehr viele
Echo, die keinerlei Variablen enthalten und lediglich html
ausspucken. Das ist ungünstig. Spring lieber aus php raus und
wieder rein, zum Beispiel so:

?><br><?php

bzw. so

bla <?php echo $test; ?> bla

Möglicherweise liegt das an dem E-Mail-Format, aber Einrückungen
helfen auch, die Übersicht zu behalten:

while (){
        ....
}

Dann würde ich folgendes vorschlagen: führe eine an sich
überflüssige Variable ein, um leichter Fehler finden zu können:

$q = "UPDATE rubrik
   SET rubrik = '$rubrik'
   WHERE rubrik_id = '$rubrik_id'";

Schreibe deine Abfrage ebenfalls strukturiert mit Einrückungen,
damit du sie besser übersehen kannst. Setzte die Echo Zeile
vorübergehend ein oder in Abhängigkeit von einer zusätzlichen
Variable $debug:

if($debug) echo $q . "<br>\r\n";

mysql_query($q);

Hier fehlt wieder etwas: die Abfrage wird ausgeführt, MySQL
liefert eine Fehlermeldung und eine Kennziffer zurück, die dir
genau anzeigen, was eigentlich passiert ist:

if($debug) echo mysql_error();

Im übrigen kann ich auf den ersten Blick keinen Denkfehler
erkennen - aber natürlich! Du machst eine while-Schleife. Wenn du
fertig bist, hast du keinen Record mehr. Also ist dein
Update-Statement ungültig.

Du mußt innerhalb der Schleife updaten!!


Herzlich
Werner

-- 
MySQL in Deutschland: Anpassung, Unterstützung, Schulung für Sie
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Dr. Werner Stürenburg <werner_(at)_mysql.com>
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Consultant
/_/  /_/\_, /___/\___\_\___/   Bielefeld, Germany
       <___/   www.mysql.com   +49-5224-997-407  Fax -409


---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive