[Tutorial] Gästebuch funktioniert nicht wies soll
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgelesen echo
befehl
dank
date
datenbank
datum
eintragen
email
fehler
host
http
inhalt
not
null
ordern
spalten
speichern
tabelle
text
zeile
-
Hallo,
ich habe dieses Tutorial http://www.lima-city.de/tutorials?m=show&id=1080 von lima "anfertigen" wollen.
Ich denke den quelltext brauch ich hier nicht zu posten, sieht man ja im tutorial
die dateien die ich verwendet habe sind:
http://www.sebbelmeyer.de/book.php
http://www.sebbelmeyer.de/book.html
http://www.sebbelmeyer.de/save.php
http://www.sebbelmeyer.de/config.php
Wie ihr seht kommen bei save.php und book. php fehler.
Bei book in zeile 13 die wie folgt lautet.
$data = mysql_fetch_assoc($result);
und bei save in zeile 10:
mysql_fetch_assoc($result);
Liegt es vielleicht daran, dass ich die sql tabelle falsch erstellt habe? Ich muss dazu sagen, dass ich die variablen anders gew?hlt habe und ich noch die informationen "website" und "email" hinzuf?gen wollte bzw es getan habe.
Plz help me!
Dankesch?n schonmal -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
in save.php
geh?rt kein mysql_fetch-assoc($result).. das kanns du dort l?schen
bei book.php
in die zeile davor:
$result = mysql_query($sql) od die(mysql_error() . '<br />' . $sql); // $sql dur die richtige variable ers?tzen.
$data = mysql_fetch_assoc($result);
dann poste mal die fehlermeldung die dann erscheint, die ist besser.
dann kann man dir schneller helfen
und poste mal den aufbau deiner tabelle -
Ich bin halt hingegangen in der mysql oberfl?che, habe auf neue tabelle geklickt mit 7 spalten, habe dann halt die namen reingeschrieben ohne etwas anderes zu ?ndern.
http://sebbel.xardas.lima-city.de/sql.jpg
jetzt hab ich in der book.php folgendes srinstehen:
<?
include ("config.php");
mysql_connect("$host","$user","$passwort");
mysql_select_db("$datenbank"); //mit diesem Befehl waehlt ihr die Datenbank aus wo die Daten gespeichert werden
$sql = "SELECT * FROM gbook ORDER BY ID DESC;";
$result = mysql_query($sql) od die(mysql_error() . '<br />' . $sql); // $sql dur die richtige variable ers?tzen.
$data = mysql_fetch_assoc($result);
echo "<br>".$data['inhalt']."<br><br>"; //bei diesem Echo wird der inhalt aus der Spalte "Inhalt" ausgelesen
echo "Geschrieben von".$data['Nickname']." am ".$data['Datum']." .<br><br>"; //Hier werden halt Nickname und Datum ausgelesen
echo "<a href='eintrag.html'>Eintragen</a>"; //Link zum Formular
?>
Ich weiss nicht wie das mit der "richtigen variablen" gemeint war -
<?
include ("config.php");
mysql_connect("$host","$user","$passwort");
mysql_select_db("$datenbank"); //mit diesem Befehl waehlt ihr die Datenbank aus wo die Daten gespeichert werden
$sql = "SELECT * FROM gbook ORDER BY ID DESC"; // hier war ein ; zuviel
$result = mysql_query($sql) od die(mysql_error() . '<br />' . $sql);
$data = mysql_fetch_assoc($result);
echo "<br>".$data['inhalt']."<br><br>"; //bei diesem Echo wird der inhalt aus der Spalte "Inhalt" ausgelesen
echo "Geschrieben von".$data['Nickname']." am ".$data['Datum']." .<br><br>"; //Hier werden halt Nickname und Datum ausgelesen
echo "<a href='eintrag.html'>Eintragen</a>"; //Link zum Formular
?>
$sql war richtig *gg* mit der richtigen variable war die mit
dem mysql-befehls-string gemeint ($sql)
und nun zu der tabelle:
name, email und websites stat tinyint(4) zu varchar(250) machen
datum zu int(14) machen und inhalt zu text machen (damit sind die types gemeint)
ID zu prim?rykey + auto_incrament ?ndern
oder diesen code benutzen (vorher die alte tabelle l?schen)
CREATE TABLE `gbook` (
`ID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`datum` INT( 14 ) NOT NULL ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 150 ) NOT NULL ,
`webseite` VARCHAR( 200 ) NOT NULL ,
`inhalt` TEXT NOT NULL ,
PRIMARY KEY ( `ID` )
); -
Was muss denn bei "text" an l?nge hin?
und in zeile 13 bei book.php kommt immer noch der fehler -
bei text muss keine l?nge hin
ich hoffe du hast mein edit gesehen
und ich hab mich verschrieben stat od kommt da or hin
<?
include ("config.php");
mysql_connect("$host","$user","$passwort");
mysql_select_db("$datenbank");
$sql = "SELECT * FROM gbook ORDER BY ID DESC";
$result = mysql_query($sql) or die(mysql_error() . '<br />' . $sql);
if(mysql_num_rows($result) > 0)
{
while($data = mysql_fetch_assoc($result))
{
echo "<br>".$data['inhalt']."<br><br>"; /echo "Geschrieben von".$data['name']." am ".$data['datum']." .<br><br>"; }
} else {
echo 'Keine Eintr?ge vorhanden<br />';
}
echo "<a href='eintrag.html'>Eintragen</a>";
?> -
Jetzt funktioniert praktisch alles,danke bis heirher, ausser das speichern in der datenbank. Dazu habe ich folgendes formular gepastelt, doch ich nehme an, dass da was falsch is ^^
<html>
<head>
</head>
<body>
<form action="save.php">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
<tr>
<td align="right">Name:</td>
<td><input name="name" type="text" size="30"></td>
</tr><tr>
<td align="right">E-Mail:</td>
<td><input name="email" type="text" size="30"></td>
</tr><tr>
<td align="right">Website:</td>
<td><input name="website" type="text" size="30">
</tr><tr>
<td align="right" valign="top">Nachricht:</td>
<td><textarea name="inhalt" rows="10" cols="50"></textarea></td>
</tr><tr>
<td>
<input type="submit" value=" Absenden ">
<input type="reset" value=" Abbrechen">
</td>
</tr>
</table>
</form>
</body>
</html> -
bei form kommt noch <form action="save.php" method="post">hin.
und dann zeig mal die komplette save.php. denn dort muss der fehler beim speichern sein -
<?
include ("config.php");
mysql_connect("$host","$user","$passwort");
mysql_select_db("$datenbank");
$date = date("d.M.y H:i");
$sql = "INSERT INTO gaestebuch (name,email,website,datum,inhalt,) VALUES ('$name','$email','$website','$datum','$inhalt');"; //Dies ist der Befehl der nachher die Datenbank empfangen wird. In den Klammern nach "gbook" sind die Spalten und hinter "VALUES" stehn die dazugeh?rigen Informationen.
$result = mysql_query($sql);
echo "Danke f?r den Eintrag";
?>
so sieht die save aus -
ich tippe da auf die ragister globals^^
<?
include ("config.php");
mysql_connect("$host","$user","$passwort");
mysql_select_db("$datenbank");
$date = time();
$sql = "INSERT INTO gbook (name,email,website,datum,inhalt,) VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['website']."','$datum','".$i_POST['inhalt']."')"; $result = mysql_query($sql) or die(mysql_error() . '<br />' . $sql);
echo "Danke f?r den Eintrag";
?>
dabei will ich nur mal erw?hnen, dass das script hier seine vollen schw?chen zeigt, da die vom user eingegebenen daten nicht im geringsten gepr?ft werden.
wenn du da mehr infos willst, dann schreib mir eine pn, da es sonst diesen thread sprengen w?rde.
ich werde dir dann morgen weiter helfen.
gute nacht
[edit]
an den vorposter... das w?rde gleich im zwieten post gekl?rt
oder diesen code benutzen (vorher die alte tabelle l?schen)
CREATE TABLE `gbook` (
`ID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`datum` INT( 14 ) NOT NULL ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 150 ) NOT NULL ,
`webseite` VARCHAR( 200 ) NOT NULL ,
`inhalt` TEXT NOT NULL ,
PRIMARY KEY ( `ID` )
);
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage