Gästebuch, das Post-Variablen (falsch) hin und her schickt :-)
vincent
- php
0 vincent
Ok, folgendes...
Ich baue ein Gästebuch. Alles ging glatt, bis ich auf die Idee kam, vor dem eigentlichen Abschicken eine Vorschau einzubauen. Und jetzt werden die Daten doch in dem Moment gespeichert, wenn sie eigentlich noch verändert werden sollen:
Der Aufbau:
Seite Eins.php sammelt in einem Formular alle notwendigen Daten (name, e-mail, zeit, text, etc.) und schickt sie beim Abschicken über die ACTION="Zwei.php" im Framekopf an die zweite Datei.
Dort werden die einzelnen Variablen aus den Parametern herangezogen, um die Vorschau zu bilden. Darunter habe ich ein Formular mit unsichtbaren input-tags eingebaut, das die Variablen wiederum sammelt und auf Befehl weiterschickt: Entweder über
<input type="submit" name="status" value="abschicken">
oder
<input type="submit" name="status" value="bearbeiten">.
Auf der ersten Seite wird nämlich zu Beginn geprüft, ob $HTTP_POST_VARS[status] == "abschicken" ist.
wenn ja, wird der MYSQL_QERY() gestartet, wenn nein wird das Formular nochmal angezeigt, in dem die bisherigen Daten aus den Parametern genommen werden.
Bevor ich gleich das Wichtigste aus dem Quelltext zitiere möchte ich noch schreiben, dass ich länger nach einer geeigneten Vorlage, oder einem Beispiel einer "Vorschau" gesucht habe. Ohne Erfolg.
d.h. was ich da zusammengestellt habe ist daher nach einem Monat PHP-Erfahrung mehr oder weniger improvisiert. Also schlagt mich bitte nicht, wenn ich Schwere Fehler eingebaut habe - würde mich aber freuen zu erfahren, was zumindest das vorzeitige Abschicken verursacht.
danke, danke, danke im Voraus!
Eins.php:
---------
<?php
if ($HTTP_POST_VARS[status] == "abschicken") {
$query = "INSERT INTO gb (name, email, time, subject, text, visibility, timestamp) ";
$query .= "values('$name','$email', now(), '$subject', '$message','$vis', '$tstamp')";
$VerbindungsID = mysql_pconnect("xxx.xxx.xxx.xxx","xxx","xxx") or die(" ");
mysql_select_db("marcusql") or die(" ");
mysql_query($query) or die(" ");
echo Danke für Ihren Eintrag";
}
else {
if ($REQUEST_METHOD=='POST') {
for(reset($HTTP_POST_VARS);
$key = key($HTTP_POST_VARS);
next($HTTP_POST_VARS)) {
$this = addslashes($HTTP_POST_VARS[$key]);
$this = strtr($this, ">", " ");
$this = strtr($this, "<", " ");
$this = strtr($this, "|", " ");
$$key = $this;
}
if ($name && $message ) {
$query = "INSERT INTO gb (name, email, time, subject, text, visibility, timestamp) ";
$query .= "values('$name','$email', now(), '$subject', '$message','$vis', '$tstamp')";
$VerbindungsID = mysql_pconnect("xxx.xxx.xxx.xxx","xxx","xxx") or die(" ");
mysql_select_db("marcusql") or die(" ");
mysql_query($query) or die(" ");
}
else {$notall = 1;
}
}
if ($notall == 1) { ?>
<P>Bitte tragen Sie einen Namen und einen Text ein!</P>
<?php } ?>
<FORM METHOD="post" ACTION="Zwei.php">
<INPUT TYPE="text" NAME="name" SIZE="21" MAXSIZE="50" VALUE="<?php echo $name; ?>">
<INPUT TYPE="text" NAME="email" SIZE="21" MAXSIZE="50" VALUE="<?php echo $email; ?>">
<INPUT TYPE="text" NAME="subject" SIZE="21" MAXSIZE="50" VALUE="<?php echo $subject; ?>">
<TEXTAREA NAME="message" COLS="16" ROWS="6" WRAP="Virtual"><?php echo $message; ?></TEXTAREA>
privat/öffentlich:<input type="radio" name="vis" value="1" checked><input type="radio" name="vis" value="0">
<input type="hidden" name="tstamp" value="<?php echo time(); ?> ">
<input type="submit" value="Eintragen" name="submit">
</FORM>
<?php
}
?>
und Zwei.php:
-------------
So wird Ihr Eintrag aussehen:<br>
<table>
<!--ausgabe der Daten als GB Eintrag-->
</table>
<form method="post" action="gaestebuch.php">
<INPUT TYPE="hidden" NAME="name" VALUE="<?php echo $name; ?>">
<INPUT TYPE="hidden" NAME="email" VALUE="<?php echo $email; ?>">
<INPUT TYPE="hidden" NAME="subject" VALUE="<?php echo $subject; ?>">
<INPUT TYPE="hidden" NAME="message" VALUE="<?php echo $message; ?>">
<input type="hidden" name="tstamp" value="<?php echo time(); ?> ">
Möchten Sie ihn <input type="submit" name="status" value="abschicken">
oder weiter <input type="submit" name="status" value="bearbeiten"> ?
</form>
zur Zeit kann man sich das Ergebnis unter http://www.clubfx.at.tt ansehen. Man muss sich nur durchklicken über "connection" --> "Gästebuch"
Würde mich irsinnig freuen, wenn mich jemand der Erleuchtung näher bringen könnte :D und 'Danke' jedem, der Fehler oder naheliegende Verbesserungsvorschläge nennt! vielleicht kenn ja jemand auch ein passendes 'Beispiel-Gästebuch'?
cu vi n c e n t
...und schickt sie beim Abschicken über die ACTION="Zwei.php" im Framekopf an die zweite Datei.
gemeint ist natürlich "Formularkopf" <form action=""...
und Zwei.php:
[...]<form method="post" action="gaestebuch.php">
Richtig, als action ist hier 'natürlich' Eins.php gemeint. sry
Würde mich irsinnig freuen, wenn mich jemand der Erleuchtung näher bringen könnte :D und 'Danke' jedem, der Fehler oder naheliegende Verbesserungsvorschläge nennt! vielleicht kenn ja jemand auch ein passendes 'Beispiel-Gästebuch'?
cu vi n c e n t