Eintrag in die Datenbank
Geri
- datenbank
0 Horst Scheibenhofer0 Geri0 Marc Reichelt0 Geri
0 Tom
0 Marc Reichelt0 Struppi0 Tom
Hallo Leute,
leider werden die ausgefüllten Daten nicht in die Datenbank geschrieben - nur die ID und der ZEITSTEMPEL werden in die Datenbank eingefügt.
Weiß leider nicht wo, das Problem liegt.
Danke jetzt schon mal an die Helfer
Tschau Geri
Quelltext
<?php
ini_set('error_reporting', E_ALL);
include_once "tabelle.inc.php";
include "global.inc.php";
$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);
$GBname = "";
$GBemail = "";
$GBwebadresse = "";
$GBtext = "";
$anlegen = 'INSERT INTO gastbuch
(
name,
email,
www,
text
)
VALUES (
"'.$GBname.'",
"'.$GBemail.'",
"'.$GBwebadresse.'",
"'.$GBtext.'" )';
mysql_query($anlegen, $dblink);
?>
<body>
<form action="137.php" method="post">
<input type="text" name="GBname" value="<?php echo $GBname; ?>" .....
<input type="submit" value="Senden!"> <input type="reset" value="Zurücksetzen">......
Hallo Leute,
leider werden die ausgefüllten Daten nicht in die Datenbank geschrieben - nur die ID und der ZEITSTEMPEL werden in die Datenbank eingefügt.
Weiß leider nicht wo, das Problem liegt.
Quelltext
<?php
.........
$GBname = "";
$GBemail = "";
$GBwebadresse = "";
$GBtext = "";
Hier setzt du die Variablen auf einen Leerstring und verwendest sie dann im Insert. Klar, dass dann nichts in die Datenbank geschrieben wird.
mfg
Horst
Hallo Leute,
leider werden die ausgefüllten Daten nicht in die Datenbank geschrieben - nur die ID und der ZEITSTEMPEL werden in die Datenbank eingefügt.
Weiß leider nicht wo, das Problem liegt.
Quelltext
<?php
.........$GBname = "";
$GBemail = "";
$GBwebadresse = "";
$GBtext = "";Hier setzt du die Variablen auf einen Leerstring und verwendest sie dann im Insert. Klar, dass dann nichts in die Datenbank geschrieben wird.
mfg
Horst
Hallo,
ja da ist was drann -
Habe es nun geändert auf:
############################################################
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
###########################################################
Jetzt schreib er mir die Daten rein, aber er löscht die Daten nur im "GBtext" (Formular) und bei den anderen lasst er es steh´n??
Danke für die Hilfe
Tschau Geri
Hallo Geri,
Jetzt schreib er mir die Daten rein, aber er löscht die Daten nur im "GBtext" (Formular) und bei den anderen lasst er es steh´n??
Wie meinst du das, 'er löscht die Daten nur im "GBtext"'?
Wie sieht denn dein Eintrag in der Datenbank nun genau aus?
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo Geri,
Jetzt schreib er mir die Daten rein, aber er löscht die Daten nur im "GBtext" (Formular) und bei den anderen lasst er es steh´n??
Wie meinst du das, 'er löscht die Daten nur im "GBtext"'?
Wie sieht denn dein Eintrag in der Datenbank nun genau aus?Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo,
ich werde mich dann mit der Sicherheit beschäftigen wenn, es mal einwandfrei funkt - danke mal an alle.
*************
Die Änderung habe ich zuerst reingepostet - mit "Löschen" meine ich im Formularfeld - also der User tippt seine Sachen rein - drückt auf "OK" >>wird in die Datenbank geschrieben<< und nur beim Formular - Feld "GBtext" wird der Text gelöscht bei den anderen bleibt er stehen!
Hoffe ich habe mich verständlich ausgedrückt
Dake
Tschau Geri
Die Änderung habe ich zuerst reingepostet - mit "Löschen" meine ich im Formularfeld - also der User tippt seine Sachen rein - drückt auf "OK" >>wird in die Datenbank geschrieben<< und nur beim Formular - Feld "GBtext" wird der Text gelöscht bei den anderen bleibt er stehen!
Ich glaube was du suchst ist ein sog. "Affenformular"
versuch mal:
<textarea ...><?=$_POST['GBtext']?></textarea>
mfg
Horst
Die Änderung habe ich zuerst reingepostet - mit "Löschen" meine ich im Formularfeld - also der User tippt seine Sachen rein - drückt auf "OK" >>wird in die Datenbank geschrieben<< und nur beim Formular - Feld "GBtext" wird der Text gelöscht bei den anderen bleibt er stehen!
Ich glaube was du suchst ist ein sog. "Affenformular"
versuch mal:<textarea ...><?=$_POST['GBtext']?></textarea>
mfg
Horst
Hallo,
also das mit dem "Affenformular" versteh ich jetzt nicht ganz(wie so einiges).?? Was sollte ich dann bei den anderen sachen ändern?
Also mein derzeitiger Quellcode :
############################################
<?php
ini_set('error_reporting', E_ALL);
include_once "tabelle.inc.php";
/* $table = new tabelle(); */
include "global.inc.php";
$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
$anlegen = 'INSERT INTO gastbuch
(
name,
email,
www,
text
)
VALUES (
"'.$GBname.'",
"'.$GBemail.'",
"'.$GBwebadresse.'",
"'.$GBtext.'" )';
mysql_query($anlegen, $dblink);
?>
<body>
<form action="137.php" method="post">
.....
<td>Name:</td>
<td><input type="text" name="GBname" value="<?php echo mysql_real_escape_string($GBname); ?>" size="40"></td>
.....
<input type="submit" value="Senden!"> <input type="reset" value="Zurücksetzen">
...
</form>
#############################################
Also wie gesagt , er schreibt mir in die Datenbank - soweit so gut - Aber beim OFRMULAR selbst löscht er mir nicht den eintrag vom USER.
Also danke schon mal für die AufklärungTschau Geri
Hallo Geri,
Ich habe deinen Quellcode mal ein wenig überarbeitet und kommentiert, damit wir dein Problem eventuell etwas schneller sehen:
<?php
// alle Fehler und Warnungen ausgeben
ini_set('error_reporting', E_ALL);
// was die naechsten beiden Zeilen machen wissen wir nicht, da wir den Dateinhalt nicht kennen
include_once("tabelle.inc.php");
include("global.inc.php");
// zur Datenbank verbinden und Datenbank $database auswaehlen
$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);
// Daten, die vom Formular uebergeben werden, in Variablen abspeichern
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
// Query erstellen und ausfuehren, man beachte die Benutzung der Funktion mysql_real_escape_string(), die alle besonderen Zeichen maskiert => gegen sql-injenctions
$query = 'INSERT INTO gastbuch (name, email, www, text) VALUES ("'.mysql_real_escape_string($GBname).'", "'.mysql_real_escape_string($GBemail).'", "'.mysql_real_escape_string($GBwebadresse).'", "'.mysql_real_escape_string($GBtext).'" )';
mysql_query($query, $dblink);
// zum Testen geben wir jetzt mal eventuell auftretende Fehler aus, spaeter diese Zeile entfernen
echo mysql_error();
?>
So, und dann sehen wir weiter.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo Geri,
Hallo Marc,, zuerst einmal ein großes Dankeschön für dein Mühe.
// was die naechsten beiden Zeilen machen wissen wir nicht, da wir den Dateinhalt nicht kennen
tabelle.inc.php ist dann für mich wichtig wenn ich die Daten auslese(table).
in global.inc.php liegen die zugangsdaten
include_once("tabelle.inc.php");
include("global.inc.php");
// Daten, die vom Formular uebergeben werden, in Variablen abspeichern
Hier kommt jetzt eine fehlermeldung:
Notice: Undefined index: GBname in /137.php on line 15
Notice: Undefined index: GBname in /137.php on line 16
Notice: Undefined index: GBname in /137.php on line 17
Notice: Undefined index: GBname in /137.php on line 18
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
So, und dann sehen wir weiter.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Danke Tschau Geri
Hello,
Hier kommt jetzt eine fehlermeldung:
Notice: Undefined index: GBname in /137.php on line 15
Notice: Undefined index: GBname in /137.php on line 16
Notice: Undefined index: GBname in /137.php on line 17
Notice: Undefined index: GBname in /137.php on line 18$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
Ja. Beim Erstaufruf des Scriptes sind die Parameter noch gar nicht übertragen worden vom Script.
Einen Lösungsweg habe ich Dir weiter oben gepostet.
Beim Erstaufruf brauchst Du dann aber leine Fehlerbehandlung durchzuführen. Da kann ja noch kein Fehler vorliegen.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hello,
Habe es nun geändert auf:
############################################################
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );
###########################################################
Das ist auch nicht ganz richtig (hier vielelicht gerade noch so).
Das Formular könnte aber auch Werte enthalten, die nicht mit übertragen werden, weil sie nicht ausgewählt wurden. (Radio, Checkbox, Select,...).
Und außerdem könnte das Formular gefälscht worden sein, dann könnte auch ein Wert fehlen oder zuviel sein.
Man sollte daher ein Array mit allen erwarteten Werten vorhalten, und dieses mit foreach() abfahren
$_fehler = array();
foreach($_required as $key => $val)
{
if(isset($_POST[$key])
{
$_required[$key] = $_POST[$key];
}
else
{
$_fehler[] = "Feld $key fehlt";
}
}
So ist sichergestellt, dass Du merkst, wenn ein Feld fehlt.
Das kann man beliebig komplexer machen.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hallo Geri,
$anlegen = 'INSERT INTO gastbuch
Müsste es nicht irgendwie "gaestebuch" heißen? Der Name kommt mir doch ein wenig ungewöhnlich vor.
(
name,
email,
www,
text
)
VALUES (
"'.$GBname.'",
"'.$GBemail.'",
"'.$GBwebadresse.'",
"'.$GBtext.'" )';
mysql_query($anlegen, $dblink);
Lass dir mal nach dem Query eventuelle Fehler ausgeben, Stichwort mysql_error().
Und noch ein Tipp: Trage _niemals_ ungeschützt Daten in eine MySQL-Tabelle ein - das kann schlimme Folgen haben (Angriffsmöglichkeiten!).
verwende statt $GBname einfach mysql_real_escape_string($GBname), also natürlich nur da wo du die Daten in die Tabelle einträgst.
Derzeit legst du die Variablen ja noch im Skript selbst fest (leere Strings), aber sobald die Variablen von einem Formular kommen wird's brenzlig.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
$anlegen = 'INSERT INTO gastbuch
(
name,
email,
www,
text
)
VALUES (
"'.$GBname.'",
"'.$GBemail.'",
"'.$GBwebadresse.'",
"'.$GBtext.'" )';
mysql_query($anlegen, $dblink);
Hast du mal 'ne URL?
Deine Datenbank ist ein offenes Scheunentor, such mal nach sql-injection.
Struppi.
Hello,
<?php
ini_set('error_reporting', E_ALL);
include_once "tabelle.inc.php";
include "global.inc.php";
$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);
$GBname = "";
$GBemail = "";
$GBwebadresse = "";
$GBtext = "";$anlegen = 'INSERT INTO gastbuch
(
name,
email,
www,
text
)
VALUES (
"'.$GBname.'",
"'.$GBemail.'",
"'.$GBwebadresse.'",
"'.$GBtext.'" )';
mysql_query($anlegen, $dblink);?>
<body>
<form action="137.php" method="post">
<input type="text" name="GBname" value="<?php echo $GBname; ?>" .....
<input type="submit" value="Senden!"> <input type="reset" value="Zurücksetzen">......
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom