PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formularkontrolle - Sendebestätigung



imported_Conny
18.10.2005, 22:45
Hallo Allerseits

Dank Eurer Hilfe habe ich nun eine Formularkontrolle wie sie mir gefällt. (Hier gefunden (http://www.getfreelancer.de/t2337_formular_klappt_nicht.html))

Soweit klappt dies auch, jedoch nicht so ganz wie ich es wünsche und hoffe deshalb auf Eure Unterstützung da ich von PHP auch noch nicht gewaltig viel Ahnung habe.

Mein Anliegen:
Ich möchte nur eine Datei (kontakt.php) verwenden.
Ich rufe wegen der Formularkontrolle das Kontaktformular auf (funktioniert).
Nach dem Absenden soll der Text oberhalb vom Formular und das Formular nicht mehr sichtbar sein, dafür aber der "Sendebestätigungstext".
Wie muss ich den Text oberhalb vom Formular und die Tabelle mit dem Formular ins PHP einbetten, dass ich beim erfolgreichen Absenden nur den Sendebestätigungstext auf der Seite angezeigt bekomme?
Mit "echo" habe ich es schon versucht, aber das klappt irgendwie nicht wegen den "Value-Angaben". Oder ich habe dabei was falsch gemacht.

Im Moment ist es logischerweise so, dass wenn das Formular erfolgreich abgesendet wurde, das Formular mit den gesamten Eingaben da steht und unterhalb der Sendebestätigungstext ist.
Ich habe auch versucht mit "action" auf eine Bestätigungsseite, aber dann klappt ja die Formularkontrolle nicht mehr und das Formular kann auch unvollständig abgeschickt werden. :rolleyes:

Vielen Dank im Voraus für Eure Unterstützung.
Bin für jeden Tipp dankbar
Mfg Conny :)

So sieht mein Formular aus:

Text oberhalb vom Formular welches in einer 2spaltigen Tabelle ist
...
<form action="index.php?section=kontakt&action=kontakt" method="post" id="kontakt">
<input type="hidden" name="subject" value="Mitteilung von www.xxxxxxxx.xx">
<table width="620" border="0">
<tr>
<td width="317" valign="top">
<p class="angaben"><br>
<label class="left" for="Firma" ACCESSKEY="F"><span class="label"><u>F</u>irma</span></label>
<input type="text" name="Firma" value="<?php echo $Firma; ?>" id="Firma" title="Name der Firma" tabindex="1" size="30"><br>
<label class="left" for="Branche" ACCESSKEY="B"><span class="label"><u>B</u>ranche</span></label>
<input type="text" name="Branche" value="<?php echo $Branche; ?>" id="Branche" title="In welcher Branche ist Ihr Unternehmen tätig?" tabindex="2" size="30
...
...
...
</p>

<?php
if(isset($_POST['action']) && ($_POST['action']=='senden'))
{

// Prueft ob die Felder ausgefuellt wurden falls nicht komm eine Fehlermeldung
if(!$Firma) $fehler[] = "Bitte tragen Sie den Firmennamen ein.";
if(!$Branche) $fehler[] = "Bitte tragen Sie die Branche in der Ihr Unternehmen tätig ist ein.";
if(!$Ansprechpartner) $fehler[] = "Bitte tragen Sie den Ansprechpartner ein.";
if(!$Position) $fehler[] = "Welche Position im Unternehmen präsentieren Sie?";
if(!$Anschrift) $fehler[] = "Tragen Sie bitte die Anschrift ein.";
if(!$Ort) $fehler[] = "Geben Sie bitte PLZ und Ort ein.";
if(!$Telefon) $fehler[] = "Geben Sie bitte die Telefonnummer ein.";
if(!$Mitteilung) $fehler[] = "Haben Sie schon einige Mitteilungen für mich? Kann ich schon etwas Konkretes für Sie vorbereiten?";
if(!$sendermail) $fehler[] = "Tragen Sie bitte Ihre E-Mail Adresse ein. Eine Kopie erhalten Sie nach dem Absenden.";

if(!count($fehler))
{
// Sendet Email, wenn Prüfung "ok"
echo("<p>Sendebestätigung:<br><br><br>Vielen Dank für Ihr Interesse.<br><br>Ihre Mitteilung wurde erfolgreich an xxxxxxxx gesendet.<br>
Sie erhalten eine Bestätigungsmail an $sendermail<br><br>
Mit freundliche Grüssen<br>xxxxxxxxxx<p>\n\n");
mail("$to", "$subject", "Mitteilung von $geschlecht $Ansprechpartner\n\n
Firma: $Firma\nBranche: $Branche\nAnrede: $geschlecht\nAnsprechpartner: $Ansprechpartner\nPosition: $Position\nAnschrift: $Anschrift\nOrt: $Ort\nTel: $Telefon\nE-Mail: $sendermail\n\nMitteilung:\n$Mitteilung","From:$sendermail");

mail("$sendermail", "Ihr Mitteilung an xxxxxxx www.xxxxxxxx.xx", "Ihre Angaben wurde mit folgenden Inhalt erfolgreich an xxxxxxxxxxx gesendet.\n
Firma: $Firma\nBranche: $Branche\nAnrede: $geschlecht\nAnsprechpartner: $Ansprechpartner\nPosition: $Position\nAnschrift: $Anschrift\nOrt: $Ort\nTel: $Telefon\nE-Mail: $sendermail\n\nIhre Mitteilung:\n$Mitteilung\n\n-------------------------\n
Besten Dank für Ihre Kontaktaufnahme.\n
Ich werde Ihr Schreiben schnellstmöglich bearbeiten.\n
Mit freundlichen Grüssen\xxxxxx\n-------------------------\n$web\n$to","From: xxxxxxxx <xxxx@xxxxx.xx>");

}
else
{
// Fehlerausgabe, wenn Felder leer waren
echo "<br><font size=2 face=Verdana, Arial, Helvetica, sans-serif color=red><b>Bitte füllen Sie alle notwendigen Felder aus:</b></font>";
echo "<font size=1 face=Verdana, Arial, Helvetica, sans-serif color=red><ul><li>".implode("<li>",$fehler)."</ul></font>";

}

}

?>
</td>
<td width="303" valign="top"><br><br>
Ihre Mitteilung<br>
<textarea name="Mitteilung" id="Mitteilung" title="Haben Sie vorab schon konkrete Fragen?
Kann ich für Sie schon Vorabklärungen oder bestimmte Vorbereitungen treffen?" tabindex="11" cols="45" rows="7"><?php echo $Mitteilung; ?></textarea>
<br>
<input type="hidden" name="action" value="senden">
<input class="senden" type="submit" name="Submit" value="Mitteilung senden">
<input type="hidden" name="an" value="xxxxx@xxxxxxxxx.xx">
</td>
</tr>
</table>
</form>

MS78FTL
19.10.2005, 11:45
ich würde nach dem Senden des Formulars zu einer "Meldungs seite" weiterleiten.

also z.B. nach mail() - Zeile 47

header ("Location: meldungsseite.html");
exit;

dieses einfügen ^^

das bewirkt, das nach dem senden der Mail die "meldungsseite.html" aufgerufen wird dort kannst du dann per automatischer weiterleitung den besucher nach x Sekunden wieder zur hauptseite schicken.

MfG,

Micha.

imported_Conny
24.10.2005, 01:17
Vielen Dank für den Tip

Eigentlich wünschte ich mir, dass ich dies mit nur einer Datei machen könnte, aber so schlau bin ich nicht um dies selbst hinzukriegen :rolleyes:

Jetzt ist folgende Situation nach dem Absenden:
Da das Formular in einer Tabelle ist, stehen der linke Teil (linke Tabellenspalte) des Formulares mit den ganzen Angaben noch (inklusive die Eingaben welche ich mach), die rechte Seite (rechte Tabellenspalte) mit dem Textfeld und der Absendebutton ist weg.
Unterhalb des linken Formularteil kommt diese Fehlermeldung:


Warning: Cannot modify header information - headers already sent by (output started at /home/www/web5/html/index.php:4) in /home/www/web5/html/kontakt/kontakt.php on line 67

Ich habe den Code so eingefügt, aber auch wenn ich den definitiven Pfad mit http: eingebe kommt die gleiche Meldung.



mail("..."); /*Zeile 62*/
header ("Location: index.php?section=kontakt&action=kontaktbestaetigung.php");/*Zeile 67*/
exit;
}
else
{
// Fehlerausgabe, wenn Felder leer waren
echo "<br><font size=2 face=Verdana, Arial, Helvetica, sans-serif color=red><b>Bitte füllen Sie alle notwendigen Felder aus:</b></font>";
echo "<font size=1 face=Verdana, Arial, Helvetica, sans-serif color=red><ul><li>".implode("<li>",$fehler)."</ul></font>";

}

}

?>


Die Mails kommen ordnungsgemäss an.

Muss ich in der Bestätigungsseite spezielle Angaben in den Header einfügen ?(

Danke
mfg
Conny

MS78FTL
25.10.2005, 17:01
Sorry mein Fehler, hätte mir deinen Quellcode besser anschauen sollen...

aber hier nun eine version die funktionieren sollte.

hier mal der grobe aufbau:

<html>
<head>

...

</head>
<body>

<?
if(isset($_POST['send']) && ($_POST['send']=='1')) {
#Speichernn der daten + erfolgsmeldung
?>

<table>
...
</table>

<?
} else {
#formular anzeigen
?>

<form>
<input type="hidden" name="send" value="1">
<table>
...
</table>
</form>

<?
}
?>

</body>
</html>

der rest in der anhängenden datei

Gruß,
Micha.

imported_Conny
19.11.2005, 02:59
Hallo Micha

Erstmal vielen Dank für Deine Hilfe und bitte entschuldige, dass ich mich erst jetzt wieder melde ... hatte momentan anderes zu erledigen. Leider hänge ich immer noch an diesen Formular. Irgendwie bin ich wohl auch zu dusselig :rolleyes: *hmpf*

Ich habe dies alles so eingefügt wie Du es mir hier gezeigt hast.
Aber ab der Zeile 19 hier in Deinem Script kommt eine Fehlermeldung, dass dieses { nicht akzeptiert wird.


<?
} else { /* Zeile 19*/
#formular anzeigen
?>

Jetzt weiss ich leider nicht wie ich das Formular einbinden muss. :mauer:
Wenn ich diesen Codeschnipsel raus nimm und diese Seite aufrufe, dann sind oberhalb logischerweise alle Fehlermeldungen weil das Formular ja noch nicht ausgefüllt ist. Füll ich es aus, wird ordnungsgemäss gesendet und die Sendebestätigung ist oberhalb vom ausgefüllten Formular zu sehen, weil ich es ja nicht in PHP "versteckt" habe.

Bitte, bitte hilf mir *fleh*
Vielen Dank im Voraus
Conny

MS78FTL
19.11.2005, 21:34
Sry, in zeile 10 fehlte die klammer auf { einfügen dann sollte es gehen.

imported_Conny
27.11.2005, 17:53
Hilfe!
Ich Dussl hab es immer noch nicht zum Laufen gebracht *seufz*
Ich habe es genau nach Deinen Empfehlungen eingebaut, aber jetzt macht er keine Kontrolle mehr und es wird auch kein Mail gesendet. :(
So sieht die Reihenfolge im Moment aus und ich weiss mit dem besten Willen nicht was ich da ändern muss :rolleyes:


<?php
if(isset($_POST['send']) && ($_POST['send']=='1')) {
#Speichern der daten + erfolgsmeldung
?>

<?php
// Prueft ob die Felder ausgefuellt wurden falls nicht kommt eine Fehlermeldung
if(!$Firma) $fehler[] = "Bitte tragen Sie den Firmennamen ein.";
if(!$Branche) $fehler[] = "Bitte tragen Sie die Branche in der Ihr Unternehmen tätig ist ein.";
...//weitere if Abfragen

if(!count($fehler))
{
// Sendet Email, wenn Prüfung "ok"
echo("<p><h1>Sendebestätigung:</h1>Vielen Dank für Ihr Anfrage.<br><br>Ihre Mitteilung wurde erfolgreich an XXXXXXXX gesendet.<br>
Sie erhalten eine Bestätigungsmail an $sendermail<br><br>
Mit freundlichen Grüssen<br>XXXXX<p>\n\n");
mail("$to", "$subject", "Mitteilung von $geschlecht $Ansprechpartner\n$Kontakt\n\n
Firma: $Firma\nBranche: $Branche\nAnsprechpartner: $geschlecht $Ansprechpartner\nPosition: $Position\nAnschrift: $Anschrift\nOrt: $Ort\nTel: $Telefon\nE-Mail: $sendermail\n\nMitteilung:\n$Mitteilung","From:$sendermail");

mail("$sendermail", "Ihr Mitteilung an XXXXX", "Ihre Angaben wurde mit folgenden Inhalt erfolgreich an XXXXX.\n
Firma: $Firma\nBranche: $Branche\nAnsprechpartner: $geschlecht $Ansprechpartner\nPosition: $Position\nAnschrift: $Anschrift\nOrt: $Ort\nTel: $Telefon\nE-Mail: $sendermail\n\nIhre Mitteilung:\n$Mitteilung\n\n-------------------------\n
Besten Dank für Ihre Kontaktaufnahme.\n
Ich werde Ihr Schreiben schnellstmöglich bearbeiten.\n
Mit freundlichen Grüssen\nXXXXX\n-------------------------\n$web\n$to","From: XXXXX <-fkontakt@XXXXX.ch>");

echo "<br><font size=2 face=Verdana, Arial, Helvetica, sans-serif color=#008000><b>Mail wurde erfolgreich gesendet</b></font>";


}
else
{
// Fehlerausgabe, wenn Felder leer waren
echo "<br><font size=2 face=Verdana, Arial, Helvetica, sans-serif color=red><b>Bitte füllen Sie alle notwendigen Felder aus:</b></font>";
echo "<font size=1 face=Verdana, Arial, Helvetica, sans-serif color=red><ul><li>".implode("<li>",$fehler)."</ul></font>";

}

?>

<?php
} else {
#formular anzeigen
?>

<h1>Kontakt</h1>
<p>Benötigen Sie Unterstützung von XXXXX<br>
<br>
Bitte füllen Sie das komplette Formular aus.</p>
<form action="index.php?section=kontakt&action=kontakt" method="post" id="kontakt">
<input type="hidden" name="subject" value="Mitteilung von www.XXXXX.ch">
<input type="hidden" name="send" value="1">
<input type="hidden" name="an" value="kontakt@XXXXX.ch">
<table width="620" border="0">
<tr>
<td width="317" valign="top">
<p class="angaben"><br>
<label class="left" for="Firma" ACCESSKEY="F"><span class="label"><u>F</u>irma</span></label>
.....
</p>
</td>
<td width="303" valign="top"><br><br>
Ihre Mitteilung<br>
<textarea name="Mitteilung" id="Mitteilung" title="Haben Sie vorab schon konkrete Fragen?
Kann ich für Sie schon Vorabklärungen oder bestimmte Vorbereitungen treffen?" tabindex="11" cols="45" rows="7"><?php echo $Mitteilung; ?></textarea>
<br>
<input class="senden" type="submit" name="send" value="Mitteilung senden">
</td>
</tr>
</table>
</form>

<?php
}
?>

Vielen Dank für die Unterstützung
Lg Conny

MS78FTL
27.11.2005, 22:33
hi,

der fehler sitzt hier:
<input type="submit" name="send" value="Mitteilung senden">

weil sich diese zeile mit dieser hier beist:

<input type="hidden" name="send" value="1">

fällt dir was auf ? - name="send" bei beidem.

und in deiner überprüfung ob das formular abgeschickt wurde prüfst du ob $send==1 ist aber $send ist "Mitteilung senden"

zur überprüfung was in deinen variablen übertragen wird kannst du
print_r($_POST); verwenden dann werden alle werte die vom formular übergeben werden angezeigt. (zur überprüfung / fehlerbeseitigung)

MfG,
Micha.

imported_Conny
27.11.2005, 22:44
Ach mein Gott ... ist das peinlich! 8o
Habe dies jetzt umbenannt mit "submit" ... und oh Wunder es klappt einwandfrei *rotwerd*

<input type="submit" name="submit" value="Mitteilung senden">

Tausend Dank für Deine Unterstützung, Micha *freu*

Lg Conny

MS78FTL
27.11.2005, 23:08
Kein Problem, dafür ist das doch hier ein Supportforum :)

Gruß, Micha