Bonjour,
J'ai un petit soucie que je n’arrive pas a résoudre
j'ai un formulaire en html bootstrap sur une page qui s’appelle index.php
le formulaire marche trés bien mais je voudrais avoir les réponse du formulaire sur la même page
Je bloque un peut

					<form class="wrap-form-booking" id="reused_form" name="index" method="post" action="send_form_email.php">
						<div class="row">
							<div class="col-md-6">
								<!-- Date -->
								<span class="txt9">
									Date
								</span>

								<div class="wrap-inputdate pos-relative txt10 size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<input class="my-calendar bo-rad-10 sizefull txt10 p-l-20" type="text" name="date">
									<i class="btn-calendar fa fa-calendar ab-r-m hov-pointer m-r-18" aria-hidden="true"></i>
								</div>

								<!-- Time -->
								<span class="txt9">
									heure
								</span>

								<div class="wrap-inputtime size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<!-- Select2 -->
									<select class="selection-1" name="time">
										<option>0</option>
										<option value="10:30">10:30</option>
										<option value="11:00">11:00</option>
										<option value="11:30">11:30</option>
										<option value="12:00">12:00</option>
										<option value="12:30">12:30</option>
										<option value="13:00">13:00</option>
										<option value="13:30">13:30</option>
										<option value="14:00">14:00</option>
										<option value="14:30">14:30</option>
										<option value="15:00">15:00</option>
										<option value="15:30">15:30</option>
										<option value="16:00">16:00</option>
										<option value="16:30">16:30</option>
										<option value="17:00">17:00</option>
										<option value="17:30">17:30</option>
										<option value="18:00">18:00</option>
										<option value="18:30">18:30</option>
										<option value="19:00">19:00</option>
										<option value="19:30">19:30</option>
										<option value="20:00">20:00</option>
										<option value="20:30">20:30</option>
										<option value="21">21:00</option>
									</select>
								</div>

								<!-- People -->
								<span class="txt9">
									Personne(s)
								</span>

								<div class="wrap-inputpeople size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<!-- Select2 -->
									<select class="selection-1" name="people">
										<option>0</option>
										<option value="1">1 Personne</option>
										<option value="2">2 Personnes</option>
										<option value="3">3 Personnes</option>
										<option value="4">4 Personnes</option>
										<option value="5">5 Personnes</option>
										<option value="6">6 Personnes</option>
										<option value="7">7 Personnes</option>
										<option value="8">8 Personnes</option>
										<option value="9">9 Personnes</option>
										<option value="10">10 Personnes</option>
										<option value="11">11 Personnes</option>
										<option value="12">12 Personnes</option>
									</select>
								</div>
							</div>

							<div class="col-md-6">
								<!-- Name -->
								<span class="txt9">
									Nom
								</span>

								<div class="wrap-inputname size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="name" placeholder="Nom" required>
								</div>

								<!-- Phone -->
								<span class="txt9">
									Tel
								</span>

								<div class="wrap-inputphone size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="phone" placeholder="Tel" required>
								</div>

								<!-- Email -->
								<span class="txt9">
									Email
								</span>

								<div class="wrap-inputemail size12 bo2 bo-rad-10 m-t-3 m-b-23">
									<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="email" placeholder="Email" required>
								</div>
							</div>
						</div>
							
						<div class="wrap-btn-booking flex-c-m m-t-6">
							<!-- Button3 -->
							<input type="submit" value="envoyer">
						</div>
						
					
					</form>



<?php
if(isset($_POST['email'])) {
 
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "leohnira31130@gmail.com";
    $email_subject = "Your email subject line";
 
    function died($error) {
        // your error code can go here
        echo "Nous sommes désolés, mais des erreurs ont été détectées dans le formulaire que vous avez envoyé.";
        echo "Des erreurs apparaissent ci-dessous.<br /><br />";
        echo $error."<br /><br />";
        echo "S'il vous plaît et corrigez ces erreurs.<br /><br />";
        die();
    }
 
 
    // validation expected data exists
    if(!isset($_POST['date']) ||
        !isset($_POST['time']) ||
        !isset($_POST['people']) ||
        !isset($_POST['name']) ||
        !isset($_POST['phone']) ||
        !isset($_POST['email'])) {
        died('Nous sommes désolés, mais le formulaire que vous avez soumis semble poser problème.');       
    }
 
     
 
    $name = $_POST['name']; // required
    $people = $_POST['people']; // required
    $email = $_POST['email']; // required
    $phone = $_POST['phone']; // not required
    $time = $_POST['time']; // required
    $date = $_POST['date']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
 
  if(!preg_match($email_exp,$email)) {
    $error_message .= 'Ladresse e-mail que vous avez entrée ne semble pas être valide..<br />';
  }
 
    $string_exp = "/^[A-Za-z .'-]+$/";
 
  if(!preg_match($string_exp,$name)) {
    $error_message .= 'Le nom que vous avez entré ne semble pas être valide.<br />';
  }
 
  if(strlen($phone) < 0) {
    $error_message .= 'Le numero que vous avez entré ne semble pas être valide.<br />';
  }
 
  if(($people) < 1) {
    $error_message .= 'Le nombre de personnes que vous avez entré ne semble pas être valide.<br />';
  }

  if(($time) < 1)  {
    $error_message .= 'L heure que vous avez entré ne semble pas être valide.<br />';
  }

  if(strlen($date) < 0) {
    $error_message .= 'La date que vous avez entré ne semble pas être valide.<br />';
  }

  if(strlen($error_message) > 0) {
    died($error_message);
  }
 
    $email_message = "Form details below.\n\n";
 
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
 
     
 
    $email_message .= "name: ".clean_string($name)."\n";
    $email_message .= "people: ".clean_string($people)."\n";
    $email_message .= "email: ".clean_string($email)."\n";
    $email_message .= "phone: ".clean_string($phone)."\n";
    $email_message .= "time: ".clean_string($time)."\n";
    $email_message .= "date: ".clean_string($date)."\n";
 
// create email headers
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>
 
<!-- include your own success html here -->
 
Merci de nous contacter. Nous vous contacterons très bientôt.
 
<?php
 
}
?>


