Bonjour tout le monde !

Je suis un gros noob en php et j'ai un petit problème lors de la soumission de mon formulaire de contact, je vous explique :
Lors de la soumission de mon formulaire, les erreurs ainsi que le message de confirmation s'affichent dans une nouvelle page vierge.. or je voudrais tout simplement que les erreurs ou le message de confirmation s'affichent à la place de mon formulaire dans la même page !

Voila mon formulaire en html :

<form name="contactform" method="post" action="sendmail.php" id="reservation">
  <div class="row">
    <div class="span6">
    <SELECT name="a" id="a" onChange="affiche();" >
<?php if ($mavariable == 'salle') // Si
{
    echo "<OPTION disabled >Selectionnez une prestation</OPTION>";
    echo "<option value = 'table'>Réserver une table</option>";
    echo "<option value = 'salle' selected='selected' >Privatiser une salle</option>";
    echo "<option value = 'restaurant'>Privatiser le restaurant</option>";
}else {
    echo "<OPTION disabled selected='selected' >Selectionnez une prestation</OPTION>";
    echo "<option value = 'table'>Réserver une table</option>";
    echo "<option value = 'salle'>Privatiser une salle</option>";
    echo "<option value = 'restaurant'>Privatiser le restaurant</option>";
} ?>
</SELECT>
    </div>
    <div class="span6">
      <?php 
    if ($mavariablebis == 'terrasse'){
     echo "<select name='b' id='b' >";
     echo "<option value = 'terrasse' selected='selected'>Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon'>Privatiser le Salon</OPTION>";
     echo "</select>";
          }else if ($mavariablebis == 'bar'){ // Si
     echo "<SELECT name='b' id='b' >";     
     echo "<option value = 'terrasse' >Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar' selected='selected'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon'>Privatiser le Salon</OPTION>";
     echo "</SELECT>";     
          }else if ($mavariablebis == 'manger'){ // Si
     echo "<SELECT name='b' id='b' >";         
     echo "<option value = 'terrasse'>Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger' selected='selected'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon'>Privatiser le Salon</OPTION>";
     echo "</SELECT>";     
          }else if ($mavariablebis == 'foyer'){ // Si
     echo "<SELECT name='b' id='b' >";
     echo "<option value = 'terrasse'>Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer' selected='selected'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon'>Privatiser le Salon</OPTION>";
     echo "</SELECT>";
          }else if ($mavariablebis == 'salon'){ // Si
     echo "<SELECT name='b' id='b' >";          
     echo "<option value = 'terrasse'>Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon' selected='selected'>Privatiser le Salon</OPTION>";
     echo "</SELECT>";     
          }else if ($mavariablebis == ''){ // Si
     echo "<SELECT name='b' id='b' style='display:none;'>";         
     echo "<option value = 'terrasse'>Privatiser la Terrasse</OPTION>";
     echo "<option value = 'bar'>Privatiser le Bar</OPTION>";
     echo "<option value = 'manger'>Privatiser la Salle à Manger</OPTION>";
     echo "<option value = 'foyer'>Privatiser le Foyer</OPTION>";
     echo "<option value = 'salon'>Privatiser le Salon</OPTION>";
     echo "</SELECT>";     
          }
?>  
    </div>
    <div class="span6">
      <SELECT name="c" id="c" style="display:none;">
        <OPTION VALUE="terrasse">sur la Terrasse</OPTION>
        <OPTION VALUE="bar">au Bar</OPTION>
        <OPTION VALUE="manger">dans la Salle à Manger</OPTION>
        <OPTION VALUE="foyer">dans le Foyer</OPTION>
        <OPTION VALUE="salon">dans le Salon</OPTION>
      </SELECT>
    </div>
  </div>
  <div style="clear:both;"></div>
  <div class="row">
    <div class="span6">
      <input type="text" placeholder="Votre Nom" name="name">
    </div>
    <div class="span6">
      <input type="datetime" placeholder="Date et Heure" name="date">
    </div>
  </div>
  <div class="row">
    <div class="span6">
      <input type="email" placeholder="Adresse Email" name="email">
    </div>
    <div class="span6">
      <input type="text" placeholder="Nombre de convive" name="guests">
    </div>
  </div>
  <div class="row">
    <div class="span12">
      <textarea placeholder="Message" name="message"></textarea>
    </div>
  </div>
  <div class="row">
    <div class="span12 center">
      <input type="submit" value="Envoyer">
    </div>
  </div>
