MySQL/Formular: Daten werden auch nach Aktuali. geschrieben
Philipp
- php
0 Alex0 Philipp
0 David Tibbe0 Philipp0 David Tibbe0 Philipp0 David Tibbe0 Philipp
Hallo,
ich bin immer noch bei meinem alten Problem. Ich habe ein Formular (2x Edit), mit dessen Hilfe der Benutzer Daten in meine MySQL-Datenbank schreiben kann. Dies soll eigentlich dann passieren, wenn er auf den "OK"-Button geklickt hat (submit). Aber leider passiert das gleiche auch bei einer (browserseitigen) Aktualisierung der Seite. Was kann ich dagegen tun? Ich hab schon auf http://ffm.junetz.de/members/reeg/DSP/ geguckt, aber da werden die Daten an ein anderes PHP geschickt. Hier der Code:
include("config.php");
$db_connect = mysql_pconnect($db_host, $db_user, $db_password) or die ("Fehler: Verbindung fehlgeschlagen.");
mysql_select_db($db_name, $db_connect) or die("Fehler: Ausgewählte Datenbank ist nicht vorhanden.");
<?php
echo "<form action="$PHP_SELF" method="post">";
echo " <input name="user" size="60" maxlength="60"><br>";
echo " <input name="comment" size="60" maxlength="60"><br>";
echo " <input type="submit" value="OK">";
echo " <input type="reset" value="Abbrechen">";
echo "</form>";
mysql_query("CREATE table $db_table(ID INT NOT Null AUTO_INCREMENT Primary Key, user VARCHAR(20) NOT Null, comment VARCHAR(100) NOT Null)");
mysql_query("INSERT into $db_table(user, comment) VALUES('$user', '$comment')") or die ("Fehler beim Eintragen.");
mysql_close($db_connect);
?>
Hi,
du musst einfach nach dem eintragen auf eine neue seite gehen, mit header()
.
.
mysql_close($db_connect);
header( Location: "http://www.server.de/erfolgreicheingetragen.html");
Vor header darf keine ausgabe an den Browser sein.
mfg
Alex
mysql_close($db_connect);
header( Location: "http://www.server.de/erfolgreicheingetragen.html");
Da kriege ich ein Parse error: parse error, unexpected ':' in /home/www/htdocs/poly-pixel.de/mysql/write.php on line 22
Hallo Phillip,
Da kriege ich ein Parse error: parse error, unexpected ':' in /home/www/htdocs/poly-pixel.de/mysql/write.php on line 22
In der Tat, richtig. Wie du sicherlich auch selbst durch Nachschlaen im
Manual entdeckt hättest, wäre header("Location: http://www.server.tld/");
richtig.
Grüße
David
Hallo Phillip,
Schau dir mal dieses Kapitel aus de FAQ an, das sollte was für dich sein:
29.17. Wie kann ich Reloads durch den User erkennen und verhindern?
http://www.dclp-faq.de/q/q-phplib-reloads.html
Achja, der include()- und mysql_select_db()-Aufruf sollte sicherlich innerhalb
des PHP-Codes geschehen, oder? ;)
Grüße
David
Ich hab jetzt einfach eine Abfrage, die reagiert, wenn nichts im Formular drin steht. Nunja, dass geht so lange gut, bis man schon einmal was eingetragen hat. Das ergebnis nach ein paar mal Aktualisieren ist folgendes:
0
Test
Test
18
Test2
Test2
19
Test2
Test2
23
asdf
asdfasdfa
22
Test2
Test2
21
Test2
Test2
20
sdf
sdf
24
asdf
sfd
25
Test2
Test2
26
asdf
sfd
27
asdf
sfd
Ich sollte erwähnen, dass ich nur Test2 eingeben habe. Wo jetzt die ganzen sfd und asdf herkommen weiß ich nicht.
Hallo Philipp (entschuldige bitte, dass ich bisher konseqent deinen Namen
mit falsche Dopplungen schrieb)
Ich hab jetzt einfach eine Abfrage
Die hast du, ja. Wir kennen sie nicht.
Wo jetzt die ganzen sfd und asdf herkommen weiß ich nicht.
Das mag von mir stammen. Ich habe einmal das Formular ausprobiert und 'asdf'
sind die Buchstaben unter der linken Hand bei mir, die ich zum Testen drücke.
Mag sich da noch ein Problem verstecken? ;)
Grüße
David
Die hast du, ja. Wir kennen sie nicht.
Stimmt...;-) Nichts großes:
if($user != "" && $comment != "")
{
mysql_query("CREATE table $db_table(ID INT NOT Null AUTO_INCREMENT Primary Key, user VARCHAR(20) NOT Null, comment VARCHAR(100) NOT Null)");
mysql_query("INSERT into $db_table(user, comment) VALUES('$user', '$comment')") or die ("Fehler beim Eintragen.");
}
Naja, vor dem eintragen geht es, nach dem ersten Eintrag funzt es nicht mehr.
Das mag von mir stammen. Ich habe einmal das Formular ausprobiert und 'asdf'
sind die Buchstaben unter der linken Hand bei mir, die ich zum Testen drücke.
Hab ich kurz nach meine Post auch schon bemerkt - kommt davon, wenn man komplette Fehlermeldungen postet. Wenigstens kennst du jetzt meine Adresse...;-)
Nunja, das mit dem header geht jedenfalls auch net *heul*
Hallo Philipp,
if($user != "" && $comment != "")
Ein Whitespace und das ganze ist ausgehebelt. Du kennst isset() bzw. empty()?
Naja, vor dem eintragen geht es, nach dem ersten Eintrag funzt es nicht mehr.
Weil danach die Variabeln gesetzt sind. Auch bei einem Reload bleiben sie es.
Lese den Beitrag aus den FAQ, dort ist das, was du suchst, beschrieben.
Und wenn du gerade da bist, dort ist auch ein Text darüber, warum du niemals
Variabeln ungeprüft in deinem Script verarbeiten solltest ;)
Wenigstens kennst du jetzt meine Adresse...;-)
In der Tat, Herr Engel, ich schau mal auf ne Tasse Tee vorbei ;)
Etwas irritierend fand ich das 15% unter dem Bildchen. Für einen Moment dachte
ich, du hast einen "tollen" Preloader. Und vielleicht wäre ein kurzer
Info-Text ("im Umbau" oder so) auch ganz angebracht.
Grüße
David
Ich glaube, ich hab gefunden, was ich gesucht habe:
http://www.dclp-faq.de/q/q-formular-mehrfach.html
Ja, das Design steht ja schon alles, aber leider haperts noch am PHP/MySQL-Code.
Btw: Ich freu mich über den Besuch...^^