bei submit neue seite öffnen

tantebootsy

Erfahrenes Mitglied
Hi,
nachdem ich nun wieder lange genug rumgesucht habe und keine antwort fand hier ne frage die für nen PHP-Prof kein Problem sein dürfte, schätze ich jetzt mal:

ich habe nach diesem tutorial ein Kontaktformular eingerichtet, was jetzt auch funktioniert.
Nun öffnet das Script aber eine völlig unformatierte Seite, wenn die Nachricht verschickt / nicht verschickt wurde.

Ich hätte gern, dass entweder ein kleines PopUp aufgeht und den User darüber informiert, ob das Versenden erfolgreich war.
Hier im Forum habe ich gesehen, dass das mit echo '<script language=javascript> window.open(......)</script> gehen soll, funktioniert aber nicht.

Oder dass nach dem Verschicken unter dem Formular eine Zeile erscheint wie "erfolgreich versendet" + die Felder des Formulars wieder leer sind oder eben "überprüfen Sie ihre Angaben nochmal", wenn nicht erfolgreich + die Felder sind noch ausgefüllt.
Ich kenne mich überhaupt nicht mit PHP aus und habe leider keine passende Lösung finden können.

Kann mit einer von Euch weiterhelfen? Bidde, bidde, bidde! :-)

Gruß,
Micha
 
Zuletzt bearbeitet:
Im Form-Tag musst du mit Hilfe eines onSubmit()-Events erstmal dein Popup öffnen:
Code:
<form ... onSubmit="window.open('', 'target (Ziel)', 'width=200,height=200');">
Dabei ist der zweite Parameter ("target" -> "Ziel") besonders wichtig. Dann musst du im Form-Tag noch ein Ziel angeben. Bsp.:
Code:
<form action="datei.php" target="popup" method="post" onSubmit="window.open('', 'popup', 'width=200, height=400');">
Wird das Formular abgeschickt, öffnet sich ein neues Fenster in welches dann das Formular gepostet wird. Da kannst du dann auch normale Fehlermeldungen per PHP ausgeben lassen ( echo()-Befehl ).
 
Hallo
Es gibt auch eine andere Möglichkeit:
Du kannst beim Body-Tag eine php variable einsetzen: <? echo("$onload")?>
Diese Variable setzt du am Anfang auf null, dass heisst: $onload = "";
Wenn jetzt der Benutzer etwas falsch eingegeben hat und auf submit drückt, kannst du der Variable $onload einen anderen Wert geben, z.B.: $onload='onload="error()"';
Jetzt musst du nur noch im head Bereich ein Popup Fenster mit JavaScript definieren, in welchem du dann die Fehlermeldung ausgeben kannst.
Wenn das Formular gesendet wurde, kannst du der Variable $onload dann einfach ein anderes PopUp Fenster zuweisen, wie z.B.: $onload='onload="danke()";

Ich hoffe, dass ich dir weiter helfen konnte. Ist zwar eine recht komplizierte Lösung, funktioniert aber :-)

Gruss Jonas
 
Morgen!
@split: Danke, aber da ich HTML strict verwende, kann ich das Attribut "target" leider nicht verwenden. Außerdem wäre ja immer das gleiche Fenster aufgegangen, egal, ob die Mail nun versendet wurde oder nicht.

@webdesign: Deine Lösung hört sich vielversprechend an, hat aber noch nicht ganz funktioniert. Ich bekome immer einen "parse error in line 53", also dort, wo das Script eigentlich schon zu Ende ist... worauf deutet das hin?
Hier mein Code, wie er jetzt aussieht, deine Vorschläge sind fett:

<html>
<head>
<title>Kontakt-Formular</title>

<script type="text/javascript">
<!--
function error()
{ window.open('error.htm','fehler');
}
function danke()
{ window.open('danke.htm','ok');
}

//-->
</script>
</head>
<body <? echo("$onload")?> >

<?php

$onload = "";

if($abschicken)
{
if(empty($name) || empty($email) || empty($text))
{
$onload='onload="error()"';
}
else
{
while(list($feld,$wert)=each($HTTP_POST_VARS))
{
if($feld!="abschicken")
{
$mailnachricht.=ucfirst($feld).": $wert\n";
}
}
$mailnachricht.="\nDatum/Zeit: ";
$mailnachricht.=date("d.m.Y H:i:s");
$mailbetreff="Betreff: ";
$mailbetreff.=$HTTP_POST_VARS[betreff];
mail("mb@mistaboo.de", $mailbetreff, $mailnachricht, "From: $email");
$onload='onload="danke()";
}
}
else
{
echo "Ein Fehler ist aufgetreten.";
}

?>

</body>
</html>

Ich sehe, dass man mit PHP anscheinend sehr viel machen kann, was mich schon begeistert, leider habe ich z.Zt. nicht die Zeit / den Nerv mich da reinzuarbeiten. Könntest Du mir also nochmal helfen, wo der Fehler liegt?
Danke,
Micha
 
Ich weiss nicht ganz genau was bei dir falsch ist, vielleicht hier:

$mailnachricht.="\nDatum/Zeit: ";
$mailnachricht.=date("d.m.Y H:i:s");
$mailbetreff="Betreff: ";
$mailbetreff.=$HTTP_POST_VARS[betreff];
mail("mb@mistaboo.de", $mailbetreff, $mailnachricht, "From: $email");
$onload='onload="danke()";

Versuche es mal so:
$date=' date("d.m.Y H:i:s")';

$mailnachricht='\nDatum/Zeit:"$date"';
$mailbetreff='Betreff:"$HTTP_POST_VARS[betreff]" ';
mail("mb@mistaboo.de", $mailbetreff, $mailnachricht, "From: $email");
Hier hast du noch ein ' vergessen.
$onload='onload="danke()"';

Vielleicht lag es daran.
Ich hoffe ich konnte dir helfen. Leider habe ich zur Zeit auch nicht sehr viel Zeit und darum kann ich dir nicht versprechen in den nächsten par Tagen schnell zu antworten.

Gruss Jonas
 
..War okay, dass Du keine Zeit mehr hattest, ich hab dann im PHP-Forum nachgefragt. Da hat mir einer einen Link zu diesem Tutorial gegeben. Is sehr genau beschrieben und wunderbar! :-) Danke für die Hilfe,
MIcha
 
Zurück