</form>





et voici mon php contenu dans sendmail.php

<?php

$sendto = 'adresse@mail.com';

//        The subject you'll see in your inbox
$subject = 'Réservation Les Pieds Dans L\'eau';

//        Message for the user when he/she doesn't fill in the form correctly.
$errormessage = 'Oops! There seems to have been a problem. May we suggest...';

//        Message for the user when he/she fills in the form correctly.
$thanks = "Merci d'avoir pris contact avec notre restaurant Les Pieds Dans L\'eau, nous traitons votre demande et confirmons celle-ci dans les plus brefs delais. ";

//        Message for the bot when it fills in in at all.
$honeypot = "You filled in the honeypot! If you're human, try again!";

//        Various messages displayed when the fields are empty.
$emptypresta = 'Veuillez selectionner une prestation';
$emptylieu = 'Veuillez un lieu';
$emptyname =  'Entrez votre Nom';
$emptyemail = 'Entrez votre Adresse mail';
$emptydate = 'Selectionnez la date et l\'heure';
$emptyguests = 'Entrez le nombre de convive';
$emptymessage = 'Entrez votre Message';

//       Various messages displayed when the fields are incorrectly formatted.
$alertpresta =  'Utilisez le menu deroulant pour sélectionner une prestation';
$alertlieu =  'Utilisez le menu deroulant pour sélectionner un lieu';
$alertname =  'Entering your name using only the standard alphabet?';
$alertemail = 'Entering your email in this format: <i>name@example.com</i>?';
$alertdate = 'Entering date and time in this format: <i>dd/mm/yy hh:mm</i>?';
$alertguests = 'Entering your guests number using only the standard numbers? Max guests number is 99.';
$alertmessage = "Making sure you aren't using any parenthesis or other escaping characters in the message? Most URLS are fine though!";

// --------------------------- Thats it! don't mess with below unless you are really smart! ---------------------------------

//Setting used variables.
$alert = '';
$pass = 0;

// Sanitizing the data, kind of done via error messages first. Twice is better!
function clean_var($variable) {
    $variable = strip_tags(stripslashes(trim(rtrim($variable))));
  return $variable;
}

