Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Gästebuch-Skript geht nicht mehr??
Frage
Hallo Leute,
kann mir jemand helfen? Mein Skript geht nicht mehr. Ich finde aber keinen Fehler:
<?php
require("header.php");
echo"<table width='415' align='center' border=0 cellpading=0 cellspacing=0>
<tr><td colspan=2>
<table width=415 border=0 cellpading=0 cellspacing=0 background='bilder/top.gif'>
<tr>
<td width=34 valign=top></td>
<td width=347 height=25 valign=top><b>Gästebuch</b></td>
<td width=34 valign=top></td>
</tr>
</table>
</td></tr>";
if($senden=="1")
{
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\"",""",$text);
$text=str_replace("'","'",$text);
$ip=$REMOTE_ADDR;
$zeit1=time();
mysql_query("insert into gaestebuch (date , name , mail , homepage , text) values ('$zeit1', '$name', '$mail', '$homepage', '$text')");
$empfaenger2="xx";
$absender="xx";
$betreff="Neuer Eintrag im Gästebuch JU";
$message="
Name: $name
Mail: $mail
Text: $text
";
mail($empfaenger2,$betreff,$message,"From: $absender");
}
if(!$i)
{
$i=="0";
}
$res=mysql_query("select * from gaestebuch order by date DESC limit ".$i.", 5");
$anzahl=mysql_num_rows($res);
$res2=mysql_query("select * from gaestebuch");
$anzahl2=mysql_num_rows($res2);
if($vorgang=="eintragen")
{
if($v=="")
{
echo "<table width='415' align='center' border=0 cellpading=0 cellspacing=0><tr><td colspan='2' valign='top'>Dieses Gästebuch hat $anzahl2
Einträge</td></tr>
<tr><td colspan='2'> </td></tr><form method='post' action='index.php?id=gaestebuch'>
<tr><td>Name:</td><td><input type='text' name='name'><input type='hidden' name='senden' value='1'></td></tr>
<tr><td>Email:</td><td><input type='text' name='mail'></td></tr>
<tr><td>Homepage:</td><td><input type='text' name='homepage' value='http://'></td></tr>
<tr><td>Text:</td><td><textarea name='text' rows=7 cols=25></textarea></td></tr>
<tr><td></td><td><input type='submit' value='Eintragen'> <input type='reset'></td></tr></table>
</form>
";
}
else
{
echo "<table width='415' align='center' border=0 cellpading=0 cellspacing=0><tr><td colspan='2' valign='top'>Dieses Gästebuch hat $anzahl2
Einträge</td></tr>
<tr><td colspan='2'> </td></tr><form method='post' action='index.php?v=$v&id=gaestebuch'>
<tr><td>Name:</td><td><input type='text' name='name'><input type='hidden' name='senden' value='1'></td></tr>
<tr><td>Email:</td><td><input type='text' name='mail'></td></tr>
<tr><td>Homepage:</td><td><input type='text' name='homepage' value='http://'></td></tr>
<tr><td>Text:</td><td><textarea name='text' rows=7 cols=25></textarea></td></tr>
<tr><td></td><td><input type='submit' value='Eintragen'> <input type='reset'></td></tr></table>
</form>
";
}
require("footer.php");
exit;
}
if(mysql_num_rows($res)==0)
{
echo "<tr><td valign='top'>Keine Gästebucheinträge vorhanden</td></tr>";
}
else
{
if($v=="")
{
echo "<tr><td valign='top'>Dieses Gästebuch hat $anzahl2 Einträge</td></tr>
<tr><td> </td></tr>
<tr><td><a href='index.php?id=gaestebuch&vorgang=eintragen'><u>Neuen Eintrag schreiben</u></a></td></tr>
<tr><td> </td></tr>";
}
else
{
echo "<tr><td valign='top'>Dieses Gästebuch hat $anzahl2 Einträge</td></tr>
<tr><td> </td></tr>
<tr><td><a href='index.php?v=$v&id=gaestebuch&vorgang=eintragen'><u>Neuen Eintrag schreiben</u></a></td></tr>
<tr><td> </td></tr>";
}
while($row=mysql_fetch_array($res))
{
echo"
<tr><td><b>";
if($row[mail]=="")
{
echo"$row[name]";
}
else
{
echo"<a href='mailto:$row[mail]'>$row[name]</a>";
}
$text=nl2br($row[text]);
echo" schrieb am ".date("d.m.Y", $row[date])." um ".date("H:i:s", $row[date]).":</b><br>";
if($row[homepage]=="" or $row[homepage]=="http://")
{
echo"";
}
else
{
echo" (<a href='$row[homepage]' target='_blank'>$row[homepage]</a>)";
}
echo"
</td></tr>
<tr><td>$text</td></tr>
<tr><td height='10'></td></tr>
";
} #ende while
}
$g=$i-5;
if($i=="0")
{
echo"";
}
else
{
if($v=="")
{
echo"<tr><td><a href='index.php?id=gaestebuch&i=".$g."'>Die vorigen 5 Einträge ansehen</a></td></tr>";
}
else
{
echo"<tr><td><a href='index.php?v=$v&id=gaestebuch&i=".$g."'>Die vorigen 5 Einträge ansehen</a></td></tr>";
}
}
$j=$i+5;
$aus=mysql_query("select * from gaestebuch limit ".$j.", 1");
$aus2=mysql_num_rows($aus);
if($anzahl<"5")
{
echo"";
}
elseif($anzahl=="5" && $aus2=="0")
{
echo"";
}
else
{
if($v=="")
{
echo"<tr><td><a href='index.php?id=gaestebuch&i=".$j."'>Die nächsten 5 Einträge ansehen</a></td></tr>";
}
else
{
echo"<tr><td><a href='index.php?v=$v&id=gaestebuch&i=".$j."'>Die nächsten 5 Einträge ansehen</a></td></tr>";
}
}
mysql_free_result($res);
echo"</table>";
require("footer.php");
?>
Antwort 1 von MixMax
bei solchen fragen reicht normalerweise die zeile (und vielleicht ein paar davor/danach) in denen der fehler auftritt...
nebenbei wäre ne angabe von einer Fehlermeldung gut.
du hast an einer stelle ein 3faches " was evtl schon der fehler sein kann.
nebenbei wäre ne angabe von einer Fehlermeldung gut.
du hast an einer stelle ein 3faches " was evtl schon der fehler sein kann.
Antwort 2 von sunnyboy
es gibt keine Fehlermeldung!
er zeigt mit nur folgendes an:
Dieses Gästebuch hat 1 Einträge
Neuen Eintrag schreiben
Die vorigen 5 Einträge ansehen
Die letzte Zeile dürfte nicht sein, und den Inhalt sollte er auch anzeigen??
er zeigt mit nur folgendes an:
Dieses Gästebuch hat 1 Einträge
Neuen Eintrag schreiben
Die vorigen 5 Einträge ansehen
Die letzte Zeile dürfte nicht sein, und den Inhalt sollte er auch anzeigen??
Antwort 3 von MixMax
mhm, scheinbar hast du einen fehler in der sql-query bei dem limit-befehl. Der eignet sich ohnehin nicht da er dann nicht unbedingt die letzten einträge wiedergibt. Mysql macht da folgendes, es selectiert die ersten 5 zeilen die es findet und sortiert nur diese nach datum (also evtl die ältesten 5 Zeilen nur)
Du hast bei Limit $i, 5 angegeben, limit 0 gibt immer schnell ein leeres ergebniss zurück, über eine angabe eines 2. zahlenwertes finde ich nichts in der mysql-docu.
lasse limit weg, dann kannst du auch mysql_num_rows bei der abfrage benutzen und mußt nicht 2 abfragen machen. (Die 2. würde man eh mit select count(id) from... machen)
Wenn du dann die ersten datensätze überspringen möchtest benutze den befehl mysql_data_seek($res, datensatznummer)
Du hast bei Limit $i, 5 angegeben, limit 0 gibt immer schnell ein leeres ergebniss zurück, über eine angabe eines 2. zahlenwertes finde ich nichts in der mysql-docu.
lasse limit weg, dann kannst du auch mysql_num_rows bei der abfrage benutzen und mußt nicht 2 abfragen machen. (Die 2. würde man eh mit select count(id) from... machen)
Wenn du dann die ersten datensätze überspringen möchtest benutze den befehl mysql_data_seek($res, datensatznummer)
Antwort 4 von sunnyboy
THANKS.
Habe es durch Umbennung der Variable i hinbekommen. Bitte frage mich nicht, warum i nicht geht. Das verstehe ich nicht. Habe sonst kein i auf meiner ganzen Seite???
Habe es durch Umbennung der Variable i hinbekommen. Bitte frage mich nicht, warum i nicht geht. Das verstehe ich nicht. Habe sonst kein i auf meiner ganzen Seite???