si une personne pourrais m'aider ce serais vraiment sympa
Mon seul problème et que quand je clique sur envoyer ça me change de page.
action="send_form_email.php"

cette action pour appeler la fonction php me fais changer de page
et donc le fichier php est nommer : send_form_email.php
je précise que je débute sur php
Cordialement
Modifié par leoh (07 Jan 2019 - 11:07)
Modérateur
Bonjour,

Pour rester sur la même page, il faut que l'attribut "action" contienne le nom du fichier de la page de départ, pas le nom d'un fichier affichant une autre page.

La technique à suivre est la suivante :

En début de page (du coup, tu n'as plus qu'un seul script), tu testes si l'utilisateur vient d'arriver ou pas (en regardant par exemple si il y a quelque chose dans $_POST).

Si c'est un premier affichage, tu affiches ton formulaire comme tu le fais déjà.

Sinon, tu affiches un message de ton choix pour l'utilisateur, avec éventuellement à nouveau le formulaire, mais pré-rempli avec les réponses précédentes de l'utilisateur (que tu vas récupérer dans les $_POST), au cas où tu demandes des modifications à l'utilisateur.

EDIT4: exemple minimaliste ci-dessous
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0,user-scalable=yes">
</head>
<body>
<?php
if (isset($_POST['name'])) {
	// l'utilisateur a déjà soumis le formulaire
	$name = $_POST['name'];
	$email = $_POST['email'];
}
else {
	$name = "";
	$email = "";
}
$error_message = "";
if ($name) {
	// l'utilisateur a déjà soumis le formulaire
	$string_exp = "/^[A-Za-z .'-]+$/";
	if(!preg_match($string_exp,$name))
		$error_message .= "Le nom que vous avez entré ne semble pas être valide.<br />";
	$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
	if(!preg_match($email_exp,$email))
		$error_message .= "L'adresse e-mail que vous avez entrée ne semble pas être valide.<br />";
}
?>

<?php if (!$name || $error_message) {
// l'utilisateur n'a pas déjà soumis le formulaire
// => on affiche le formulaire vierge 
// ou bien il l'a soumis mais avec des erreurs
// => on affiche le formulaire pré-rempli avec les réponses précédentes
?>

	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
		<input name="name" type="text" placeholder="Nom" value="<?php echo $name;?>" required>
		<input name="email" type="text" placeholder="Email" value="<?php echo $email;?>" required>
		<input type="submit" value="OK">
	</form>

<?php }
// sinon (formulaire soumis sans erreur), on n'affiche pas le formulaire
?>

<?php
if ($name) {
	// l'utilisateur a déjà soumis le formulaire
	// on affiche un message en bas de page
	// s'il y avait des erreurs, on affiche le message d'erreur
	// sinon, on affiche un message d'au revoir
	if ($error_message) echo $error_message;
	else echo "Merci pour votre message. Nous vous contacterons très bientôt.";
}
?>
</body>
</html>

Amicalement,
Modifié par parsimonhi (07 Jan 2019 - 12:49)
Modérateur
Bonjour,

En complément de la réponse de Parcimonhi qui privilégie ici un modèle dit "one-page" (tout sur la même page).

Le modèle one-page est idéal pour de petits formulaires. Il présente l'avantage d'avoir tout ce qui est relatif à celui-ci au même endroit, facilitant grandement la maintenance.

Néanmoins, dans le cas de formulaires beaucoup plus complets et complexes, la lecture du code peut devenir très compliquée (imaginez 30 champs avec tous des caractéristiques différentes et donc des processus de validation tout autant différents).

En ce cas, séparer le formulaire de son traitement - traitement qu'on pourra même ensuite diviser en classes/fonctions - peut s'avérer judicieux.

Pour ce faire c'est tout aussi facile.
En effet, dans votre formulaire vous définissez le fichier action chargé du traitement (send_form_email.php).
Dans ce fichier vous y incluez tout votre php (liste non exhaustive):
- récupération, assainissement et normalisation des cookies
- inclusion des classe et fonctions externes
- traitement des données
- préparation des résultats
etc
Ensuite pour obtenir l'affichage du résultat de la soumission de la requête dans votre formulaire, vous préparez dans ce fichier de traitement un/des cookies/s contenant ce que vous souhaitez faire afficher (ou alors des marqueurs on/off par ex).
Vous clôturez ce fichier de traitement par une redirection vers la page d'appel (votre formulaire).
Enfin, dans votre formulaire, en en-tête vous vérifiez l’existence et le contenu du cookie sensé être créé durant le traitement puis, avisez en fonction (afficher le formulaire, afficher un résultat, afficher les deux etc et c'est Terra).


En somme, deux façon de faire. Voyez ce avec quoi vous êtes plus à l'aise et ce qui vous semble le plus approprié.
Smiley smile
Modifié par Greg_Lumiere (31 Jan 2019 - 09:15)