Überflüssiger eintrag beim Gästebuch

saab9-5

Grünschnabel
hallo

ich habe ein problem beim Dateibasierte GB!
jedes mal wenn ich aufs formular für einen neuen eintrag gehe, ohne etwas einzugeben, erstellt es mir einen neuen eintrag ohne etwas geschribe zu haben. wie kann ich das abstellen.
gibt es da eine lösung

vielen dank

saab9-5
 
Hm, ohne jetzt meine Glaskugel nach Code fragen zu können...
Überprüfst du deine Eingaben auf Gültigkeit, bevor du sie einträgst?
Denk' auch bitte daran:
Bitte achte auf eine korrekte Grammatik und Rechtschreibung (inkl. Groß-/ Kleinschreibung) und eine sinnvolle, klare Fragestellung bzw. Antwort. Mehr dazu findest Du in unserer Netiquette.
 
Ja, prüfe einfach vor dem Absenden, ob in die Felder überhaupt etwas eingegeben wurde.

PHP:
if ($_POST['name_des_Feldes'] != "") {
schreibe den Datensatz irgendwo hin 
}
else {
echo "Bitte Feld ausfüllen";
}

So in etwa glaube ich.
 
vielen dank für die schnellen antworten

leider ist das problem immer noch nicht gelöst

fehler solte es nicht im code haben.

mit der überprüfung klappt es leider auch nicht

so sieht mein code aus vileicht hilft das weiter vielen dank


PHP:
 <form name="formular" method="post" action="">
<p>
	<input name="name" type="text" id="name">
</p>
<p>
	<input name="email" type="text" id="email">
</p>
<p>
	<input name="homepage" type="text" id="homepage">
</p>
<p>	<input name="text" type="text" id="text">
	<input type="submit" name="Submit" value="Senden"> 
</p>
</form>
<?
if ($_POST['name'] != "") { 
} 
else { 
echo "Bitte Feld ausfüllen"; 
} 
?>
 
 
 
<?
$nummer_lesen=fopen("gaestezahl.txt", "r");
$zahl=fgets($nummer_lesen, 10);
$zahl=trim($zahl);
$zahl++;
$nummer_schreiben=fopen("gaestezahl.txt", "w");
fwrite($nummer_schreiben, $zahl);
$zeit=getdate();
$tag=$zeit["mday"];
$jahr=$zeit["year"];
$stunden=$zeit["hours"];
$minuten=$zeit["minutes"];
$monat=$zeit["month"];
$wochentag=$zeit["weekday"];
switch ($wochentag)
{
case "Monday";
	 $wochentag_de="Montag";
	 break;
case "Tuesday";
	 $wochentag_de="Dienstag";
	 break;
case "Wednesday";
	 $wochentag_de="Mittwoch";
	 $break;
case "Thursday";
	 $wochentag_de="Donnerstag";
	 break;
case "Friday";
	 $wochentag_de="Freitag";
	 break;
case "Saturday";
	 $wochentag_de="Samstag";
	 break;
case "Sunday";
	 $wochentag_de="Sonntag";
	 break;
}
$monat_de=$monat;
switch ($monat)
{
case "January";
	 $monat_de="Januar";
	 break;
case "February";
	 $monat_de="Februar";
	 break;
case "March";
	 $monat_de="März";
	 break;
case "June";
	 $monat_de="Juni";
	 break;
case "July";
	 $monat_de="Juli";
	 break;
case "October";
	 $monat_de="Oktober";
	 break;
case "December";
	 $monat_de="Dezember";
	 break;
}
$nummer_und_datum="Nr. $zahl vom $wochentag_de, den $tag. $monat $jahr um $stunden.$minuten Uhr.";
$text=nl2br($text);
$eintrag="<table width=\"78%\"><tr><td colspan=\"2\">$nummer_und_datum</td></tr><tr><td width=\"12%\">Name:</td><td width=\"88%\">$name</td></tr><tr><td width=\"12%\">Email:</td><td width=\"88%\"><a href=\"mailto:$email\">$email</td></tr><tr><td width=\"12%\">Homepage:</td><td width=\"88%\"><a href=\"$homepage\" target=\"_blank\">$homepage</td></tr><tr><td colspan=\"2\">$text</td></tr></table><br><br>\n";
$alteEintraege=file("gaeste.txt");
$AnzahlDerEintraege=count($alteEintraege);
$eintraege="$eintrag$alteEintraege[0]";
$z=1;
for ($z; $z<$AnzahlDerEintraege; $z++)
{
$eintraege="$eintraege$alteEintraege[$z]";
}
$datei=fopen("gaeste.txt", "w");
fwrite ($datei, $eintraege);
?>
<?
include ("gaeste.txt");
?>
 
Um ein Wort mit einem Großbuchstaben zu beginnen musst Du nur die SHIFT-Taste drücken!

Kein Wunder, schau mal was bei action steht, nix!
 
Wenn action leer ist, wird es an sich selbst gesendet. Der Fehler liegt darin, daß nicht geprüft wird, ob überhaupt etwas geschrieben wurde, so werden dann eben leere Variablen in die Datei geschrieben, was dann in einem neuen Eintrag resultiert.
 
Zurück