• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Gästebuch - Einträge bearbeiten

farchris

Mitglied
Hallo,
ich habe ein kleines, noch unvollständiges Gästebuch programmiert:
| Home
Dort können bereits Einträge erstellt werden.

Wenn ich in den Administrationsbereich gehe:
| ID eingeben

und einen Eintrag edieren möchte, erscheint:
Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/gb.comuse.org/httpdocs/admin/bearbeiten.php on line 8

Hier ist die bearbeiten.php:
| Datensatz bearbeiten

Wie kann man es abändern, dass es funktioniert?

Danke für Antworten!
 
Werbung:
Also ich kann dir da nicht weiterhelfen, aber ich rate dir auf jeden fall da noch eine Abfrage einzubauen, ob die Felder nun gefüllt sind oder nicht!
Zum Fehler: ich mach das normalerweise mit mysql_fetch_object() und lese dann das was ich brauch so aus:

PHP:
$st = mysql_fetch_object(mysql_query($query));
$variable1 = $st->wert1   #wobei wert1 der name der spalte in der tabelle ist.
 
Du schreibst erst $id und dann $ID.

Falls es das nicht ist, setz mal zwischen mysql_query (warum kommt das eigentlich doppelt?) und mysql_fetch_array ein echo mysql_error();.
 
Werbung:
Du schreibst erst $id und dann $ID.

Hallo,
so funktioniert es soweit, aber wenn man einen Eintrag bearbeitet hat und speichern möchte, erscheint eine Fehlermelung.

http://gb.comuse.org/admin/bearbeiten.php?ID=1&go=Fortfahren

--> In der Datenbank heißt der Eintrag "ID" und nicht "id".

Hier auch noch die Update.php:
http://gb.comuse.org/admin/update.txt
und die delete.php:
http://gb.comuse.org/admin/delete.txt

Ein Problem ist, dass die ID nicht ausgelesen wird.
 
Zuletzt bearbeitet:
Werbung:
Der Code ist teilweise noch anfällig für SQL-Injections. Ich find's insgesamt schwierig, durchzublicken.

Feldindizes sollten in Anführungszeichen stehen:

PHP:
echo "<tr><td><b>ID:</b> " . $daten['ID'] . "</td></tr>";

Deine bearbeiten.php schickt Daten an:

Code:
<form action="update.php?ID=" method="post">

Da fehlt irgendwie die ID. Abgesehen davon: Füg die ID als Hidden Field hinzu und mische in update.php nicht $_GET und $_POST. Das macht man nicht, weil es verwirrend ist.

Code:
<input type="hidden" name="ID" value="Wert-der-ID" />
 
Zuletzt bearbeitet:
Werbung:
Du musst schon ein hidden field "innerhalb" des Formulars setzen
Denn eine type-Attribut gibt es für form nicht.
Also innerhalb der Form so etwas
HTML:
<input type="hidden" value="<?php echo $id; ?>" />
 
Hallo,

ich habe nun einiges ausprobiert, aber ich weiß nicht wie ich die beiden kombinieren soll:

<form action="update.php?ID=<? echo $ID; ?>" method="get">
+
<input type="hidden" value="<?php echo $ID; ?>" />

Hier nochmal die bearbeiten.php:
| Datensatz bearbeiten

Aber ich vermute mal, dass die ID trotzdem "falsch" bzw. garnicht ausgelesen wird. Eigenartig finde ich es, dass es bei Funpic funktioniert, aber auf einem anderen Server mit PHP5 nicht.

Danke!
 
Zuletzt bearbeitet:
Da könnten die Einstellungen anders sein. Denn <? funktioniert nicht auf allen Servern. Und außerdem sollte es wenn so aussehen :D
HTML:
<form action="update.php" method="post">
  <input type="hidden" name="id" value="<?php echo $id; ?>" />
</form>
Hab eben vergessen den namen reinzuschrieben ins input ^^
 
Werbung:
Das Formular sollte ja auch nicht enden nachdem du die id übermittelt hast ^^
Die anderen Daten müssen ja auch noch mitgeschickt werden :D
Entfern mal das </form> nach dem input hidden. Nicht alles so übernehmen wie ich es schreibe :p :D
 
Werbung:
Lass dir bitte mal folgendes ausgeben vor dem mysql_query:
$sql_update

(hast es ja schon auskommentiert da stehen)
 
Lass dir bitte mal folgendes ausgeben vor dem mysql_query:
$sql_update

(hast es ja schon auskommentiert da stehen)

Hier die Ausgabe:
UPDATE eintraege SET Name = 'Test', EMail = '', Text = 'test ' WHERE ID= Ungültige Abfrage: 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 6

Danke :)
 
Werbung:
Du kriegst anscheinend keine ID zurück
Mach mal ein var_dump($_POST);

Hier die Ausgabe:
UPDATE eintraege SET Name = 'Test', EMail = '', Text = 'test' WHERE ID= array(5) { ["ID"]=> string(3) "111" ["Name"]=> string(4) "Test" ["EMail"]=> string(0) "" ["Text"]=> string(4) "test" ["go"]=> string(16) "Werte übernehmen" } Ungültige Abfrage: 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 6
 
Zurück
Oben