Page 1 sur 1

Formulaire, liaison entre deux listes déroulantes

Posté : 15 juin 2015, 11:44
par luMA
Bonjour,
J'ai une liste "départements" et une liste "communes" je souhaite que lorsqu'on click sur un département, la liste communes se modifie pour qu'on voit juste les communes du départements choisi

Mes formulaires sont reliés a une base de données phpmyadmin
Je ne sais pas utiliser le java alors j'ai fais des boutons submit a la place ( niveau résultat c'est moins classe)

mais je ne sais pas comment faire pour appeler ma variable $dept_choisi dans ma requête sql pour ma deuxième liste des communes.
<!-- CREATION DU FORMULAIRE DEPARTEMENTS -->
	<DIV id="formulaire_departement" >
	<LABEL> Départements:</label>
		<FORM name="form" id="form" action="formulaire.php" method="post">
		<select name="liste">
						<option value = 0> Choisir un département </option>
						
		
		
	
				<?php
						$bdd = new PDO('mysql:host=localhost;dbname=******;charset=utf8', 'root', '') or
						die("Impossible de se connecter : " . mysql_error());
				
						
						
						$reponse=$bdd -> query('SELECT * FROM liste_departement');
						
						while ( $donnees =$reponse -> fetch())
						{
						echo'<option selected="'.$donnees['value'].'">'.$donnees['DEPARTEMENT'].'</option>';
						} 
					
						
						?>
						
						<INPUT type="submit" name="valider" value="valider"><BR/>
						<?php
						
						
						if(isset($_POST['valider'])){
						//RECUPERATION DU NOM SAISI
						$dept_choisi=$_POST['liste']; 
						echo $dept_choisi;
						}
		                ?>
		
		
		<!-- CREATION DU FORMULAIRE COMMUNES -->
	 	<DIV id="formulaire_communes" >
	<LABEL> Communes:</label><center>
		<FORM name="form2" id="form2" action="formulaire.php" method="post">
	
				<?php
						$bdd = new PDO('mysql:host=localhost;dbname=*******;charset=utf8', 'root', '') or
						die("Impossible de se connecter : " . mysql_error());
						
							

				?>
						<select name="liste2">
						<option value = 0> Choisir une commune </option>
				<?php
						$reponse2=$bdd -> query('SELECT * FROM liste_commune WHERE DEPARTEMENT ='<?php$dept_choisi?>'');
						
						while ( $donnees2 =$reponse2 -> fetch())
						{
						 echo'<option value="'.$donnees2['value'].'">'.$donnees2['NOM'].'</option>';
						} 
						;
				?>			

						</select>
		</FORM></center>

Re: Formulaire, liaison entre deux listes déroulantes

Posté : 15 juin 2015, 12:21
par tof73
$reponse2=$bdd -> query("SELECT * FROM liste_commune WHERE DEPARTEMENT ='$dept_choisi'");

apres une liste deroulante de 900 communes, c'est discutable sur le plan ergonomique.

Re: Formulaire, liaison entre deux listes déroulantes

Posté : 15 juin 2015, 12:24
par Ryle
Bonjour,

Tu trouveras dans la FAQ un tutoriel qui devrait t'aider pour la gestion de listes liées :

Formulaires : Listes déroulantes dynamiques liées

Re: Formulaire, liaison entre deux listes déroulantes

Posté : 15 juin 2015, 15:25
par luMA
Merci pour les réponses mais tof73 ta correction ne marche malheureusement pas et le tuto sur les listes déroulantes est parfait c'est exactement ce que je veux mais c'est une vieille version de php.. je suis avec wampserver avec apache 2.4.9
Ca veut dire que pratiquement toutes les fonctions qui commencent par mysql sont obsolètes.

donc je commence à perdre espoir!

Re: Formulaire, liaison entre deux listes déroulantes

Posté : 15 juin 2015, 16:30
par Ryle
c'est une vieille version de php.. je suis avec wampserver avec apache 2.4.9
Ca veut dire que pratiquement toutes les fonctions qui commencent par mysql sont obsolètes.
Nan mais ça c'est parce que l'auteur du tuto était déjà lui même vieux et obsolète à l'époque :langue: (aïe, non, patapé, patapé !!)

Plus sérieusement, effectivement, les fonction mysql_* ne sont plus utilisées, mais tu peux aisément remplacer ces fonctions en ajoutant un "i", ou en les passant sur PDO. Ce n'est au final que l'exécution des requêtes SQL qui change, par le principe de mise à jour dynamique des listes déroulantes ;)