[PHP & MySQL] Problem beim Gästebuch

Raindrops
huhu smile

ich hab mal, obwohl ich ein totaler PHP-Anfänger bin, mich an einem Gästebuch versucht. Formular klappte auch erst ganz okay, erst nachdem ich dann die datei config.inc.php erstellt hatte, erschienen unterm Formular zwei Fehlermeldungen. Da ich im Code jedoch keinen Fehler feststellen kann (wie gesagt, cih bin noch Anfänger im Bereich PHP) würde es mich freuen, wenn mir hier geholfen werden könnte smile

Angezeigt wird dort:
Parse error: syntax error, unexpected T_IF in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 69

hier wäre dann der Code, um den es sich handelt:

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:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>    
<title>Gästebuch</title>
<link rel="stylesheet" href="http://zsavenue.square7.ch/style.css"> 
</head>
<b>Gästebuch</b><br><br>
Hier im Gästebuch könnt ihr uns jederzeit euer Lob, eure Kritik oder aber auch Werbung für Turniere, etc. hinterlassen.<br><b>Achtung!</b> Bitte <u>keine</u> Werbung für Reitvereine oder andere vRh's, die auf Mitgliederfang aus sind posten!<br /><br>
<body>
<center><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table>
 <tr>
  <td><b>Dein Name</b></td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td><b>Deine E-Mail Adresse</b></td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td><b>Deine Homepage</b></td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td><b>Dein Text</b></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
?>

<?php
//$_POST['flag']==1
if($_POST['flag']==1)
{
$_POST['absender']=trim($_POST['absender']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
$_POST['absender']=strip_tags($_POST['absender']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
if($fehler)
{
$meldung="".$fehler."";
unset($_POST['flag']);
}
else 
{
include ("config.inc.php");
$date date("d.m.Y");
$time date("H:i");
$tabellenname="gb";
$sql="INSERT INTO `gb` ( `id` , `date` , `time` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '$time', '".$_POST['absender']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
$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>";
}
echo $meldung;
} $_POST['flag']==1
if(!$_POST['flag'])
?>
<br>
<br>
<?php    

include ("config.inc.php");   

$anzeigen=15; 
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

$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);
}     
         
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

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>");
  }   
    
  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>";     
  
?> 
</center>


Ich hoffe, ihr könnt mir helfen smile

Liebe Grüße
callous.
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php
...
$_POST['flag']==1;
if(!$_POST['flag']) {
?>
...
<?php
}
?>


Zu einer if-Anweisung gehören auch die Klammern Augenzwinkern
Und bei der Variable in Zeile 69 fehlt noch ein Semikolon.
Raindrops
danke für deine Hilfe, jetzt kommt zumindest keine Fehlermeldung mehr, dafür stehen jetzt aber Codeteile auf der Seite: klick

LG
Oli
Hi,

dann fehlt dir ein
php:
1:
<?php
vor dem Code...

LG
Raindrops
ah, danke großes Grinsen Jetz sind die Codeschnipsel weg smile

Neue Fehlermeldung: Fehler in Zeile 67 =/

Der mittlerweile aktualisierte 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:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>    
<title>Gästebuch</title>
<link rel="stylesheet" href="http://zsavenue.square7.ch/style.css"> 
</head>
<b>Gästebuch</b><br><br>
Hier im Gästebuch könnt ihr uns jederzeit euer Lob, eure Kritik oder aber auch Werbung für Turniere, etc. hinterlassen.<br><b>Achtung!</b> Bitte <u>keine</u> Werbung für Reitvereine oder andere vRh's, die auf Mitgliederfang aus sind posten!<br /><br>
<body>
<center><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table>
 <tr>
  <td><b>Dein Name</b></td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td><b>Deine E-Mail Adresse</b></td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td><b>Deine Homepage</b></td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td><b>Dein Text</b></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
?>

<?php
//$_POST['flag']==1
if($_POST['flag']==1)
{
$_POST['absender']=trim($_POST['absender']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
$_POST['absender']=strip_tags($_POST['absender']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
if($fehler)
{
$meldung="".$fehler."";
unset($_POST['flag']);
}
else 
{
include ("config.inc.php");
$date date("d.m.Y");
$time date("H:i");
$tabellenname="gb";
$sql="INSERT INTO `gb` ( `id` , `date` , `time` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '$time', '".$_POST['absender']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
$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>";
}
<?php
echo $meldung;
} $_POST['flag']==1;
if(!$_POST['flag']){
?>
<?php
}
?>
<br>
<br>
<?php    

include ("config.inc.php");   

$anzeigen=15; 
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

$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);
}     
         
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

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>");
  }   
    
  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>";     
  
?> 
</center>

Ich hoffe ihr könnt mir helfen, ich glaub langsam echt, dass ich ein hoffnungsloser Fall bin =/
Oli
Zitat:
Original von Kleines_Springpony
Ich hoffe ihr könnt mir helfen, ich glaub langsam echt, dass ich ein hoffnungsloser Fall bin =/
Nunja, jeder macht Fehler. Manche mehr, manche weniger. Und zum Teil ist es dann einfach Erfahrung, dass man diese schnell wieder findet und dann gar nicht mehr als Fehler empfindet.

