Ein Gästebuch mit PHP & MySQL scripten

Schatti
Von der gb.php Seite
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
include("head.php");
?>
<html>
<head>

  <link rel="stylesheet" href="style.css">
 
  <title>gb.php</title>
</head>
<body style="background-image: url(grafiken/HG.jpg);">

<h1>G ä s t e b u c h</h1>

Wir freuen uns immer &uuml;ber einen netten G&auml;stebucheintrag.<br>
<br>
<br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table>
 <tr>
  <td>Dein Name:</td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td>Deine E-mailadrese:</td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td>URL zu deiner Homepage:</td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td>Dein Text:</td>
  <td><textarea name="text" style="height: 150px; width: 429px;"><?php echo $_POST['text']; ?></textarea>
 </td>
 </tr>
</table>
<input type="submit" value="Eintragen">
</form>
<?php
}
?>
<br>
<br>
<?php    

//Zugangsdaten includen
include ("config.inc.php");   

$anzeigen=5; //Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

//Auslesen der Einträge
$tabellenname="gb";
$sql="SELECT id, date, time, name, mail, hp, text FROM $tabellenname ORDER BY id DESC LIMIT ".$start.", ".$anzeigen;
$link = mysql_connect("$dbhost", "$dbuser", "$dbpasswd");
mysql_select_db("$db", $link);
$result = mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}     
         
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 = mysql_query($sql1, $link);
$max= mysql_result($result1,0,0); 

//Ausgeben der Einträge   
for($i=0;$i<count($ergebnis);$i++)
{   
$text=nl2br($ergebnis[$i]['text']);

echo ("
<br /><br /><table>
  <tr>
    <td>".$ergebnis[$i]['name']." (<a href="mailto:".$ergebnis[$i]['mail']."">Mail</a> | <a href="".$ergebnis[$i]['hp']."" target=_blank>WWW</a>) schrieb am ".$ergebnis[$i]['date']." um ".$ergebnis[$i]['time']." Uhr: </td>
  </tr>
  <tr>
    <td>".$text."</td>
  </tr></table>");
  }   
  
  //Ausgeben der Links vor und zurück     
  echo "<table border="0" width="100%"><tr><td align="left">";
  if($start>=$anzeigen){echo "<a href="".$_SERVER['PHP_SELF']."?limit=".$start."&back=1">Zurück</a>";}
echo "</td><td align="right">";
if($start+$anzeigen<$max-1){echo "<a href="".$SERVER['PHP_SELF']."?limit=".$start."&vor=1">Weiter</a>";}
echo "</tr></table>";     
  
?> 
</body>
</html>
Schatti
Hab ich gemacht, jetzt wird der obere Teil angezeigt wo man den eintrag erstellen kann und drunter steht das

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'Datenbankuser'@'localhost' (using password: YES) in /users/hofgoldensun/www/gb.php on line 109

Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /users/hofgoldensun/www/gb.php on line 110

Warning: mysql_query() expects parameter 2 to be resource, boolean given in /users/hofgoldensun/www/gb.php on line 111

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /users/hofgoldensun/www/gb.php on line 112

Warning: mysql_query() expects parameter 2 to be resource, boolean given in /users/hofgoldensun/www/gb.php on line 119

Warning: mysql_result() expects parameter 1 to be resource, null given in /users/hofgoldensun/www/gb.php on line 120
Schatti
Ja hab ich gemacht.

Ja hab ich
Stelo
Und includest du diese auch? Und ist das Passwort auch wirklich richtig? Irgendwo daran scheint es nämlich zu liegen.
Schatti
Da muss ich bei der rotenSchrift das in der Klammer erstezen? Was muss da rein?
Schatti
?
Stelo
Ähm .. ich sehe gerade, so wie es aussieht, hast du nicht deine Zugangsdaten in die config.inc.php eingetragen, wie schon gesagt wurde ... Ich glaube kaum, dass dein Benutzername "Datenbanknutzer" ist. ;-)
Schatti
Welche Angaben sind das? also woher weiss ich die?
Sind das die ganz normalen Zugangsdaten?
Stelo
Ich weiß nicht, wie das bei deinem Anbieter läuft, aber irgendwann musst du ja mal eine Datenbank erstellt/freigeschalten haben und da müsstest du ein Passwort angegeben haben. Und den Namen der Datenbank findest du sicher auch irgendwo im Userpanel von deinem Anbieter heraus. smile
Schatti
Anbieter ist bplaced.net
kleine-Araberstute
Huhu,

ist es irgendwie möglich, dass ich eine Mail gesendet bekomme, wenn es einen neuen Eintrag gibt? Wenn ja: wie müsste ich das einbauen? (Achtung: Ich habe keine Ahnung XD)

Eine Antwort wäre super <3
Denis
Zitat:
Original von kleine-Araberstute
Huhu,

ist es irgendwie möglich, dass ich eine Mail gesendet bekomme, wenn es einen neuen Eintrag gibt? Wenn ja: wie müsste ich das einbauen? (Achtung: Ich habe keine Ahnung XD)

