Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Formularfelder nach erfolgreichem absenden ausblenden.





Frage

Hallo, Ich habe ein einfaches Formular mir 3 Feldern gemacht. Wenn man alle Felder ausgefüllt hat, kommt unter den Felder eine Nachricht, dass die Mail erfolgreich abgesendet worden ist. Das ist bisher auch ganz ok so. Was mich aber nun stört ist, dass die Felder weiterhin zu sehen sind. Und das auch noch komplett ausgefüllt. Ich hätte es gerne, dass wenn das Formular erfolgreich abgeschickt worden ist, nur die Nachricht "Erfolgreich ....." kommt. Ohne den Feldern. Kann man das irgendwie noch mit hineinprogramieren? Oder muss ich dazu auf eine weitere Seite verlinken, wo die Botschaft draufsteht, dass das Formular abgeschickt worden ist? Hier der Quellcode: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Kontaktformular</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="phpkid.css"> </head> <body> <h2>Feedbackformular</h2> <form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post"> Name: <input type="text" name="Name" value="<?php if (isset($_POST[´Name´])) { echo htmlspecialchars(stripslashes($_POST[´Name´])); } ?>" /><br /> E-Mailadresse: <input type="text" name="email" value="<?php if (isset($_POST[´email´])) { echo htmlspecialchars(stripslashes($_POST[´email´])); } ?>" /><br /> Kommentar:<br /> <textarea name="botschaft" cols="50" rows="5"> <?php if (isset($_POST[´botschaft´])) { echo stripslashes($_POST[´botschaft´]); } ?> </textarea><br /> <input type="submit" value="Abschicken" name="submit"/> </form> <?php if (isset($_POST[´submit´])) { $fehler = false; $fehlertext = ""; if (empty($_POST[´Name´])) { $fehler = true; $fehlertext .= "Der Name fehlt!<br />\n"; } elseif (strlen($_POST[´Name´]) < 3) { $fehler = true; $fehlertext .= "Der Name ist zu Kurz<br>\n"; } $muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/"; if (empty($_POST[´email´])) { $fehler = true; $fehlertext .= "Die E-Mail-Adresse fehlt!<br>\n"; } elseif (preg_match($muster, $_POST[´email´]) == 0) { $fehler = true; $fehlertext .= "Die E-Mail-Adresse ist ungültig!<br />\n"; } if (empty($_POST[´botschaft´])) { $fehler = true; $fehlertext .= "Das Kommentarfeld muß ausgefüllt werden!<br />\n"; } elseif (strlen($_POST[´Name´]) < 3) { $fehler = true; $fehlertext .= "Der Kommentar ist zu Kurz<br />\n"; } if ($fehler) { echo "<p>$fehlertext</p>"; } else { $mailbody = $_POST[´Name´] . " schrieb\n\n"; $mailbody .= $_POST[´botschaft´]; $mailbody = stripslashes($mailbody); $email = $_POST[´email´]; if (@mail("blabla@bla.de", "Feedback", $mailbody, "From: $email")) { echo "<p>Danke! Die Botschaft wurde weiergeleitet!</p>\n"; } else { echo "<p>Leider gab es einen Sendefehler!</p>\n"; } } } ?> </body> </html> Würd mich über Antworten freuen. Danke Struggle

Antwort 1 von wadspit

Hi,

ich schlage vor zu überprüfen, ob die Variable "Name" vorhanden ist, falls nicht soll die form angezeigt werden:

