2010-12-13 56 views
0

Ce que j'ai en ce moment, c'est un formulaire avec des champs de saisie simples tels que le nom, le numéro de téléphone, l'email, et le commentaire.Comment puis-je actualiser la page lorsqu'un formulaire est envoyé et envoyer un message d'erreur?

<div id="specialsForm"><h3>Interested in this coupon? Email us! </h3>   
<form method="post" action="emailMonthlySpecials.php">  
Name: <input name="name" type="text" /><br /> 
Email: <input name="email" type="text" /><br /> 
Phone Number: <input name="phone" type="text" /><br /><br /> 
Comment: <br/> 
<textarea name="comment" rows="5" cols="30"></textarea><br /><br /> 
<input type="submit" value="Submit Email"/> 
</form></div> 

Dans mon emailMonthlySpecials.php je le code suivant:

$name = $_REQUEST['name'] ; 
    $email = $_REQUEST['email'] ; 
    $phone = $_REQUEST['phone'] ; 
    $comment = $_REQUEST['comment'] ; 

    if(!empty($name) && (!empty($email) || !empty($phone))) { 
    mail("[email protected]", "Monthly Specials Email", 
    "Name: $name 
    Email: $email 
    Phone Number: $phone 
    Comment: $comment", "From: $email"); 

    } else { 
    echo '<span class="error">A name, comment, phone number/email is required</span><br />'; 
    }; 

Il va à une nouvelle page et affiche l'erreur (si elle existe) et sinon il va à une page blanche (Je sais comment le faire aller à une page de remerciement, mais il doit être conservé sur sa page actuelle) Il fonctionne avec l'envoi de l'information à l'email.

J'ai essayé

header("Location: ".$_SERVER["PHP_SELF"]); 

Et cela n'a pas fonctionné .. Toutes les idées?

+0

Ne pas actualiser en cas d'erreur –

+0

Comment puis-je l'empêcher de passer à la page blanche? Parce que si je ne le dirige pas quelque part il va juste à une page blanche, mais envoie toujours des emails correctement – Chris

+0

Ne pas afficher la page blanche, mais plutôt la même page avec le formulaire rempli. Faites tout sur la même page –

Répondre

1

Demandez la page qui affiche la forme soit également lorsque le formulaire est soumis. En cas d'erreur, la page peut simplement continuer et afficher à nouveau le formulaire. c'est à dire.

contact.php (code pseudo)

<? 

if ([form submitted]) { 

    if ([fields filled out correctly]) { 
     [send mail] 
     header('location: thankyou.php'); 
    } else { 
     $error = 'error message'; 
    } 

} 

?> 

<span class="error"><?=$error;?></span> 
<form method="post" action="contact.php"> 
    [field] 
</form> 

Vous pouvez également utiliser réoriente, mais vous aurez besoin de stocker le message dans $_SESSION variables pour le porter à l'autre page.

+0

'Avoir la page qui affiche le formulaire aussi être où le formulaire est soumis '- pour ce faire, il suffit de laisser l'action du formulaire vide –

+0

Merci! Qu'est-ce que j'écris pour m'assurer qu'il a été envoyé? Dans cette zone: if ([formulaire soumis]) – Chris

+0

Attribuez un attribut 'name' au bouton submit (par exemple, et cochez: if (array_key_exists ('send_email', $ _POST)) {} – RDL

-2

Si vous souhaitez rediriger à l'appelant, alors vous devez écrire ceci:

header("Location: ".$_SERVER["REQUEST_URI"]); 
+0

Ils ont toujours besoin du message d'erreur sur la page d'origine si. – RDL