Eine Antwort wäre super <3



Bei Punkt "2.2. Formular action" nach Zeile 41 aber VOR Zeile 42 einfügen:

"
mail ("DEINEEMAILADRESSE", "Neuer Eintrag im Gaestebuch (Betreff Feld der E-Mail)", "Es wurde ein neuer Eintrag im Gaestebuch verfasst blablblabla je nachdem was du in der Mail stehen haben willst Augenzwinkern (Text der E-Mail)"

);
"

Beispiel:


mail ("blablabla@blaaa.de", "Neuer Eintrag im Gaestebuch", "$_POST['absender'] hat einen neuen Eintrag im Gästebuch verfasst." );
kleine-Araberstute
Dankeschön! smile
Greti
Juhu, es geht! smile
Hatte die config-Datei falsch. großes Grinsen
Mal schauen ob ich jetzt noch hinbekomme, das die Einträge etwas "schöner" angezeigt werden..
Schatti
?
Greti
Sarah-OO du musst dich bei bplaced.net einloggen, bei "MySQL-Datenbanken" eine Datenbank erstellen. Und den Namen und das Passwort was du dort ausgewählt hast, fügst du dann bei

php:
1:
2:
3:
$dbuser "Datenbankuser"; (dein eigentlicher bplaced Name)
$dbpasswd "Datenbankpasswort"; (das Passwort was du beim erstellen der Datenbank angegeben hast)
$db "Datenbankname"; (den Namen den du der Datenbank gegeben hast)


ein.

So, müsstest eigentlich sein. Augenzwinkern
Da lag auch mein Fehler. :>
Schatti
Zitat:
Original von Greti
Sarah-OO du musst dich bei bplaced.net einloggen, bei "MySQL-Datenbanken" eine Datenbank erstellen. Und den Namen und das Passwort was du dort ausgewählt hast, fügst du dann bei

php:
1:
2:
3:
$dbuser "Datenbankuser"; (dein eigentlicher bplaced Name)
$dbpasswd "Datenbankpasswort"; (das Passwort was du beim erstellen der Datenbank angegeben hast)
$db "Datenbankname"; (den Namen den du der Datenbank gegeben hast)


ein.

So, müsstest eigentlich sein. Augenzwinkern
Da lag auch mein Fehler. :>


Hab ich geändert aber trotzdem geht es nicht Augen rollen
Greti
Dann hast du wohl noch mehr Fehler drin.
Zeig am Besten nochmal den ganzen Code. :>
katho
In PHP hab ich schon etwas an Grundwissen, aber in Verbindung mit Datenbanken haperts noch etwas Augenzwinkern

Und genau die 2 Fehlermeldungen die bei mir kommen sind von sql-funktionen...

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/katho/www/guestbook.php on line 98

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /users/katho/www/guestbook.php on line 106



