8792 sujets

Développement web côté serveur, CMS

Bonjour,

'ai une liste déroulante Liste1 et suivant le cas choisi dans liste 1 je voudrais afficher une liste déroulante liste2

exemple :
Dans liste1 j'ai : Avion, bateau, voiture
si je sélectionne avion je voudrais qu'il apparaisse une deuxieme liste déroulante liste2: helice, a reaction, autre
Si je sélectionne voiture je veux avoir dans la liste 2 :
diesel, essence, hybride
et si je sélectionne bateau avoir dans la liste 2:
voile, mote

bien sur le controle se fait dans recherche.php

je recapitule
---- ca je sais faire
1) je lance formu.html
2) je choisi dans mon premier menu déroulant
3) je vais dans recherche
4) je teste si $_POST['liste1'=='avion'] bateau ou voiture
---- ca pas
5) j'affiche à coté de liste1 une deuxieme liste déroulante
6) j'affiche par echo liste1 et liste2

Merci a ceux qui vont m'aider
patrick_deb a écrit :
si je sélectionne avion je voudrais qu'il apparaisse une deuxieme liste déroulante liste2: helice, a reaction, autre

Comme ça ne risque hélas pas d'apparaître par magie, il y a deux moyens :
1 - on choisit un terme de la liste principale, on valide, on recharge la page avec le même formulaire, et on peut choisir un deuxième terme dans la liste secondaire ;
2 - on ne valide pas le formulaire entre les deux, mais on dynamise tout ça en Javascript.

Le premier n'est pas très ergonomique, et le second peut poser des problèmes d'accessibilité si javascript désactivé.
Modérateur
mpop a écrit :

Le premier n'est pas très ergonomique, et le second peut poser des problèmes d'accessibilité si javascript désactivé.


Alors pourquoi ne pas utiliser les deux moyens en harmonie ? Traitement Javascript (moyen no2), et si Javascript n'est pas activé, rechargement de la page (moyen no1).

Une autre solution serait d'utiliser un seul champ déroulant, avec des optgroup. Très bien si la liste des éléments et sous-éléments n'est pas trop longue.
Modifié par Tony Monast (08 Dec 2006 - 15:24)
Ben comme déjà dis tu as deux options:
-Le JS
-Le php
Perso j'ai déjà eu ce problème il y a un petit moment et j'ai fais ce petit code (je l'ai adapté a ton cas)
<script>
//Liste des <select> qui sont fonction du premier choix
var tab = ['Voiture','Avion','Bateau']

function choix(id)
{
	//Cache tout les selects d'otpion
	for(var i=0;i<tab.length;i++)
		document.getElementById(tab[i]).style.display = "none" ;
	//Et affiche celui voulu
	document.getElementById(id).style.display = "block" ;
}

</script>

Véhicule:
<select name="vehicule" onChange="choix(this.options[this.selectedIndex].innerHTML)">
<option value="Voiture" >Voiture</option>
<option value="Avion" >Avion</option>
<option value="Bateau" >Bateau</option>
</select><br>

<select id="Voiture" name="voiture" style="display:block;">
<option value="Essence">Essence</option>
<option value="Diesel">Diesel</option>
<option value="Hybride">Hybride</option>
</select>

<select id="Avion" name="avion" style="display:none;">
<option value="Helice">Helice</option>
<option value="Reaction">Reaction</option>
<option value="Autre">Autre</option>
</select>

<select id="Bateau" name="bateau" style="display:none;">
<option value="Voile">Voile</option>
<option value="Moteur">Moteur</option>
</select>


[/i]
C'est surement pas la meilleure solution mais ça marche bien a condition que Js soit activé Smiley cligne
Merci à tout ceux qui m'ont répondu mais je voudrais le faire en php.

Si vous avez des idées, merci de me les communiqué
Je te conseille de le faire en JS dans l'affichage et de le gérer ensuite en php mais c'est toi qui vois.
<?php
echo '<form name="choix_vehicule" action="test.php" method="post">';
echo '<select name="vehicule">
	<option value="Voiture" >Voiture</option>
	<option value="Avion" >Avion</option>
	<option value="Bateau" >Bateau</option>
	</select>';
echo '<input type="submit" />';
echo '</form>';

if (isset($_POST['vehicule']))
{
	echo '<form name="choix_type" action="test.php" method="post">';
	switch($_POST['vehicule'])
	{
		case "Voiture":
			echo '<select name="voiture">
				<option value="Essence">Essence</option>
				<option value="Diesel">Diesel</option>
				<option value="Hybride">Hybride</option>
				</select>';
			break;
		case "Avion":
			echo '<select name="avion">
				<option value="Helice">Helice</option>
				<option value="Reaction">Reaction</option>
				<option value="Autre">Autre</option>
				</select>';
			break;
		case "Bateau":
			echo '<select name="bateau">
				<option value="Voile">Voile</option>
				<option value="Moteur">Moteur</option>
				</select>';
			break;
	}
	echo '<input type="submit" />';
	echo '<form>';
}
?>