Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Problem beim Gästebuch (https://www.gegen-bilderklau.net/thread.php?threadid=173638)


Geschrieben von Raindrops am 20.07.2010 um 23:50:

  Problem beim Gästebuch

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



Geschrieben von callous. am 21.07.2010 um 09:28:

 

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.



Geschrieben von Raindrops am 21.07.2010 um 12:36:

 

danke für deine Hilfe, jetzt kommt zumindest keine Fehlermeldung mehr, dafür stehen jetzt aber Codeteile auf der Seite: klick

LG



Geschrieben von Oli am 21.07.2010 um 12:45:

 

Hi,

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

LG



Geschrieben von Raindrops am 21.07.2010 um 19:55:

 

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 =/



Geschrieben von Oli am 21.07.2010 um 20:01:

 

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



Geschrieben von Raindrops am 21.07.2010 um 20:43:

 

aw, danke <3

nun geht das Formular wieder, darunter erscheinen aber immernoch 2 Fehlermeldungen: Es verstecken sich noch Fehler in den Zeilen 90 & 97 =(



Geschrieben von Oli am 21.07.2010 um 21:52:

 

Poste mal bitte die Fehlermeldungen. Da steht zum Großteil schon drin, was falsch ist.



Geschrieben von Raindrops am 21.07.2010 um 21:57:

 

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



Geschrieben von Oli am 21.07.2010 um 22:00:

 

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



Geschrieben von Raindrops am 21.07.2010 um 22:37:

 

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



Geschrieben von Oli am 21.07.2010 um 22:47:

 

Dann ist auch schon mysql_select_db() dafür schiefgegangen. Prüf mal nach, ob der Wert, der in $db steht, auch stimmt.



Geschrieben von Raindrops am 21.07.2010 um 23:21:

 

die Daten in der DAtenbank stimmen eig. denn die wird ja bereits für die Pferdesteckbriefe verwendet & die funktionieren ja...



Geschrieben von Oli am 22.07.2010 um 10:33:

 

Ä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.



Geschrieben von Raindrops am 22.07.2010 um 13:13:

 

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



Geschrieben von Oli am 22.07.2010 um 22:07:

 

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...



Geschrieben von Raindrops am 22.07.2010 um 22:26:

 

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



Geschrieben von Oli am 23.07.2010 um 12:54:

 

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.



Geschrieben von Raindrops am 23.07.2010 um 15:30:

 

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"?



Geschrieben von Oli am 24.07.2010 um 15:38:

 

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


Forensoftware: Burning Board, entwickelt von WoltLab GmbH