Gästebuchhilfe

Kategorien: PHP & MySQL
19 Antworten
FrAgDeViL
FrAgDeViL am Donnerstag, 26. Mai 2005 um 16:53
also ich hab mir nen gästebuch gecodet, doch wenn ich die einträge abfragen will kommt immer der fehler: [b] Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/fragdevil/gbook/guestbook.php on line 48 [/b] hier der code der guestbook.php <html> <head> <title>Gästebuch</title> </head> <body> <div align="center"> <form method="post" action="add.php"> <b>Eintragen:</b> <table border="0"> <tr align="center"> <td width="150" height="20">Name</td> <td width="150" height="20"><input type="text" name="name"></input></td> </tr> <tr align="center"> <td width="150" height="20">E-Mail</td> <td width="150" height="20"><input type="text" name="email"></input></td> </tr> <tr align="center"> <td width="150" height="20">Homepage</td> <td width="150" height="20"><input type="text" name="homepage"></input></td> </tr> <tr align="center"> <td width="150" height="20">ICQ</td> <td width="150" height="20"><input type="text" name="icq"></input></td> </tr> <tr align="center"> <td width="150" height="20">Beitrag</td> <td width="150" height="20"><textarea name="beitrag" rows="8" cols="25"></textarea></td> </tr> <tr align="center"> <td width="150" height="20"></td> <td width="150" height="20"></td> </tr> <tr align="center"> <td width="150" height="20">Beitrag</td> <td width="150" height="20"><input type="submit" value="Go for it!"></input></td> </tr> </table> </form> <? $db = mysql_connect("localhost" , "fragdevil" , "hemakafabi"); mysql_select_db("guestbook"); $anfr = "SELECT * FROM `guestbook`"; $ergebnis = mysql_query($anfr); $anz = mysql_num_rows($ergebnis); for($a=$anz-1;$a>-1;$a--) { mysql_data_seek($ergebnis, $a); $row = mysql_fetch_row($result); echo &#039; <table width="400" border="0"> <tr> <td width = "250" align="left"> <a href="mailto: $row[1]">row[0]</a> echo "ICQ: $row[3]"; </td> <td width = "150" align="right"> am $row[5] eingetragen. </td> </tr> <tr> <td width = "400"> echo "$row[4]"; </td> </tr> <tr> <td width = "400" align="right"> echo "$row[2]"; </tr> </table>&#039;; } mysql_close($db); ?> </div> </body> </html> weiß jemand wat dat sein könnte

Kommentare

phadiax
phadiax am Donnerstag, 26. Mai 2005 um 18:57

Ich möchte behaupten, dass der table 'guestbook' nicht existiert.
Wie der Fehler sagt, du greifst per mysql_num_rows auf eine nicht existente Datenbankquelle zu. Schau mal, ob du dich in der Datenbank beim table 'guestbook' verschrieben hast, oder so. Sind meist solche kleinen Fehler :)

** edit:

Wäre auch ganz geschickt, wenn du dein PW vorher aus dem Code entfernst ;)

reaLfoX
reaLfoX am Donnerstag, 26. Mai 2005 um 20:22

ich will auch ein gb !!

hab leider kp von php :(

unkie
unkie am Freitag, 27. Mai 2005 um 08:57

kann auch sein, das er die anfrage falsch gemacht hat ...
aber mal ne frage: warum machst du es so umständlich? geht doch viel leichter!
ich suche mal eins meiner gästebücher und gebe es dir dann!

reaLfoX
reaLfoX am Freitag, 27. Mai 2005 um 09:16

kannste mir dann auch gleich geben :)

FrAgDeViL
FrAgDeViL am Freitag, 27. Mai 2005 um 14:13

dat wär jut. dat mit dem namen hab ich geprüft, der stimmt

najut dann warte ich ma bis cop dit schickt

unkie
unkie am Freitag, 27. Mai 2005 um 14:25

mhmmm so wie es atm aussieht geht es nicht mit PHP5 :-/
ich kann nichts mehr eintragen O_O
kA why :-/ mal sehen kann noch ne bissel dauern ...

@devil:
schau dir mal zeile 46 an!
$anfr = "SELECT * FROM `guestbook`";
steht da! mach mal daraus
$anfr = "SELECT * FROM guestbook";
kA ob es dann geht :-/ aber ich denke mal schon