<?
if (!isset($Name){
?>

vor den Form-Tag,

<? } ?>

direkt dahinter.

Gruß

Fred

Antwort 2 von Struggle

Hallo Fred,

Die Variable "Name" wird schon überprüft ob sie Vorhanden ist. Genauso die Variable "email" und "botschaft".

Das Problem ob die Felder nun gefüllt sind oder nicht, habe ich schon im griff.

Ich möchte nur wissen, wie ich es schaffe, dass nach einem erfolgreichem Abschicken, die Ausfüllfelder verschwinden.
Kann man das in einer PHP Datei verwirklichen, oder muß ich mir eine zweite Datei erstellen muß wo der Text:; "Erfolgreich abgesendet.... " drinsteht?
Und dies irgendwie zu verknüpfen.

Gruß

Struggle

Antwort 3 von wadspit

Hi,

wenn ich es richtig verstanden habe, wird die Datei ohne Parameter aufgerufen, daher ist "NAME" noch nicht gesetzt. Wenn "NAME" gesetzt ist hat der user schon abgeschickt, daher ist kann durch die Überprüfen der "NAME"-Variable die FORM ausgeblendet werden.

füg mal folgendes in eine Datei und probiers aus:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>

<!--FREDS CODE-->
<? if (!isset($Name)){ ?>
<!--ENDE-->

<h2>Feedbackformular</h2>
<form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post">
Name: <input type="text" name="Name" value="<?php
if (isset($_POST[´Name´])) {
echo htmlspecialchars(stripslashes($_POST[´Name´]));
}
?>" /><br />
E-Mailadresse: <input type="text" name="email" value="<?php
if (isset($_POST[´email´])) {
echo htmlspecialchars(stripslashes($_POST[´email´]));
}
?>" /><br />
Kommentar:<br />
<textarea name="botschaft" cols="50" rows="5">
<?php
if (isset($_POST[´botschaft´])) {
echo stripslashes($_POST[´botschaft´]);
}
?>
</textarea><br />
<input type="submit" value="Abschicken" name="submit"/>
</form>

<!--FREDS CODE-->
<? } ?>
<!--ENDE-->

<?php

if (isset($_POST[´submit´])) {
$fehler = false;
$fehlertext = "";

if (empty($_POST[´Name´])) {
$fehler = true;
$fehlertext .= "Der Name fehlt!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Name ist zu Kurz<br>\n";
}
$muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
if (empty($_POST[´email´])) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse fehlt!<br>\n";
}
elseif (preg_match($muster, $_POST[´email´]) == 0) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse ist ungültig!<br />\n";
}
if (empty($_POST[´botschaft´])) {
$fehler = true;
$fehlertext .= "Das Kommentarfeld muß ausgefüllt werden!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Kommentar ist zu Kurz<br />\n";
}
if ($fehler) {
echo "<p>$fehlertext</p>";
}
else {
$mailbody = $_POST[´Name´] . " schrieb\n\n";
$mailbody .= $_POST[´botschaft´];
$mailbody = stripslashes($mailbody);
$email = $_POST[´email´];
if (@mail("gaborfilep@web.de", "Feedback", $mailbody, "From: $email")) {
echo "<p>Danke! Die Botschaft wurde weiergeleitet!</p>\n";
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
}
?>
</body>
</html>


Gruß

Fred

Antwort 4 von Struggle

Hallo Fred,

danke für deine Hilfe. Habe es auch gleich mal ausprobiert.

Die Ausfüll-Felder sind weg, wenn man auf Abschicken klickt.

Allerdings kommt nun keine meldung, dass sie Mail erfolgreich abgeschickt worden ist. Es kommt auch keine Fehlermeldung mehr, wenn ich ein Feld vergessen habe auszufüllen.
Und was noch schlimmer ist, dass die Mail nicht ankommt.

Ich schätzte, ich werde bei einem erfolgreichem Senden, auf eine zweite Datei zugreifen müssen.
z.B. erfolg.html
Wie fügt man das mit PHP ein, dass wenn die Felder alle korrekt ausgefüllt worden sind, eine neue Seite aufgerufen wird (z.B. erfolg.html)?

Antwort 5 von Struggle

bzw.

wie mache ich das, dass die Felder nach erfolgreichem Abschicken wieder geleert werden?

Ich sichere ja die Felder, damit der nutzer bei einem Fehler nicht alles nochmal schreiben muss.
Der nebeneffekt ist ja dann leider, dass die Felder auch noch gesichert sind wenn das Formular erfolgreich versendet worden ist.

Das möcht ich nicht, weil dann kann der Benutzter das Formular immer wieder abschicken, da es ja noch immer ausgefüllt ist.

Danke

Struggle

Antwort 6 von harrrharrr

Hi Struggle...
wenn du mir über meinen pager deine email addy schickst bekommst du ein Beispiel zugeschickt. Dazu musst du dich aber erst anmelden, sonst hast du heinen Zugriff auf meine addy. Oder gib deine email hier bekannt.

harrr

Antwort 7 von wadspit

Hi nochmal,

generell mach ich das über zwei dateien, eine mit formular und eine senden.php, da ich immer eine index-seite hab mit der ich die inhalte include. Damit hatte ich bisher keinerlei probleme. Die Übersichtlichkeit ist auch besser finde ich, aber das ist natürlich subjektiv. Wenn du willst schreib mir mal ne mail, dann schick ich dir die zwei dateien.

ein Beispiel wie ich es mach findest du auf www.dornauerlichter.de im Onlineshop

Gruß

Fred

Antwort 8 von wadspit

Hier die mailaddresse: info@mops-ag.de

Antwort 9 von harrrharrr

hi,
im shop finde ich nur mailto:....usw.

schick dir die Dateien nochmal an die neue addy.....

uups, du bist ja gar nicht Struggle... auch egal, vielleicht kannste ja was damit anfangen.... aber im shop finde ich immer noch nichts...

harrr

Antwort 10 von wadspit

Hi Harrr,

bei Kartenvorverkauf, Online-Ticket-Shop

Gruß

Fred

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: