2012-08-13 4 views
0

J'ai une page html avec une soumission de formulaire php, il est très basique .. ce que je cherche à faire est de plein droit maintenant il soumet, puis va à une page blanche avec les mots « merci » etc, mais ce que je Je cherche à faire est lorsque l'utilisateur soumet le formulaire, il apparaît une fenêtre ou une boîte à lumière qui dit "merci de soumettre". Comment puis-je atteindre cet objectif? Voici le code html du formulaire, et le code php réel pour le soumettre.Soumission de formulaire Php - message «merci» sur la même page plutôt que sur une autre page?

code html:

 <form method="post" action="includes/buy.php"> 
     <h2> Sizes: </h2><select name="sizes"><option value="1">1</option></select> 
     <h2> Email: </h2><input type="text" name="email" /> 
     <input type="hidden" value="black" name="color" /> 
     <input type="image" value="submit" src="images/buynow.jpg" /> 
     </form> 

php Code de soumission de formulaire:

<?php 
if(isset($_POST['email'])) { 

$email_to = " "; 
$email_subject = "subject line here"; 


function died($error) { 
echo "We're sorry, but there's errors found with the form you submitted.<br /><br />"; 
echo $error."<br /><br />"; 
echo "Please go back and fix these errors.<br /><br />"; 
die(); 
} 

if(!isset($_POST['email'])) { 
died('We are sorry, but there appears to be a problem with the form you submitted.');  
} 

$email_from = $_POST['email']; 
$color = $_POST['color']; 
$sizes = $_POST['sizes']; 


$error_message = ""; 
$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
if(!preg_match($email_exp,$email_from)) { 
$error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
} 

if(strlen($error_message) > 0) { 
died($error_message); 
} 
$email_message = "Form details:\n\n"; 

function clean_string($string) { 
$bad = array("content-type","bcc:","to:","cc:","href"); 
return str_replace($bad,"",$string); 
} 

$email_message .= "Email: ".clean_string($email_from)."\n"; 
$email_message .= "Size: ".clean_string($sizes)."\n"; 
$email_message .= "Color: ".clean_string($color)."\n"; 



// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 
?> 

<?php 
} 
die(); 
?> 
+0

Vous pourriez vouloir regarder en faisant un appel ajax. Pour quelque chose d'un peu plus facile, vous pouvez simplement rediriger vers cette page avec un message spécial – robbieAreBest

Répondre

2

Je vous suggère d'utiliser AJAX. Voici un exemple:

HTML:

<form name="yourForm" action=""> 
    <input type="text" name="field1" /> 
    <input type="text" name="field2" /> 
    <input type="submit" class="formSubmit" /> 
</form> 

JavaScript (jQuery):

$('.formSubmit').on('click', function() { 
    var field1 = $('input[name=field1]').val(); 
    var field2 = $('input[name=field2]').val(); 
    $.ajax({ 
     type: 'POST'; 
     url: 'yourPHPScript.php?f1='+ field1 +'&f2='+ field2; 
     success: function(result) { 
      alert(result); 
     } 
    }); 
}); 

PHP:

// proccess the data 
die('successful'); 

Dans le fichier PHP: si quelque chose ne va pas, juste die() ce résultat et il affiche un alert().

2

Si vous voulez faire cela sans une charge de page (par exemple à l'aide de dialogue ou similaire pop-up), vous auriez besoin à regarder en utilisant AJAX. Toutefois, si un rechargement de la page est correct, vous pouvez simplement utiliser la page en cours comme cible du formulaire de page et traiter le formulaire dans le même script.

+0

Merci! J'aurais aimé pouvoir choisir ça et l'autre gars comme réponses, vous êtes tous les deux la même idée, mais merci! –

0

Si vous êtes heureux avec elle apparaître dans une fenêtre séparée, vous pourriez avoir la cible de votre formulaire mis à _NEW ou _blank. Une meilleure solution consiste à utiliser javascript pour soumettre le formulaire en utilisant AJAX, puis en affichant le résultat dans la page.

Lors de l'utilisation de JavaScript avec AJAX, il peut être sage de se pencher sur jQuery, en particulier jQuery.post.

0

Si vous voulez lier un PHP rapide et facile à un autre fichier .php

vous pouvez faire quelque chose comme

<?php 
    echo $_POST['field1']; 
?> 

devait lire ce rapide de mon téléphone je suis en classe, mais espère que cela aide

Questions connexes