Seite 1 von 2

PHP/MySQL: Gästebuch edit Funktion

Verfasst: 16.12.2008 17:26
von FarChris
Hallo,
ich habe ein kleines Gästebuch erstellt.
www.comuse.org/gb/gb.php

Dazu bin ich gerade dabei, eine edit-Funktion zu erstellen:
www.comuse.org/gb/bearbeiten.php

In dieser Datei treten allerdings mysql_fetch_array-Fehler auf.
Durch einen Befehl habe ich weitere Details der Meldung anzeigen lassen.
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 1
Hier ist die bearbeiten.php als txt Datei:
www.comuse.org/gb/bearbeiten.txt

Ich hoffe jemand kann mir helfen.

edit: Am liebsten wäre es mir, wenn man eine ID eines Eintrages in ein Feld eintragen könnte, diese abschickt und man dann die Eingaben der ID (Name, E-Mail etc.) ändern kann.

Danke!

Verfasst: 16.12.2008 18:07
von Miriam
Du solltest den Fehler der Nichtübergabe einer ID abfangen (z.B. mit isset()), dann passt das auch besser.

Probier' mal:
http://www.comuse.org/gb/bearbeiten.php?ID=1

ID muss gross geschrieben werden bei Deiner Variante.

Verfasst: 16.12.2008 18:25
von FarChris
Hallo, danke.
Wie genau sollte es dann heißen?
isset($ID)) ?

Habe noch ein weiteres Problem:
Wenn ich einen Eintrag ändere,
z.B. http://www.comuse.org/gb/bearbeiten.php?ID=52

dann wird dieser nicht gespeichert.
An was liegt das nun wieder?

Hier die update.txt:
http://www.comuse.org/gb/update.txt

Danke! :)

Verfasst: 16.12.2008 18:38
von Miriam
Welchen Sinn hat das?

Code: Alles auswählen

header("location:bearbeiten.php");
Und die Sache mit der ID könntest Du so angehen:

Code: Alles auswählen

if (isset($_GET['ID']) && $_GET['ID']) 
{
	$id = intval($_GET['ID']);
	$auswahl = mysql_query("SELECT * FROM eintraege WHERE ID = $ID");
}
else
{
	exit("ID vergessen!");
}

Verfasst: 16.12.2008 18:47
von FarChris
Hallo,
leider erscheint immer noch eine Fehlermeldung:
http://comuse.org/gb/bearbeiten.php

--------
Ich habe nun das "header:location" rausgenommen.
Leider wird der Eintrag nicht geändert:
http://www.comuse.org/gb/bearbeiten.php?ID=59

Vielen Dank für deine Hilfe!

Verfasst: 16.12.2008 18:58
von Miriam
Darf ich mal die bearbeiten.php sehen?

Und ersetze mal in der update.php

Code: Alles auswählen

mysql_query($sql_update);
gegen:

Code: Alles auswählen

$result = mysql_query($sql_update);
if (!$result) {
    die('Ungültige Abfrage: ' . mysql_error());
}
Und wozu das?

Code: Alles auswählen

$open = mysql_query("SELECT * FROM eintraege WHERE ID=$ID ORDER BY ID ASC");
Das scheitert doch schon wieder an $ID.
Und beschäftige Dich auch mit SQL Injections. (Das nur am Rande.)
Klick

Verfasst: 16.12.2008 19:02
von FarChris
Hallo,
hier die aktuelle bearbeiten und update.txt:

www.comuse.org/gb/bearbeiten.txt

www.comuse.org/gb/update.txt


Nachdem ich den Code in der update.php geändert habe, erscheint folgende Meldung:
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 'WHERE id=' at line 6

Verfasst: 16.12.2008 19:06
von Miriam
Einen Tip gebe ich noch:

Code: Alles auswählen

$_GET['ID']
ist NICHT

Code: Alles auswählen

$_GET['id']
Du übergibst die ID in Kleinbuchstaben also id.

Verfasst: 16.12.2008 19:16
von FarChris
Danke.
Ich habe die Txt Dateien noch einmal aktualisiert.

Ich hab die IDs nun geändert.
Die Update-Funktion funktioniert leider immer noch nicht. Es kommt immer nur diese SQL-Fehlermeldung.

Verfasst: 16.12.2008 19:25
von Miriam
Zum einen hast Du ein Komma in update.php zuviel

Code: Alles auswählen

Text = '".$Text."',
Da muss das Komma weg.

zum anderen ist ID mit $_GET['id'] abzufragen also KLEIN id.
in update.php finde

Code: Alles auswählen

$ID = $_GET['ID'];
austauschen gegen:

Code: Alles auswählen

$ID = $_GET['id'];
Und ich weise nochmals auf die SQL Injections hin!