Contenu d'un champ déroulant suivant la value d'un autre champ

Résolu/Fermé
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 - Modifié par pulls le 27/06/2013 à 12:17
Ysabe_l Messages postés 12454 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 23 avril 2024 - 28 juin 2013 à 12:56
Bonjour,

j'ai 2 champs déroulant dans mon formulaire, Ville et Zone. Les données de ces champs viennent d'une bdd mysql. Je voudrais que dans mon champ zone ( A,B,C,D,....), je n'ai que les zones de la ville que j'ai selectionné dans le champ ville.

Je n'arrive pas à mettre cette référence dans ma clause WHERE de SQL suivant:

 $req = "SELECT * FROM zone WHERE ville='? ' ";


Je vous prie de m'aider

merci

5 réponses

pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
27 juin 2013 à 12:37
J'ai essayé ceci, mais ça ne marche pas.

 $req = "SELECT * FROM zone WHERE ville='<script>document.getElementById('villeccial').value</script>' ";


Cordialement
0
Ysabe_l Messages postés 12454 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 23 avril 2024 274
27 juin 2013 à 15:21
Bonjour,

Alors il faut que tu récupères la valeur choisie du champ "ville" dans une variable, mettons la variable $ville_selec, pour ça tu vas utiliser le onChange sur ta liste déroulante des villes.

Ensuite pour n'afficher que les zones de la bonne ville tu feras la requête $req = 'SELECT * FROM zone WHERE ville = $ville_selec';
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
27 juin 2013 à 16:19
Bonjour Ysabe_l,

J'ai compris ton idée, mais je ne sais comment la mettre en pratique. Je vais donner qu'elle valeur à la variable $ville_select ? comment est ce que je vais utiliser cette variable php dans un code javascript?

Je te prie d'être un peu plus explicite.

Cordialement
0
qu'elle valeur à la variable $ville_select ? comment est ce que je vais utiliser cette variable php dans un code javascript?

Salut,

la valeur c'est du dynamique et vous utilisez javascript où il ne peut pas être utilisé: Javascript fonctionne sur l'ordinateur de l'internaute(client/local) et ne communique pas avec la base de données, pour ça il faut utiliser PHP sinon tout le monde s'en passerait de PHP XD.
PHP et javascript ne fonctionne pas ensemble (sauf lors de rares exception qu'il est peu utile de détailler pour le fonctionnement standard que vous voulez), à la limite javascript n'a aucun intérêt dans votre code puisque ce que vous voulez c'est une requête; au lieu d'utiliser une variable javascript faites la même variable en PHP: CQFD(formulaire en POST ou GET)

Tout y est dans le mesage d'Ysabe_l ci dessous; cependant attention à ne pas confondre requêtes, formulaires, javascript et PHP... ce sont des technologies différentes qui si elles peuvent fonctionner ensemble fonctionne différemment et à plusieurs niveaux différents
0
Ysabe_l Messages postés 12454 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 23 avril 2024 274
27 juin 2013 à 16:50
Vu ton message je pensais que tu t'y connaissais et que te donner cette piste t'aiderait.

Donc en plus détaillé :

<!-- LES REQUETES -->
<?php
$ville = mysql_query("SELECT DISTINCT ville FROM table ORDER BY ville"); // liste de toutes les villes
if(isset($_GET['ville'])) // si on a choisi une ville
{
	$selected_ville = $_GET['ville']; // ville qui est dans l'URL
	$zone = mysql_query("SELECT * FROM table WHERE ville = '$selected_ville' ORDER BY zone"); // toutes les zones qui correspondent à la ville sélectionnée
}
?>

<!-- AFFICHAGE DE LA LISTE DES CHOIX DE VILLES -->
<select id="ville" onChange="location = this.options[this.selectedIndex].value;"> 
<?php
	if(isset($_GET['ville'])) // si une ville a été choisie on affiche son nom par défaut dans la liste de choix
	{
?>
		<option><?php echo $_GET['ville']; ?></option>
<?php
	}
	else // sinon on affiche l'invite de choix en titre de la liste
	{
?>
		<option value="choix_ville">--- Choisir une ville ---</option>
<?php
	}
?>
		<option value='page.php?'>Tout afficher</option>
<?php
		while ($i = mysql_fetch_row($ville)) //affichage de toutes les villes et modification de l'url si sélection
		{
			echo "<option value='page.php?ville=".$i['0']."'>".$i["0"]."</option>";
		}
?>
</select>

<!-- AFFICHAGE DE LA LISTE DES CHOIX DE ZONES -->
<select id="zone" onChange="location = this.options[this.selectedIndex].value;">
<?php
if(isset($_GET['zone'])) // si une zone a été choisie on l'affiche en titre de la liste
{
?>
	<option><?php echo $_GET['zone']; ?></option>
<?php
}
else // sinon on demande de choisir une ville
{
?>
	<option value="choix_demande">--- Veuillez choisir une ville ---</option>
<?php
}
?>
	<option value='index1.php?'>Tout afficher</option>
<?php
	if(isset($_GET['ville'])) // si une ville est choisie affichage des zones qui lui correspondent et modification de l'url si sélection
	{
		while ($i = mysql_fetch_assoc($zone))
		{
			echo "<option value='page.php?zone=".$i['zone']."'>".$i["zone"]."</option>";
		}
	}
?>
</select>


Il y a peut-être quelques erreurs, je n'ai pas testé mais à j'ai modifié un code que j'avais et qui marche (qui imbriquait 4 listes dépendantes les unes des autres et qui était donc beaucoup plus complexe, il est possible que j'ai donc laissé des trucs en trop).
0

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

Posez votre question
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
28 juin 2013 à 09:03
Tient ... moi qui pensait être le seul sur terre à coder encore sous PHP4 ^^ .
0
Ysabe_l Messages postés 12454 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 23 avril 2024 274
28 juin 2013 à 12:56
C'est un code que j'avais fait en stage, je ne connaissais pas le php du tout et j'ai appris sur le tas en analysant les codes que le maître de stage avait déjà fait ^^ Depuis je progresse et je ne fais plus comme ça mais là la flemme de réfléchir dessus en fait.
0