Gästebuch
Finn
- php
3 Tom2 suit0 Finn0 suit0 Der Martin
0 Der Martin
0 Finn
0 Tom
0 T-Rex0 Tom
0 Felix Riesterer
0 Finn0 ms88
Hallo.
Ich habe ein Problem mit dem untenstehenden Code
und zwar wird nichts in die Datenbank-Tabelle geschrieben und auch nichts ausgegeben.
Wär nettwenn mir jmd. hilft.
<?php error_reporting(E_ALL);
ini_set('display_errors', 1); ?>
<html>
<head>
<title></title>
</head>
<body>
<form action = "<?php echo $_SERVER['PHP_SELF']; ?>" method = "POST">
<table>
<tr><td>Name:<br></td>
<td><input type = "text" name = "name"></td></tr>
<tr><td>E-Mail-Adresse:<br></td>
<td><input type = "text" name = "mail"></td></tr>
<tr><td>Gästebucheintrag:<br></td>
<td><textarea name = "text" cols = "50" rows = "10"></textarea></td></tr>
<tr><td><input type = "submit" value = "Eintragen" name = "submit"></td></tr>
</table>
</form>
<?php
$server = "localhost";
$user = "**********";
$pass = "********";
$verbindung = mysql_connect($server, $user, $pass)
//...oder auch nicht^^:
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
//Datenbank auswahl (finnjunker = Datenbank, guestbook = Tabelle):
mysql_select_db("finnjunker")
or die ("Datenbank konnte nicht ausgewählt werden");
if($_POST['submit'] == TRUE)
{
$name = $_POST['name'];
$mail = $_POST['mail'];
$text = $_POST['text'];
$einzutragen = "INSERT INTO gastbuch ('name', 'e-mail', 'eintrag') VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);
}
$ausgabe = "SELECT * FROM gastbuch";
$ausgabe_query = mysql_query($ausgabe);
while ($ausgeben = mysql_fetch_array($ausgabe_query))
{
//Ausgabe der Daten:
echo "<pre>";
print_r ($ausgeben);
echo "</pre>";
echo "<span style = 'background-color: #00EEFF;'> Name: ";
echo $ausgeben['name'];
echo "<br><br>";
echo "E-Mail: ";
echo $ausgeben['e-mail'];
echo "<br><br>";
echo "Eintrag: ";
echo $ausgeben['eintrag'];
echo " <br></span>";
}
?>
</body>
</html>
$einzutragen = "INSERT INTO gastbuch ('name', 'e-mail', 'eintrag') VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);
Bau Dir mal eine Fehlerkontrolle für diese zwei Zeilen auf!
Und bitte lies in diesem Thread noch gaaaanz lange mit, denn da werden noch ganz viele andere Mängel gerügt werden, die Du in deiner Programmlogik hast.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
$einzutragen = "INSERT INTO gastbuch ('name', 'e-mail', 'eintrag') VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);Bau Dir mal eine Fehlerkontrolle für diese zwei Zeilen auf!
Und bitte lies in diesem Thread noch gaaaanz lange mit, denn da werden noch ganz viele andere Mängel gerügt werden, die Du in deiner Programmlogik hast.
Besonders hinsichtlich Sicherheit und Kontextwechseln.
$einzutragen = "INSERT INTO gastbuch ('name', 'e-mail', 'eintrag') VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);Bau Dir mal eine Fehlerkontrolle für diese zwei Zeilen auf!
Hab das jz so gemacht:
$name = $_POST['name'];
$mail = $_POST['mail'];
$text = $_POST['text'];
$einzutragen = "INSERT INTO gastbuch (name, e-mail, eintrag) VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);
if ($eintragen)
{
echo "Ihr Eintrag wurde gespeichert.";
}
else
{
echo "Fehler beim Schreiben in die Datenbank!";
}
und es kommt immer "Fehler beim Schreiben in die Datenbank".
warum?!
warum?!
Das sagt dir die Fehlerbehandlungs-Funktion von MySQL - unter PHP erreichst du diese über mysql_error().
Hallo,
Hab das jz so gemacht:
$name = $_POST['name'];
$mail = $_POST['mail'];
$text = $_POST['text'];
warum? Wozu kopierst du diese drei Werte um, bevor du sie verwendest?
`INSERT INTO gastbuch (name, e-mail, eintrag) VALUES (...)`{:.language-sql}
Darf ein Spaltenname denn einen Bindestrich enthalten? Mal schnell im [Handbuch](http://dev.mysql.com/doc/refman/5.6/en/identifiers.html) nachschlagen ... ja, darf er, aber dann muss er gequotet werden.
Ciao,
Martin
--
Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Einen hab ich noch ...
$name = $_POST['name'];
$mail = $_POST['mail'];
$text = $_POST['text'];
> warum? Wozu kopierst du diese drei Werte um, bevor du sie verwendest?
und was noch viel schlimmer ist: Wieso gibst du sie so unbekümmert an SQL weiter, ohne sie zu überprüfen und/oder [kontextgerecht zu maskieren](http://de.php.net/manual/en/function.mysql-real-escape-string.php)? Noch nie vom kleinen [Bobby Tables](http://bobby-tables.com/) gehört?
Ciao,
Martin
--
Wenn ein Räuber eine deutsche Amtsstube überfällt, welchen Satz kann er sich dann sparen?
"Keine Bewegung!"
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Noch nie vom kleinen Bobby Tables gehört?
Nein hab ich noch nicht...
beschäftige mich ca. 1/2Jahr mit php erst
deswegen ziemlich unerfahren.
Hello,
$einzutragen = "INSERT INTO gastbuch ('name', 'e-mail', 'eintrag') VALUES ('$name', '$mail', '$text')";
$eintragen = mysql_query($einzutragen);
Bau Dir mal eine Fehlerkontrolle für diese zwei Zeilen auf!
Bei der Spaltenliste sehe ich schon zwei Fehler.
Die Values müssen auf jeden Fall vorher für die SQL-Textschnittstelle vorbehandelt werden, also "escaped". Sonst baust Du Dir eine Sicherheitslücke.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Dein Passwort und User bestehen nur aus Sternchen. So kann das bestimmt nicht funktionieren.
Gruß
der alles sieht
T-Rex
Hello,
Dein Passwort und User bestehen nur aus Sternchen. So kann das bestimmt nicht funktionieren.
*ROTFL*
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Lieber Finn,
und zwar wird nichts in die Datenbank-Tabelle geschrieben und auch nichts ausgegeben.
wozu braucht ein GB eine Datenbank? Es geht auch anders.
Liebe Grüße,
Felix Riesterer.
Habs jz raus danke für eure antworten...
es lag am namen der spalte e-mail
die heißt jz email^^
Habs jz raus danke für eure antworten...
es lag am namen der spalte e-mail
Das war offensichtlich.
die heißt jz email^^
Das ist ein Workaround, keine Lösung.
Hello,
Habs jz raus danke für eure antworten...
es lag am namen der spalte e-mail
Das war offensichtlich.
die heißt jz email^^
Das ist ein Workaround, keine Lösung.
Stimmt! Aber mit dieser Aussage kann Finn vermutlich nicht viel anfangen.
Er könnte sich mal
http://dev.mysql.com/doc/refman/5.1/de/legal-names.html
durchlesen. Dann könnte er hinterher wissen, was noch verkehrt war in seiner ersten Fassung.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Habs jz raus danke für eure antworten...
es lag am namen der spalte e-mail
die heißt jz email^^
Das ist ein Workaround, keine Lösung.
Stimmt! Aber mit dieser Aussage kann Finn vermutlich nicht viel anfangen.
doch, sollte er eigentlich.
Er könnte sich mal
http://dev.mysql.com/doc/refman/5.1/de/legal-names.html
durchlesen. Dann könnte er hinterher wissen, was noch verkehrt war in seiner ersten Fassung.
Das habe ich ihm gestern schon vorgehalten.
Ciao,
Martin
http://php.net/manual/de/book.mysqli.php
mysqli für prepared statements verwenden.