FrAgDeViL
FrAgDeViL am Freitag, 27. Mai 2005 um 15:06

haut immernoch nicht hin. ich weiß auch nich mehr wat dat noch sein könnte. hab schon mehrere varianten ausprobiert, doch irgendwie funzt dat allet nich

blackfeet
blackfeet am Freitag, 27. Mai 2005 um 17:04

Überprüf mal ein paar rückgabewerte:

<?
$db = mysql_connect("localhost" , "fragdevil" , "hemakafabi");
if(!$db)
echo "Konnte keine Verbindung herstellen!";
if(!mysql_select_db("guestbook"))
echo "Konnte die Datenbank guestbook nicht auswählen";
$anfr = "SELECT * FROM guestbook";
$ergebnis = mysql_query($anfr,$db);
if(!$ergebnis)
echo "Konnte die Daten nicht auswählen!";
$anz = mysql_num_rows($ergebnis);


Probiers mal so, da sind ein paar Rückgabewerte überprüft und bei dem query hab ich noch ein $db als zweiten Parameter übergeben.

FrAgDeViL
FrAgDeViL am Freitag, 27. Mai 2005 um 20:34

danke für eure hilfe. jetzt hab ichs hinbekommen.

unkie
unkie am Freitag, 27. Mai 2005 um 20:54

na vll kannste dann das ganze GB freigeben ;)
dann muss ich meins nicht überarbeiten!

FrAgDeViL
FrAgDeViL am Freitag, 27. Mai 2005 um 21:10

sorry jungs, aber ich hab noch probs mit der ausgabe. es werden die einträge nicht in die db geschrieben.