//The first if for honeypot.
if ( empty($_REQUEST['last']) ) {

	// A bunch of if's for all the fields and the error messages.
	if ( empty($_REQUEST['name']) ) {
		$pass = 1;
		$alert .= "<li>" . $emptyname . "</li>";
	} elseif ( ereg( "[][{}()*+?.\\^$|]", $_REQUEST['name'] ) ) {
		$pass = 1;
		$alert .= "<li>" . $alertname . "</li>";
	}
	if ( empty($_REQUEST['email']) ) {
		$pass = 1;
		$alert .= "<li>" . $emptyemail . "</li>";
	} elseif ( !eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $_REQUEST['email']) ) {
		$pass = 1;
		$alert .= "<li>" . $alertemail . "</li>";
	}
	if ( empty($_REQUEST['date']) ) {
		$pass = 1;
		$alert .= "<li>" . $emptydate . "</li>";
	} elseif ( ereg( "[][{}()*+?.\\^$|]", $_REQUEST['date'] ) ) {
		$pass = 1;
		$alert .= "<li>" . $alertdate . "</li>";
	}
	if ( empty($_REQUEST['guests']) ) {
		$pass = 1;
		$alert .= "<li>" . $emptyguests . "</li>";
	} elseif ( !eregi("^[0-9]{1}$", $_REQUEST['guests']) ) {
		$pass = 1;
		$alert .= "<li>" . $alertguests . "</li>";
	}
	if ( empty($_REQUEST['message']) ) {
		$pass = 1;
		$alert .= "<li>" . $emptymessage . "</li>";
	} elseif ( ereg( "[][{}()*+?\\^$|]", $_REQUEST['message'] ) ) {
		$pass = 1;
		$alert .= "<li>" . $alertmessage . "</li>";
	}

	//If the user err'd, print the error messages.
	if ( $pass==1 ) {

		//This first line is for ajax/javascript, comment it or delete it if this isn't your cup o' tea.
	echo "<script>$(\".message\").hide(\"slow\").show(\"slow\"); </script>";
	echo "<b>" . $errormessage . "</b>";
	echo "<ul>";
	echo $alert;
	echo "</ul>";

	// If the user didn't err and there is in fact a message, time to email it.
	} elseif (isset($_REQUEST['message'])) {
	    
		//Construct the message.
	    $message = "Le client souhaite réserver : " . $_REQUEST['a']. "\n";
	    $message .= "Salle demandée : " . $_REQUEST['b']. "\n";
	    $message .= "Salle demandée : " . $_REQUEST['c']. "\n";
	    $message .= "Nom : " . clean_var($_REQUEST['name']) . "\n";
		$message .= "Email : " . clean_var($_REQUEST['email']) . "\n";
	    $message .= "Date et heure de réservation : " . clean_var($_REQUEST['date']) . "\n";
	    $message .= "Nombre de convive : " . clean_var($_REQUEST['guests']) . "\n";
	    $message .= "Message : \n" . clean_var($_REQUEST['message']);
	    $header = 'From:'. clean_var($_REQUEST['email']);
	    
//Mail the message - for production
		mail($sendto, $subject, $message, $header);
//This is for javascript, 
		echo "<script>$(\".message\").hide(\"slow\").show(\"slow\").animate({opacity: 1.0}, 4000).hide(\"slow\"); $(':input').clearForm() </script>";
		echo $thanks;

		die();

//Echo the email message - for development
		//echo "<br/><br/>" . $message;

	}
	
//If honeypot is filled, trigger the message that bot likely won't see.
} else {
	echo "<script>$(\".message\").hide(\"slow\").show(\"slow\"); </script>";
	echo $honeypot;
}
?>



Est ce que quelqu'un aurait une idée pour pouvoir faire ca?
D'avance merci Smiley smile
Salut,

Vu la quantité de code, je ne vais pas te corriger tout ici mais je peux déjà te donner le principe.

Le plus simple est d'envoyer ton formulaire vers la même page.
Cette page aura 3 comportements différents :
- Elle affiche le formulaire par défaut
- Elle envoie le mail si elle reçoit des paramètres en POST et affiche un message de confirmation
- Elle affiche le formulaire remplie ainsi que des messages d'erreur si elle reçoit des paramètres en POST mais que l'email ne peut être envoyé.

Dans l'idée, il faut donc que tu "fusionnes" ton fichier sendmail.php avec ta page de formulaire. En réalité, il serait bien que tu fasses des fonctions dans un fichier externalisé, sinon tu risques d'avoir une page de 5000 lignes de code ^^

Bon courage.
arnolem a écrit :
Salut,

Vu la quantité de code, je ne vais pas te corriger tout ici mais je peux déjà te donner le principe.

Le plus simple est d'envoyer ton formulaire vers la même page.
Cette page aura 3 comportements différents :
- Elle affiche le formulaire par défaut
- Elle envoie le mail si elle reçoit des paramètres en POST et affiche un message de confirmation
- Elle affiche le formulaire remplie ainsi que des messages d'erreur si elle reçoit des paramètres en POST mais que l'email ne peut être envoyé.

Dans l'idée, il faut donc que tu &quot;fusionnes&quot; ton fichier sendmail.php avec ta page de formulaire. En réalité, il serait bien que tu fasses des fonctions dans un fichier externalisé, sinon tu risques d'avoir une page de 5000 lignes de code ^^

Bon courage.

+1
Ok, merci arnolem, j'ai compris le principe, ca parait simple quand tu l'explique comme ca, mais je galère toujours! Ce n'est pas grave je vais trouver les soluces!
Merci de t'être penché sur le problème en tout cas Smiley smile