Mailinglisten-Archive |
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 ä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 ä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