php:
1:
2:
3:
4:
5:
6:
7:
<?php
[...]
$meldung="Ihre Angaben wurden aufgenommen und werden im Gästebuch eingetragen. <a href="gb.php" target=_self>Weiter</a>";
}
<?php
echo $meldung;
} $_POST['flag']==1;


Diesmal ein <?php zuviel, du bist an der Stelle doch schon in PHP-Code Augenzwinkern .


LG
Raindrops
aw, danke <3

nun geht das Formular wieder, darunter erscheinen aber immernoch 2 Fehlermeldungen: Es verstecken sich noch Fehler in den Zeilen 90 & 97 =(
Oli
Poste mal bitte die Fehlermeldungen. Da steht zum Großteil schon drin, was falsch ist.
Raindrops
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 90

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 97

hier wären die Fehlermeldungen
Oli
Da stimmt was mit deinem mysql_query() nicht, daher ist das Ergebnis FALSE - und die weiteren Funktionen schlagen fehl, weil diese ja ein MySQL-Ergebnis erwarten. Füg mal unter dem mysql_query() folgende Zeile ein
php:
1:
echo mysql_error();
und poste das Ergebnis.

Edit: Damit meine ich natürlich den mysql_query() vor Zeile 90 Augenzwinkern
Raindrops
jetzt kommt diese Meldung:

No database selected
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 91

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 98
Oli
Dann ist auch schon mysql_select_db() dafür schiefgegangen. Prüf mal nach, ob der Wert, der in $db steht, auch stimmt.
Raindrops
die Daten in der DAtenbank stimmen eig. denn die wird ja bereits für die Pferdesteckbriefe verwendet & die funktionieren ja...
Oli
Änder mal jeweils
php:
1:
mysql_select_db("$db"$link);
in
php:
1:
mysql_select_db("$db"$link) or print("<br /><b>Datenbank ausw&auuml;hlen fehlgeschlagen:</b> ".mysql_error());


Dann sehen wir mal genauer, was da schief geht, falls das (so wie es scheint) der Fall ist.
Raindrops
nun kommt diese Meldung raus:

Datenbank ausw&auuml;hlen fehlgeschlagen: Access denied for user 'zsavenue'@'localhost' to database 'gb'No database selected
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 91

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 98
Oli
Deine Datenbank heißt garantiert nicht "gb", sondern wohl eher "zsavenue" und gb ist der Tabellenname - oder die Datenbank heißt "zsavenue_gb", falls es tatsächlich eine separate Datenbank ist.

-> Ich sags nochmal: Der Wert in $db ist falsch, überprüf den mal...
Raindrops
oh, vielen Dank, es war zsavenue smile

nun wird ncoh dies angezeigt:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/zsavenue/www/Zuchtstation/Gaestebuch/gb.php on line 91

LG
Oli
Da muss der Fehler im SQL liegen - lass dir evtl. mal zum Test $sql mit echo ausgeben, damit du siehst, ob auch wirklich das drin steht, was darin stehen sollte.

Falls du den Fehler nicht findest schau ich mir das später (bzw. morgen) nochmal an, hab nur jetzt so gut wie keine Zeit und hab den Fehler auch nicht auf Anhieb gesehen.
Raindrops
edit. hab grad gesehen, dass die abgeschickten Einträge nun bei PHPMyAdmin angezeigt werden. Nur wie bekomm cih das nun hin, dass sie auch im Gästebuch angezeigt werden? Hängt das noch mit dem Fehler zusammen? Oder ist der nun sozusagen nur noch ein "schönheitsfehler"?
Oli
Zitat:
Original von Kleines_Springpony
Hängt das noch mit dem Fehler zusammen? Oder ist der nun sozusagen nur noch ein "schönheitsfehler"?
Ja, das hängt sicherlich mit dem Fehler zusammen. Der Code zum Eintrag hinzufügen funktioniert schonmal, die Ausgabe eben (noch) nicht.


So etwas wie "Schönheitsfehler" gibt es eigentlich nicht, sobald ein Fehler auftritt, ist etwas falsch. Es gibt Fehler, die nach bestimmten Regeln toleriert werden und daher keine Fehlermeldung sondern nur einen "Hinweis" ergeben - und das auch nur, wenn man diese z.B. mit error_reporting(E_ALL) "aktiviert".

Ein Beispiel für solche Fehler ist:
php:
1:
2:
3:
...
echo $row[name]; //falsch
echo $row['name']; //richtig
Warum? Weil name ohne Anführungszeichen kein String, sondern eine Konstante ist. Ist diese dann auch noch definiert, entstehen unerwartete Ergebnisse:
php:
1:
2:
3:
define('name','irgendwas');
echo $row[name]; //ergibt jetzt $row['irgendwas'], weil name definiert ist
echo $row['name']; //ist das eigentlich gewollte



LG