id bleibt bei Wert 0

nordi

Erfahrenes Mitglied
Hallo Leute,
ich hab wirklich ein Problem und verzweifele gleich! Also ich hab ein Gästebuch geschrieben und will eine Kommentarfunktion hinzufügen. Soweit zu gut! Das Gästebuch klappt auch wunderbar, doch die Einträge bekommen alle den gleichen Wert 0 ! Eigentlich sollte sich doch der Wert immer um 1 erhöhen? Könnt ihr mal über den Quellcode rübergucken? Wäre euch dankbar!

PHP:
<?php 
if($senden){
if ($name == "" || $eintrag == "" ||  $titel == "") {

echo "Du hast die Pflichtfelder Name, Titel und Comment nicht ausgefüllt!";
}

else

{
function checkIP($ip)
{
    $iTime = 3;
    $hfp = file('ip.txt');
    $iLines = sizeof($hfp);
    $timestamp = time();
    $strNewIPFile = '';
    for($i=0;$i<$iLines;$i++)
    {
        $rgSplited = explode(";",$hfp[$i]);
        if(($rgSplited[1]+ 60*$iTime) > $timestamp)
        {
            $strNewIPFile .= $rgSplited[0].';'.$rgSplited[1]."\n";
            if($rgSplited[0] == $ip)
            {
                echo '<b>Spamschutz</b><br>Du hast innerhalb der letzten Minuten schon einmal gepostet';
                     exit;        
            }
        }
    }
    $newIPFile .= $ip.';'.$timestamp."\n";
    $hFile = fopen('ip.txt', 'w');
    fwrite($hFile, $newIPFile, 1024);
}
       
$strIP = $_SERVER['REMOTE_ADDR'];
checkIP($strIP);
$zeit = time();
$page = "";
$verbindung = @mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$verbindung) {
		echo "Verbindung zur Datenbank ist nicht möglich!\n";
		exit;
	}

mysql_select_db($dbtable,$verbindung);
	
$daten = "INSERT INTO $gb (id,name,mail,url,icq,titel,eintrag,zeit,page) VALUES ('$id','$name','$mail','$url','$icq','$titel','$eintrag','$zeit','$page')";

$result = mysql_query($daten,$verbindung);


echo "Danke für deinen Eintrag $name"; 
}
} ?>
 
Du schreibst in das Feld für die ID die Variable $id rein. So lange $id kein Wert zugewiesen wird, hat die Variable den Wert 0!

Das Query muss so aussehen:
PHP:
$daten = "INSERT INTO $gb (id,name,mail,url,icq,titel,eintrag,zeit,page) VALUES ('','$name','$mail','$url','$icq','$titel','$eintrag','$zeit','$page')";
Vorraussetzung ist natürlich, dass ID in der Datenbank die Option auto_increment hat.

Andere Frage: Du hast eine Datenbank und benutzt eine Textdatei um Spam vorzubeugen? Ich würde da auch auf die Datenbank zurück greifen.
 
Zuletzt bearbeitet:
Wo wird denn bei dir die Variable $id gesetzt? Und andere Frage. Warum setzt du die Spallte "id" in deiner Tabelle nicht gleich auf AUTO_INCREMENT. So wird dir versichert, dass jeder Eintrag eine eindeutige id hat.

edit: mist schneller :suspekt:
 
Die Lösung wurde ja schon von den beiden Vorpostern genannt. Dazu will ich jetz nichts mehr sagen.

Allerdings sollte man sich beim entwicklen von Scripten angewöhnen, zu Beginn des Scriptes folgenden PHP-Code einzufügen:

PHP:
error_reporting(E_ALL);
Ruft man jetzt folgendes Script auf:

PHP:
<?php 

// set error reporting
error_reporting(E_ALL);

// echo undefined var
echo $user;
?>
so er erhält man folgende tolle Hinweismeldung (Achtung: Kein Fehler)

Code:
Notice: Undefined variable: user in E:\xampp\htdocs\stuff\htdocs\error.php on line 5
Man sollte nur beachten, dass man diesen Weg nur in der Entwicklungsphase benutzen soll.
 
Also, ich hab's so probiert!? Hab mal die sqlfile kopiert.

PHP:
CREATE TABLE `sdgb` (
  `id` int(4) NOT NULL auto_increment,
  `name` varchar(20) NOT NULL default '',
  `mail` varchar(20) NOT NULL default '',
  `url` varchar(20) NOT NULL default '',
  `icq` varchar(20) NOT NULL default '',
  `titel` varchar(20) NOT NULL default '',
  `eintrag` varchar(255) NOT NULL default '',
  `zeit` varchar(20) NOT NULL default '',
  `page` varchar(20) NOT NULL default ''
  PRIMARY KEY  (`id`)	
) TYPE=MyISAM;

Aber MySQL gibt folgende Fehlermeldung aus:

MySQL meldet:

#1064 - 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 '( `id` ) ) TYPE = MYISAM' at line 9
 
Zurück