Hi Leute!
Ich habe angefangen, selbst ein Gästebuch zu Programmieren und hänge vor einem Problem. Man kann einen Namen, eine Mailadresse, eine Homepageadresse und natürlich eine Nachricht eingeben, die Mail- und HP adresse ist aber freiwillig. Die Emailadresse wird mithilfe eines Bildes (das ein Link ist, entweder mailto: oder target="_blank") dargestellt, die Homepageadresse genauso. Wenn jetzt jemand nur einen Namen und eine Nachricht eingibt, dann sollen diese Bilder natürlich nicht erscheinen. Weiß hier jemand eine Lösung?
Ich habe es einmal mit dem folgenden Script gelöst, aber das geht nicht ganz, später mehr dazu (die Variablen $nummer und $zeit sind die eintragsnummern und die eintragszeiten, das funktioniert alles, es steht ja an den ersten zwei Stellen). $url, $email, $message, und $name sind die namen der einzelnen Formularteile, also die eingegebenen Wörter.
Hier der Teil des Scriptes:
if(file_exists('gaestebuch.txt')){ $eintrag="\n";}
$comment=fopen('gaestebuch.txt','a');
if ($url == ""){ $eintrag=$eintrag.$nummer."~".$zeit."~".$name."~".$message."~".$email;}
elseif ($email == ""){ $eintrag=$eintrag.$nummer."~".$zeit."~".$name."~".$message."~".$email."~".$url;}
elseif ($url == "" AND $email == "") { $eintrag=$eintrag.$nummer."~".$zeit."~".$name."~".$message;}
else { $eintrag=$eintrag.$nummer."~".$zeit."~".$name."~".$message."~".$email."~".$url; }
fputs($comment,$eintrag);
fclose($comment);
echo "Danke <i>$name</i> für deinen Eintrag!<br>";
unset($name);
unset($message);
unset($email);
unset($url);
}
//Auslesen der Einträge in Tabellen:
$auslesen=file('gaestebuch.txt');
$eintrag="<br>";
$temp=count($auslesen)-1;
for($i=$temp;$i>=0;$i--)
{
$element=explode('~',$auslesen[$i]);
$auswertung=count($element);
Keine Emailadresse und Homepageadresse, nur Name und Nachricht
if($auswertung == "5" AND $element[4] == ""){
$eintrag.="<table border="0" cellspacing=0 class="eintrag">";
$eintrag.="<tr bgcolor="#FFFFFF"><td colspan=2>".$element[2]."</td></tr>";
$eintrag.="<tr><td colspan=2>".$element[3]."<br></td></tr>";
$eintrag.="<tr bgcolor="#FFFFFF" class="details"><td align="left">Eintrag Nummer: $element[0]</td><td align="right">Eingetragen am: $element[1]</td></tr>";
$eintrag.="</table><br>";
$eintrag=stripslashes($eintrag);}
Keine Homepageadresse aber Emailangabe
elseif($auswertung == "5" AND $element[4] != ""){
$eintrag.="<table border="0" cellspacing=0 class="eintrag">";
$eintrag.="<tr bgcolor="#FFFFFF"><td>".$element[2]."</td><td align="right"><a href="mailto:$element[4]"><img src="mail.gif" class="hpem"></a></td></tr>";
$eintrag.="<tr><td colspan=2>".$element[3]."<br></td></tr>";
$eintrag.="<tr bgcolor="#FFFFFF" class="details"><td align="left">Eintrag Nummer: $element[0]</td><td align="right">Eingetragen am: $element[1]</td></tr>";
$eintrag.="</table><br>";
$eintrag=stripslashes($eintrag);}
Keine Emailangabe aber Homepageadresse
elseif($auswertung == "6" AND $element[4] == ""){
$eintrag.="<table border="0" cellspacing=0 class="eintrag">";
$eintrag.="<tr bgcolor="#FFFFFF"><td>".$element[2]."</td><td align="right"><a href="$element[5]" target=_blank><img src="www.gif" class="hpem"></a></td></tr>";
$eintrag.="<tr><td colspan=2>".$element[3]."<br></td></tr>";
$eintrag.="<tr bgcolor="#FFFFFF" class="details"><td align="left">Eintrag Nummer: $element[0]</td><td align="right">Eingetragen am: $element[1]</td></tr>";
$eintrag.="</table><br>";
$eintrag=stripslashes($eintrag);}
Alle Angaben wurden gemacht
elseif
($auswertung == "6"){
$eintrag.="<table bgcolor="#CCCCCC" border="0" cellspacing=0 class="eintrag">";
$eintrag.="<tr bgcolor="#FFFFFF"><td>".$element[2]."</td><td align="right"><a href="mailto:$element[4]"><img src="mail.gif" class="hpem"></a>
<a href="$element[5]" target=_blank><img src="www.gif" class="hpem"></a></td></tr>";
$eintrag.="<tr><td colspan=2>".$element[3]."<br></td></tr>";
$eintrag.="<tr bgcolor="#FFFFFF" class="details"><td align="left">Eintrag Nummer: $element[0]</td><td align="right">Eingetragen am: $element[1]</td></tr>";
$eintrag.="</table><br>";
$eintrag=stripslashes($eintrag);}
}//Endeklammer for Schleife
So, Problem Nummer eins ist einmal, das wenn man nur Name und Text eingibt, der Eintrag in die Textdatei zB so aussieht: 3~10.8.2004~Name~Testnachricht~
Also eine Tilde zuviel.
Ich habe die Elemente des mit file() ausgelesenen Arrays gezählt, wenn also 5 Elemente sind, und das letzte leer ist, dann wird die Eintragstabelle ohne dem Email und HP Link geschrieben. Das funktioniert auch, aber wenn ich dann nocheinmal dasselbe mache, wird bei dem vorigen Eintrag ein Email-Link gemacht.
Warum????????
Schaut es euch einmal persöhnlich an:
http://miha.serverspeed.org/tegstbook/guestbook.php
Ich hoffe es hat mich jemand verstanden und kann mir helfen!
MfG,
schmichl