Formulaire interactif

roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -  
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis sur un projet de développement de site web pour réservation de billet d'avion en ligne.

J'ai réalisé sur la première page un formulaire où le client choisira les critères de son vol, il précisera les nombre d'enfants et d'adultes, ensuite après avoir réservé son vol il sera redirigé vers un formulaire de renseignement d'identité et c'est là que mon problème survient :

J'ai réalisé sur cette nouvelle page un formulaire de renseignement d'identité, donc il n'y a aucun problème si le client est seul à voyager, en revanche si il veut réserver des billets pour plusieurs personnes, le formulaire doit être multiplié par le nombre de passagers afin d'avoir les renseignements d'identités de chacun d'eux.

Le nombre de passagers est récupéré sur la première page et il est stocké dans des variables SESSION afin de pouvoir les utilisées dans les pages suivantes

J'aimerais donc savoir comment puis-je réaliser cela
Peut-être est-ce du PHP ? Oui mais comment coder cela ?

Merci d'avance

5 réponses

blackduck Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   96
 
Salut,

Le plus simple vu que tu gardes la variable serait que tu mettes dans une fonction (par exemple) le code qui génère les champs d'information nécessaires, et lors du chargement du formulaire tu mettes une boucle avec comme nombre d'itération le nombre de passager et que tu mettes ta fonction (ou bloc de code si tu préfères) à l'intérieur, les champs d'information seront donc générés plusieurs fois.
0
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
 
SI je comprend bien, je dois créer une fonction qui crée un formulaire et ensuite faire une boucle avec cette fonction ?
0
blackduck Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   96
 
En fait je pense qu'il est plus pratique de sortir les balises <form> de la fonction et uniquement mettre les champs nécessaires au formulaire pour que lorsque la personne éditera les informations des différentes personnes il n'appuie qu'une seule fois sur la bouton "valider".

Par exemple :

function champsInput($cpt){
     echo "Prenom : <input type='text' name='prenom$cpt'>";
     echo "Nom: <input type='text' name='nom$cpt'>";
}

...

echo "<form name='form1'>";
for($i=0;$i<$nb_passager;$i++){
     champsInput($i);
}
echo "<input type='submit' name='valider'>";
echo "</form>";


Après tu peux l'améliorer en fixant des condition, si $i==0 alors c'est le premier passage donc tu peux affiche la balise form à ce moment , et si $i==nb_passager-1 alors c'est le dernier passage et tu peux mettre la balise input submit et fermer la balise form.

En espérant t'avoir aidé


EDIT : Ajout du LANGAGE dans les balises de code
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Pour faire du "dynamique" , tu pourrais tout aussi bien utiliser du javascript.
Et donc.. pas besoin de changer de page....

Par exemple
<?php
//traitement du submit:
if(isset($_POST['valider'])){
 $arrNom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
 $arrPreNom = isset($_POST['prenom']) ? $_POST['prenom'] : NULL;
 
  Echo " <br> Liste des voyageurs :"; 
  for($i=0;$i<count($arrNom);$i++){
	 echo "<pre> Nom : ".$arrNom[$i] . "  Prenom : ".$arrPreNom[$i] . "</pre>";
	}
  
}

?>

<!doctype html>
<html lang="fr">
<head>
 <meta charset="UTF-8">
 <title> Formulaire Dynamique </title>
</head>
<body>

<script type="text/javascript">
 function genereInputs(){
  var nb = parseInt(document.getElementById('nb_voyageurs').value);
	var list = document.getElementById('liste_inputs');
	var newChamps = " <p><label> Nom:</label><input type='text' name='nom[]'> <label> Prenom:</label><input type='text' name='prenom[]'></p>";
  if(nb !='' && nb>0){
	 
	 for(var i=1;i<=nb;i++){ 
	   list.innerHTML += newChamps
	 }
	}
 }
</script>


  <div id="infos" style="margin-top:20px;padding:8px;border: 1px solid blue; width:250px;">
   <label> Nombre de voyageurs :</label>
	 <input type="text" id="nb_voyageurs" value="" style="width:20px;">
	 <input type="button" onclick="genereInputs();" value="GO !">
  </div>

  <div id="formulaire" style="margin-top:20px;min-height:80px;">
	 <span> LISTE DES VOYAGEURS </span>
   <!-- Formulaire -->
   <form action="" method="POST" name="monform">
    <div id="liste_inputs" style="padding:10px;border: 3px solid grey;" >
   
	  </div>
		<input type="submit" name="valider" value="valider">
   </form>
  </div>
 </body>
</html>

0
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
 
Bonjour,

J'ai préféré utiliser ta méthode car je maitrise mieux le PHP que le Javascript, en revanche j'ai du mal à comprendre les variables "$cpt" qui se trouvent dans les balises <input>

De même pour le "$i" qui se trouve dans l'appel de la fonction "champsInput($i)"
0
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
 
Je viens de comprendre les variables "$cpt" et "$i" en revanche pour le traitement des formulaires j'ai fais sur une autre page la récupération des champs des formulaires afin de les insérer dans ma base de données

J'ai pensé au code suivant mais malheureusement ça ne fonctionne pas :

<?php	session_start();		
			
			require_once('connect.php');
					
			
			for ($i = 1; $i <= $_SESSION['adultes'] + $_SESSION['enfants']; $i++)
				{
					
				$_SESSION['titre$i'] = $_POST['titre$i']; 

				$_SESSION['prenomt$i'] = $_POST['prenom$i'];
				
				$_SESSION['nom$i'] = $_POST['nom$i'];
				
				$_SESSION['jour$i'] = $_POST['jour$i'];
				
				$_SESSION['mois$i'] = $_POST['mois$i'];
				
				$_SESSION['annee$i'] = $_POST['annee$i'];
				
				$_SESSION['CI$i'] = $_POST['CI$i'];
					
				$_SESSION['mail$i'] = $_POST['mail$i'];
					
				$_SESSION['tel_portable$i'] = $_POST['tel_portable$i'];
					
				$_SESSION['tel_fixe$i'] = $_POST['tel_fixe$i'];
					
				}

?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blackduck Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   96
 
Hello,

Ca à l'air d'avancer ;) , quand tu dis que tu n'arrives pas à les récupérer que veux tu dire exactement? Tu appelles les variables $_SESSION et tu n'arrives pas à récupérer les valeurs?
0
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
 
En fait le dernier formulaire sincère bien dans ma base de données en revanche pas ceux d'avant
0