Hier mein Code:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
<?php
// wenn das Formular abgeschickt wurde
if($_POST['sent']==1)
{
// Leerstellen entfernen
$_POST['name']=trim($_POST['name']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
// evtl. vorhandene HTML-Codes entfernen
$_POST['name']=strip_tags($_POST['name']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
// testen, ob alle Felder ausgefüllt sind
if(!$_POST['name']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}

// Wenn Fehler vorhanden, die Textausgabe formatieren und $_POST['sent'] zurücksetzen, damit das Formular erneut angezeigt wird

if($fehler)
{
$meldung="".$fehler."";
unset($_POST['sent']);
}
else
{
include ("db_guestbook.php");
$date date("d.m.Y");
//sql-String zusammenbauen
$tabellenname="guestbook";
$sql="INSERT INTO `guestbook` ( `id` , `date` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '".$_POST['name']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
//Verbindung zur Datenbank
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
mysql_query($sql$link);
$meldung="Deine Angaben wurden aufgenommen und werden im Gästebuch eingetragen. <a href="guestbook.php" target=_self>Weiter</a>";
}
echo $meldung;
}//Ende $_POST['sent']==1
if(!$_POST['sent'])
{
?>

<html>
<head>
<title>2010 &copy Katho.at.vu</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h2>Gästebuch</h2>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="sent" value="1">
<table>
 <tr>
  <td>Name:</td>
  <td><input type="text" name="name" value="<?php echo $_POST['name']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td>eMail:</td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td>Homepage:</td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td>Nachricht:</td>
  <td><textarea name="text" style="height: 150px; width: 429px;"><?php echo $_POST['text']; ?></textarea>
 </td>
 </tr>
</table>
<input type="submit" value="Eintragen">
</form>
<br>
<br>
<br>
<?php
}
?>

<?php    

include ("db_guestbook.php");   

$anzeigen=5//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

//Auslesen der Einträge
$tabellenname="guestbook";
$sql="SELECT id, date, name, mail, hp, text FROM $tabellenname ORDER BY id DESC LIMIT ".$start.", ".$anzeigen;
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
$result mysql_query($sql$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}     
         
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

//Ausgeben der Einträge   
for($i=0;$i<count($ergebnis);$i++)
{   
$text=nl2br($ergebnis[$i]['text']);

echo ("
<table>
  <tr>
    <td>".$ergebnis[$i]['name']." (<a href="mailto:".$ergebnis[$i]['mail']."">Mail</a> | <a href="".$ergebnis[$i]['hp']."" target=_blank>WWW</a>) schrieb am ".$ergebnis[$i]['date']."</td>
  </tr>
  <tr>
    <td>".$text."</td>
  </tr></table>");
  }   
  
  //Ausgeben der Links vor und zurück     
  echo "<table border="0" width="100%"><tr><td align="left">";
  if($start>=$anzeigen){echo "<a href="".$_SERVER['PHP_SELF']."?limit=".$start."&back=1">Zurück</a>";}
echo "</td><td align="right">";
if($start+$anzeigen<$max-1){echo "<a href="".$SERVER['PHP_SELF']."?limit=".$start."&vor=1">Weiter</a>";}
echo "</tr></table>";     
  
?> 
heart;
bei mit ist alles über und über mit fehlermeldungen großes Grinsen
daten sollte ich richtig eingegeben haben; außer bei plesk braucht man keinen localhost?!

naja; jedenfalls mein code (auch wenn ich ncihts verändert hab :o)
e. und nen screen/ wegen fehler meldungen (;

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
<?php
//$_POST['flag']==1, wenn das Formular abgeschickt wurde
if($_POST['flag']==1)
{
//Leerstellen entfernen
$_POST['absender']=trim($_POST['absender']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
//evtl. vorhandene HTML-Codes entfernen
$_POST['absender']=strip_tags($_POST['absender']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
//testen, ob alle Felder ausgefüllt sind
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
/*
Wenn Fehler vorhanden, die Textausgabe formatieren und $_POST['flag'] zurücksetzen, damit das Formular erneut angezeigt wird
*/
if($fehler)
{
$meldung="".$fehler."";
unset($_POST['flag']);
}
else //wenn alles ok ist, geht es weiter
{
//Zugangsdaten includen
include ("config.inc.php");
//Zeit und Datum ermitteln
$date date("d.m.Y");
$time date("H:i");
//sql-String zusammenbauen
$tabellenname="gb";
$sql="INSERT INTO `gb` ( `id` , `date` , `time` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '$time', '".$_POST['absender']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
//Verbindung zur Datenbank
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
mysql_query($sql$link);
$meldung="Ihre Angaben wurden aufgenommen und werden im Gästebuch eingetragen. <a href="gb.php" target=_self>Weiter</a>";
}
//Ausgeben der Meldung
echo $meldung;
}//Ende $_POST['flag']==1
if(!$_POST['flag'])
{
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>    
<title>GAESTEBUCH; &hearts</title>
<link rel="stylesheet" href="style.css"> 
</head>
<h1>Gästebuch</h1>
Ich freu mich immer über einen netten Gästebucheintrag.<br />
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table>
 <tr>
  <td>Dein Name:</td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td>Deine E-mailadrese:</td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td>URL zu deiner Homepage:</td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td>Dein Text:</td>
  <td><textarea name="text" style="height: 150px; width: 429px;"><?php echo $_POST['text']; ?></textarea>
 </td>
 </tr>
</table>
<input type="submit" value="Eintragen">
</form>
<?php
}
?>
<br><br><h1>bisherige eintraege; &hearts</h1>
<?php    

//Zugangsdaten includen
include ("config.inc.php");   

$anzeigen=5//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

//Auslesen der Einträge
$tabellenname="gb";
$sql="SELECT id, date, time, name, mail, hp, text FROM $tabellenname ORDER BY id DESC LIMIT ".$start.", ".$anzeigen;
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
$result mysql_query($sql$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}     
         
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

//Ausgeben der Einträge   
for($i=0;$i<count($ergebnis);$i++)
{   
$text=nl2br($ergebnis[$i]['text']);

echo ("
<br /><br /><table>
  <tr>
    <td>".$ergebnis[$i]['name']." (<a href="mailto:".$ergebnis[$i]['mail']."">Mail</a> | <a href="".$ergebnis[$i]['hp']."" target=_blank>WWW</a>) schrieb am ".$ergebnis[$i]['date']." um ".$ergebnis[$i]['time']." Uhr: </td>
  </tr>
  <tr>
    <td>".$text."</td>
  </tr></table>");
  }   
  
  //Ausgeben der Links vor und zurück     
  echo "<table border="0" width="100%"><tr><td align="left">";
  if($start>=$anzeigen){echo "<a href="".$_SERVER['PHP_SELF']."?limit=".$start."&back=1">Zurück</a>";}
echo "</td><td align="right">";
if($start+$anzeigen<$max-1){echo "<a href="".$SERVER['PHP_SELF']."?limit=".$start."&vor=1">Weiter</a>";}
echo "</tr></table>";     
  
?> 


wäre super wenn mir jemand helfen könnte! smile