hier ma die add.php:
<?
$name = $_POST[&#039;name&#039;];
$email = $_POST[&#039;email&#039;];
$homepage = $_POST[&#039;homepage&#039;];
$icq = $_POST[&#039;icq&#039;];
$beitrag = $_POST[&#039;beitrag&#039;];
$datum = $_POST[&#039;date&#039;];

$verbindung = mysql_connect("localhost" , "user" , "passwort");
mysql_select_db("datenbank");

if ($verbindung)
{
$sql = "INSERT INTO &#039;guestbook&#039; ( &#039;id&#039;, &#039;name&#039; , &#039;email&#039;, &#039;homepage&#039;, &#039;icq&#039;, &#039;beitrag&#039;, &#039;datum&#039;)"
."VALUES ( &#039;$id&#039; , &#039;$name&#039; , &#039;$email&#039; , &#039;$homepage&#039; , &#039;$icq&#039; , &#039;$beitrag&#039; , &#039;$datum&#039;);"
."";

mysql_query($sql, $verbindung);
echo &#039;Erfolgreich eingetragen.
<p><a href="guestbook.php">zum Gästebuch</a></p>&#039;;

mysql_close($verbindung);
}

else
{
echo "Verbindung konnte nicht hergestellt werden.";
echo "Fehler: .mysql_error() .";
}

?>

is daran wat falsch?

unkie
unkie am Freitag, 27. Mai 2005 um 21:20

$sql = "INSERT INTO &#039;guestbook&#039; (&#039;name&#039; , &#039;email&#039;, &#039;homepage&#039;, &#039;icq&#039;, &#039;beitrag&#039;, &#039;datum&#039;) VALUES (&#039;$name&#039; , &#039;$email&#039; , &#039;$homepage&#039; , &#039;$icq&#039; , &#039;$beitrag&#039; , &#039;$datum&#039;)";

teste das mal, aber kA ob es geht sonst musste wieder [b]"[/b] davor und hinter machen ... söllte aber eigentlich gehen.

das lag ich denke mal, daran das du versucht ID zu übergeben! das ist aber nicht festgelegt, mache inner mysql tabelle das feld auf auto_incremed oder wie es heißt dann geht es mit jedem post eines höher!

aber wie gesagt kA, habe es jetzt nicht genau angesehen ...

FrAgDeViL
FrAgDeViL am Freitag, 27. Mai 2005 um 21:33

ich hab dat gästebuch mit zwei dateien gemacht. smilies sind noch nicht drin, werd ich aber noch einfügen.

also hier schonmal die add.php:

<?
$name = $_POST[&#039;name&#039;];
$email = $_POST[&#039;email&#039;];
$homepage = $_POST[&#039;homepage&#039;];
$icq = $_POST[&#039;icq&#039;];
$beitrag = $_POST[&#039;beitrag&#039;];
$datum = $_POST[&#039;date&#039;];

$verbindung = mysql_connect("localhost" , "username" , "passwort");
mysql_select_db("datenbank");

if ($verbindung)
{
$sql = mysql_query("INSERT INTO guestbook
(name, email, homepage, icq, beitrag, datum)
VALUES ( &#039;$name&#039;, &#039;$email&#039;, &#039;$homepage&#039;, &#039;$icq&#039;, &#039;$beitrag&#039;, &#039;$datum&#039;)");

mysql_query($sql, $verbindung);
echo &#039;Erfolgreich eingetragen.
<p><a href="guestbook.php">zum Gästebuch</a></p>&#039;;

mysql_close($verbindung);
}

else
{
echo "Verbindung konnte nicht hergestellt werden.";
echo "Fehler: .mysql_error() .";
}

?>


hier is dann noch die guestbook.php:


<html>
<head>
<title>Gästebuch</title>
</head>

<body>
<div align="center">
<form method="post" action="add.php">
<b>Eintragen:</b>
<table border="0">
<tr align="center">
<td width="200" height="20">Name</td>
<td width="200" height="20"><input type="text" name="name"></input></td>
</tr>
<tr align="center">
<td width="200" height="20">E-Mail</td>
<td width="200" height="20"><input type="text" name="email"></input></td>
</tr>
<tr align="center">
<td width="200" height="20">Homepage</td>
<td width="200" height="20"><input type="text" name="homepage"></input></td>
</tr>
<tr align="center">
<td width="200" height="20">ICQ</td>
<td width="200" height="20"><input type="text" name="icq"></input></td>
</tr>
<tr align="center">
<td width="200" height="20">Beitrag</td>
<td width="200" height="20"><textarea name="beitrag" rows="8" cols="25"></textarea></td>
</tr>
<tr align="center">
<td width="200" height="20"></td>
<td width="200" height="20"></td>
</tr>
<tr align="center">
<td width="150" height="20">Beitrag</td>
<td width="150" height="20"><input type="submit" value="Go for it!"></input></td>
<td><input type="hidden" name="date" value="&#039;.date(d).&#039;.&#039;.date(m).&#039;.&#039;.date(Y).&#039;"></td>
</tr>
</table>
</form>

<?php

$host = "localhost";
$user = "username";
$pass = "passwort";
$db = "datenbank";

$verbindung = mysql_connect($host, $user, $pass);

if(!$verbindung)
echo "Konnte keine Verbindung herstellen!";
if(!mysql_select_db($db))
echo "<p>Konnte die Datenbank guestbook nicht auswählen</p>";

$anfr = "SELECT * FROM guestbook ORDER BY id DESC";

$ergebnis = mysql_query($anfr, $verbindung);
if(!$ergebnis)
echo "Konnte die Daten nicht auswählen!";
$anz = mysql_num_rows($ergebnis);
echo "$anz Einträge vorhanden!";


while ($row = mysql_fetch_row($ergebnis))
{
echo"
<table width=&#039;400&#039; border=&#039;0&#039;>
<tr>
<td width =&#039;250&#039; align=&#039;left&#039;>
<a href=&#039;mailto: $row[2]&#039;>$row[1]</a>
</td>
<td width =&#039;150&#039; align=&#039;right&#039;><br>
am $row[6] eingetragen
</td>
<tr>
</tr>
<td width = &#039;200&#039;>
ICQ: $row[4]
</td>
<td width=&#039;200&#039; align=&#039;center&#039;>
<a href=&#039;$row[3]&#039;>$row[3]</a>
</tr>
<tr>
<td width = &#039;400&#039;>
<br>$row[5]<br>
</td>
</tr>


<hr></table>";

}
mysql_close($verbindung);
?>

</div>
</body>
</html>


muss man nur noch die daten anpassen.
wenn ich die smilies noch hinzugefügt hab werde ich dat dann hier auch noch posten.
hoffe dat ich dat in den nächsten tagen fertig machen kann.

unkie
unkie am Freitag, 27. Mai 2005 um 22:51

jo habe dir wegen BB-Codes was geschrieben!
vll kannste auf diese weiße auch die smilies umsetzten!

vll kannste auch noch ne nettes tut rausmachen ;)

FrAgDeViL
FrAgDeViL am Samstag, 28. Mai 2005 um 16:57

ich hab mir ma dein news-tut mit bbcodes angeschaut und bei mir versucht umzusetzen, doch es klappt nur mit den text effekten.

die smilies funzen nich. warum nich?

hier ma der teil aus meiner umwandlung


$anfr = "SELECT * FROM guestbook ORDER BY id DESC";
$ergebnis = mysql_query($anfr, $verbindung);
if(!$ergebnis)
echo "Konnte die Daten nicht auswählen!";
$anz = mysql_num_rows($ergebnis);
echo "$anz Einträge vorhanden!";


while ($row = mysql_fetch_row($ergebnis))
{

$text = $row[&#039;beitrag&#039;];
$text = str_replace(":)", "<img src="smilies/smile.png">", $text);
$text = str_replace(":(", "<img src="smilies/boese.png">", $text);
$text = str_replace(":P", "<img src="smilies/zunge.png">", $text);
$text = str_replace(";)", "<img src="smilies/zwinker.png">", $text);
$text = str_replace(":D", "<img src="smilies/lach.png">", $text);

$text = str_replace("[b]", "<b>", $text);
$text = str_replace("[/b]", "</b>", $text);
$text = str_replace("[k]", "<i>", $text);
$text = str_replace("[/k]", "</i>", $text);
$text = str_replace("", "<u>", $text);
$text = str_replace("", "</u>", $text);
$text = str_replace("[s]", "<strike>", $text);
$text = str_replace("[/s]", "</strike>", $text);

unkie
unkie am Samstag, 28. Mai 2005 um 22:42

mach es am besten in einer funktion wie ich ist dann schonma besser!
dann kannste auch besser neue bbcodes einfügen!
mhmmm mache vll mal

$text = str_replace(";)", "<img src="smilies/zwinker.png">");


weil er macht so wie du es geschrieben hast hlat das bild dahinter nochmal dann den smilie! (glaube ich ...)

achja und nicht vergessen die "" zusetzten! hat der nicht gemekert???

€dit:

sonst kannste auch mal folgenes testen:

function LoadSmilies() { // ------------------------ LOAD SMILIES ---------------------------------
$smilies[0]=array(&#039;file&#039;=>&#039;angry.gif&#039;, &#039;symbol&#039;=>&#039;>:(&#039;);
$smilies[1]=array(&#039;file&#039;=>&#039;biggrin.gif&#039;, &#039;symbol&#039;=>&#039;:D&#039;);
$smilies[2]=array(&#039;file&#039;=>&#039;cheesy.gif&#039;, &#039;symbol&#039;=>&#039;:lol:&#039;);
$smilies[3]=array(&#039;file&#039;=>&#039;confused.gif&#039;, &#039;symbol&#039;=>&#039;%-)&#039;);
$smilies[4]=array(&#039;file&#039;=>&#039;cool.gif&#039;, &#039;symbol&#039;=>&#039;8-)&#039;);
$smilies[5]=array(&#039;file&#039;=>&#039;dead.gif&#039;, &#039;symbol&#039;=>&#039;X-(&#039;);
$smilies[6]=array(&#039;file&#039;=>&#039;eek.gif&#039;, &#039;symbol&#039;=>&#039;:-O&#039;);
$smilies[7]=array(&#039;file&#039;=>&#039;glubsch.gif&#039;, &#039;symbol&#039;=>&#039;:glubsch:&#039;);
$smilies[8]=array(&#039;file&#039;=>&#039;king.gif&#039;, &#039;symbol&#039;=>&#039;:king:&#039;);
$smilies[9]=array(&#039;file&#039;=>&#039;sad.gif&#039;, &#039;symbol&#039;=>&#039;:-(&#039;);
$smilies[10]=array(&#039;file&#039;=>&#039;sleep.gif&#039;, &#039;symbol&#039;=>&#039;:sleep:&#039;);
$smilies[11]=array(&#039;file&#039;=>&#039;smile.gif&#039;, &#039;symbol&#039;=>&#039;:-)&#039;);
$smilies[12]=array(&#039;file&#039;=>&#039;tongue.gif&#039;, &#039;symbol&#039;=>&#039;:-P&#039;);
$smilies[13]=array(&#039;file&#039;=>&#039;rolleyes.gif&#039;, &#039;symbol&#039;=>&#039;:rolleyes:&#039;);
$smilies[14]=array(&#039;file&#039;=>&#039;wink.gif&#039;, &#039;symbol&#039;=>&#039;;-)&#039;);
$smilies[15]=array(&#039;file&#039;=>&#039;twisted.gif&#039;, &#039;symbol&#039;=>&#039;:evil:&#039;);
$smilies[16]=array(&#039;file&#039;=>&#039;mg.gif&#039;, &#039;symbol&#039;=>&#039;:mg:&#039;);
return $smilies;
}
##############################################
$a=LoadSmilies();
for($i=0;$i<count($a);$i++) {
$text=str_replace(htmlentities($a[$i][symbol]),&#039;<img src="smilies/&#039;.$a[$i][&#039;file&#039;].&#039;" align=middle border=0>&#039;,$text);
}
$text=text_replace($text);


aber kA ob es geht, habe ich ausm HTN.Lan rausgesucht ;)

FrAgDeViL
FrAgDeViL am Sonntag, 29. Mai 2005 um 18:22

es hat auch mit der funktion nicht geklappt. anscheinend erkennt er den text, welcher aus der db ausgelesen wird nicht. wahrscheinlich wird der nicht richtig weitergegeben und dann vergleicht er nichts mit den codes und dann kann er auch nichts ändern

unkie
unkie am Sonntag, 29. Mai 2005 um 19:19

mhmmm sry da habe ich jetzt kA :-/
musst mal auf nene anderen warten der sich damit auskennt!

FrAgDeViL
FrAgDeViL am Dienstag, 31. Mai 2005 um 10:15

ich habs geschafft. es funzt jetzt auch mit bbcodes und smilies


ich kann euch ja alle dateien hier quoten.

hier die [b]guestbook.php[/b]

<html>
<head>
<title>Gästebuch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style/style.css">
</head>

<body>
<div align="center">
<form method="post" action="add.php">
<b>Eintragen:</b>
<table border="0">
<tr align="center">
<td width="200" height="20">Name</td>
<td width="200" height="20"><input name="name" type="text" size="30">
</input></td>
</tr>
<tr align="center">
<td width="200" height="20">E-Mail</td>
<td width="200" height="20"><input name="email" type="text" size="30">
</input></td>
</tr>
<tr align="center">
<td width="200" height="20">Homepage</font></td>
<td width="200" height="20"><input name="homepage" type="text" size="30"></td>
</tr>
<tr align="center">
<td width="200" height="20">ICQ</td>
<td width="200" height="20"><input name="icq" type="text" size="30">
</input></td>
</tr>
<tr align="center">
<td width="200" height="20">Beitrag</td>
<td width="200" height="20"><textarea name="beitrag" cols="26" rows="8"></textarea></td>
</tr>
<tr align="center">
<td width="200" height="20">Smilies</td>
<td width="200" height="20"><a href="smilies.htm" target="_blank">hier zu den Smilies</a>
</tr>
<tr align="center">
<td width="200" height="20"></td>
<td width="200" height="20"></td>
</tr>
<tr align="center">
<td width="150" height="20">&nbsp;</td>
<td width="150" height="20"><input type="submit" value="Go for it!"></input>
<input name="reset" type="reset" value="Löschen"></input></td>
</tr>
</table>
</form>

<?php

$host = "localhost";
$user = "fragdevil";
$pass = "hemakafabi";
$db = "fragdevil";

$verbindung = mysql_connect($host, $user, $pass);

if(!$verbindung){
echo "Konnte keine Verbindung herstellen!";
}

if(!mysql_select_db($db)){
echo "<p>Konnte die Datenbank guestbook nicht auswählen</p>";
}

$anfr = "SELECT * FROM guestbook ORDER BY id DESC";
$ergebnis = mysql_query($anfr, $verbindung);
if(!$ergebnis) {
echo "Konnte die Daten nicht auswählen!";}


$anz = mysql_num_rows($ergebnis);
echo "<b>$anz</b> Einträge vorhanden.";

echo "<br><br>";



$sql = "SELECT * FROM guestbook ORDER BY id DESC";
$result = mysql_query($sql);
while($zeile = mysql_fetch_array($result)){
$text = $zeile[&#039;beitrag&#039;];
$text = str_replace(":)", "<img src=&#039;smilies/smile.gif&#039;>", $text);
$text = str_replace(":(", "<img src=&#039;smilies/boese.gif&#039;>", $text);
$text = str_replace(":P", "<img src=&#039;smilies/zunge.gif&#039;>", $text);
$text = str_replace(";)", "<img src=&#039;smilies/zwinkern.gif&#039;>", $text);
$text = str_replace(":D", "<img src=&#039;smilies/lol.gif&#039;>", $text);
$text = str_replace("?(", "<img src=&#039;smilies/ka.gif&#039;>", $text);
$text = str_replace(":/", "<img src=&#039;smilies/hae.gif&#039;>", $text);

$text = str_replace("[b]", "<b>", $text);
$text = str_replace("[/b]", "</b>", $text);
$text = str_replace("[k]", "<i>", $text);
$text = str_replace("[/k]", "</i>", $text);
$text = str_replace("", "<u>", $text);
$text = str_replace("", "</u>", $text);
$text = str_replace("[s]", "<strike>", $text);
$text = str_replace("[/s]", "</strike>", $text);


echo "
<table border=0 width=400>
<tr>
<td>
<table border=0 width=400 bgcolor=666666>
<tr>
<td width=240><font color=ff9933># </font>". $zeile[0] . "&nbsp;<a href=mailto: " .$zeile[2]. ">". $zeile[1] . "</a></td>
<td width=160 align=right>schrieb am " .$zeile[6]. "</td>
</tr>
</table>
<table border=0 width=400 bgcolor=888888>
<tr>
<td width=200>
<a href=&#039;www.icq.com/whitepages/about_me.php?uin=". $zeile[4]."&#039;><img src=icq.gif width=18 height=15></a>
<a href=&#039;". $zeile[3] ."&#039; target=&#039;_blank&#039;><img src=hp.gif width=15 height=15></a>
</td>
</tr>
</table>
<table border=0 width=400 bgcolor=aaaaaa>
<tr>
<td width=400><br>" . $text. "<br></td>
</tr>
</table>
</td>
</tr>
</table>";

}
mysql_close($verbindung);
?>

</div>
</body>
</html>


dann die [b]add.php[/b]

<?
$name = $_POST[&#039;name&#039;];
$email = $_POST[&#039;email&#039;];
$homepage = $_POST[&#039;homepage&#039;];
$icq = $_POST[&#039;icq&#039;];
$beitrag = $_POST[&#039;beitrag&#039;];
$datum = date(&#039;j.w.Y&#039;);

if(trim($name) != "" && trim($beitrag) != "" )
{
$verbindung = mysql_connect("localhost" , "fragdevil" , "hemakafabi");
mysql_select_db("fragdevil");


$sql = mysql_query("INSERT INTO guestbook
(name, email, homepage, icq, beitrag, datum)
VALUES ( &#039;$name&#039;, &#039;$email&#039;, &#039;$homepage&#039;, &#039;$icq&#039;, &#039;$beitrag&#039;, &#039;$datum&#039;)");

mysql_query($sql, $verbindung);
echo &#039;Erfolgreich eingetragen.
<p><a href="guestbook.php">zum Gästebuch</a></p>&#039;;

mysql_close($verbindung);

}

else

{
$fehlt = "";
if ($name == "")
{ $fehlt = $fehlt."<li>Der Name?"; }

if ($beitrag == "")
{ $fehlt = $fehlt."<li>Du hast den Text vergessen!!"; }

echo "<table border=0 width=400>
<tr>
<td width=400>Es fehlt:<br><br></td>
<td valign=top width=400>
$fehlt<br>
<a href=&#039;guestbook.php&#039;>zum Gästebuch</td>
</tr>
</table>";
}


?>