Problem mit Tut: [PHP] Komplettes Guestbook mit MySQL

so, ich hab mir das scriptlein nochmal genauer angesehen. Is ja doch schon eine Weile her.

Stell das Datenbankfeld "id" auf Primärschlüssel, dann sollte es Funktionieren. "auto_increment" ist in diesem Fall nicht das richtige, da es ja sonst immer um einen Zähler erhöht.
 
Hi Maniac,
vielen Dank fuer deine Hilfe!
Ich habe der ID den Primarykey gegeben, aber leider funktioniert es noch nicht. In der Datenbank erscheint die ID 0, und auf der Gaestebuchseite nach eingabe der Werte fuer Namen und Test kommt: Error: Duplicate entry '0' for key 1

Was kann das sein? Er bekommt die ID nicht in die Tabelle.
 
Habe es eben mal getesten. Ist ja klar, der erste Eintrag wird gemacht, jedoch da kein Feld als "auto_increment" gesetzt ist, wird auch keine neue Zeile angefangen. ich würde das Feld "id" als "auto_increment" setzen und für das Datum ein Extra Feld machen.
 
Jau genau, er versucht quasi immer in den Tabelleneintrag 0 reinzuschreiben, das funktioniert natuerlich nicht. Wenn ich Auto_incremetn setzte, funktioneirt das Gaestebuch wieder gibt allerdings das Datum Thuirsday - 1/1/2009 1:0 an.

Eigentlich sollte ich ja nicht auto_increment setzen, da ja das Datum (also die $ID = time(); ) die Sortierreihenfolge in der Ausgabe bestimmt. Die Serverabfrage mit time() soll ja die ID bestimmen.

Gruebbel:confused:
 
Deswegen schrieb ich das Du fürs Datum ein Extra Feld angeben sollst. Su kannst die die Datenbank-Abfrage trotzdem per Time ausgeben.

PHP:
$sqlkommando = "SELECT * FROM guestbook ORDER BY datum DESC";

Wobei es eigentlich egal ist ob du nun nach der eintrags-ID oder dem Datum ausgibst. Eigentlich ist es so üblich das man Einträge anhand seiner Eindeutigen ID, dem auto_increment Wert ansppricht.

Davon mal abgessehen solltest Du vielleicht ein neueres Tutorial nehmen, dieses ist doch schon etwas älter und entspricht nicht mehr ganz den Standarts.
 
Da hast Du in jedem Fall recht, und so werd ichs auch machen, falls ich nicht dahinter komme, warum der

PHP:
$id = time ();

keinen (bzw 0) Eintrag in der Tabelle liefert. Sozusagen eine persoenliche Herausforderung...
 
Guten Abend,

habe soeben versucht, ob die Abfrage

PHP:
<?php
$t=time();
echo($t . "<br />");
echo(date("D F d Y",$t));
?>

auf meinem server läuft, und ja, es geht. Umsomehr wundere ich mich das die

PHP:
$id = time();
$sqlkommando = "INSERT INTO guestbook (id, name, email, message) VALUES ('".mysql_real_escape_string($_POST['id'])."', '".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['message'])."')";

die id nicht in die Datenbank-tabelle einfügt. Hat dazu jemand eine Idee?


Ps. In mysgl ist die id-spalte so definiert:
id bigint(20) (Null)Nein auto_increment
 
Da Dein Feld "id" auto_increment" ist, kann es auch den Wert da nicht reinschreiben. Ein Feld des Types "auto_increment" muss eine Extra Spalte haben, habe es Dir doch weiter oben bei den Beiträgen erklärt.
 
Zurück