Formulaire Dynamique

Résolu
xxkirastarothxx Messages postés 415 Statut Membre -  
xxkirastarothxx Messages postés 415 Statut Membre -
Bonjour à tous

J'essaye de faire un formulaire d'inscription Dynamique, ou après que l'utilisateur est choisie, par exemple, sa région dans un select, le select suivant ne propose que les départements de cette Région.
Je suis persuadé qu'il faut du javascript, voir de l'ajax pour faire ça, mais je n'y connais quasiment rien.

Quelqu'un pourrait il m'épingler/ m'aider SVP ? :)

Merci d'avance.

6 réponses

ShadowRevenge Messages postés 156 Statut Membre 13
 
Tout peut se faire en PHP, tu connais bien le PHP?
0
Absinthe06 Messages postés 113 Statut Membre 11
 
oui effectivement c'est du javascript :

//DANS LA BALISE HEAD DE TA PAGE
<script language="Javascript">
     
     function aff_departements() {
        
               document.getElementById('selDepartements').disabled = false;
switch(document.getElementById('selRegions').options[document.getElementById('selRegions').options.selectedIndex].value) {
          case '..' :
               document.getElementById('selDepartements').options.length = [nombre de departements a afficher];
		document.getElementById('selDepartements').options[0] = new Option(texte,valeur);
		document.getElementById('selDepartements').options[1] = new Option(texte,valeur);
                etc...
                break;
          case '.. :
                 ...
                 break;
          etc...
     }

</script>

//DANS LE BODY
<select name="regions" id="selRegions" "onchange="aff_departements()">
     <option value="..">...</option>
     <option value="..">...</option>
     <option value="..">...</option>
     etc...
</select>

<select name="departements" id="selDepartements" disabled="true"></select>


et voila, remplace simplement les '..' et les '(texte,valeur)' par tes valeurs et le tour est joué ;)
0
xxkirastarothxx Messages postés 415 Statut Membre 40
 
Ouaip! Le php c'est pas un problème mais là je vois pas comment faire.
Enfin si, mais ça nécessite de recharger la page à chaque nouvelle question c'est pas super esthétique.

y'a pas besoin de javascript, genre avec un onclic ou onover?

quelquechose comme ça: (attention ça va être très moche, je vais faire du javascript avec du sql xD)
onclic="SELECT * FROM departement WHERE region = **"

Edit, ah une nouvelle réponse le temps d'écrire la mienne, je regarde ça :)
0
xxkirastarothxx Messages postés 415 Statut Membre 40
 
j'ai ça pour le moment, mais il y a quelques petites choses qui clochent:

1] malgrès le disabled='false' dans le js, le select reste en désactive, même après la sélection d'une région.
2] si je met directement disabled='false' dans le html (dans le select donc) le select est toujours désactivé
3] si j'enlève l'option disabled, j'essaye le form, je sélectionne une région, mais aucun département n'est ajouter au select suivant.

Un peu d'aide ? :D

<head>
<script language="Javascript">
     
     function aff_departements() {
               document.getElementById('selDepartements').disabled = false;
switch(document.getElementById('selRegions').options[document.getElementById('selRegions').options.selectedIndex].value) {
          case '01' :
            document.getElementById('selDepartements').options.length = [2];
			document.getElementById('selDepartements').options[0] = new Option(Bas-Rhin,67);
			document.getElementById('selDepartements').options[1] = new Option(Haut-Rhin,68);
                break;
          case '02' :
			document.getElementById('selDepartements').options.length = [5];
			document.getElementById('selDepartements').options[0] = new Option(Dordogne,24);
			document.getElementById('selDepartements').options[1] = new Option(Gironde,33);
			document.getElementById('selDepartements').options[1] = new Option(Landes,40);
			document.getElementById('selDepartements').options[1] = new Option(Lot-et-Garonne,47);
			document.getElementById('selDepartements').options[1] = new Option(Pyrénées-Atlantiques,64);
                break;
		  case '03' :
			document.getElementById('selDepartements').options.length = [4];
			document.getElementById('selDepartements').options[0] = new Option(Allier,03);
			document.getElementById('selDepartements').options[1] = new Option(Cantal,15);
			document.getElementById('selDepartements').options[1] = new Option(Haute-Loire,43);
			document.getElementById('selDepartements').options[1] = new Option(Puy-de-Dôme,63);
                break;
     }

</script>
</head>

<body>
<select name="regions" id="selRegions" onchange="aff_departements()">
     <option value="">Region</option>
     <option value="01">Alsace</option>
     <option value="02">Aquitaine</option>
     <option value="03">Auvergne</option>
</select>

<select name="departements" id="selDepartements" disabled="true">
	<option value="">Departement</option>
</select>
</body>


Edit: j'ai changer le numero des option[1] (j'avais pas vu) par les bon numeros, mais aucun changement
Edit2: rajout des <form action='' method='post'> et </form>: toujours rien.
0

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

Posez votre question
PhP Messages postés 1774 Statut Membre 606
 
Bjr

Rien d'étonnant à ce que ça ne fonctionne pas vu le nombre d'erreurs de syntaxe ! ;-)

Essai comme ceci


<html>
<head>
<script language="Javascript">
     
     function aff_departements() {
		var liste = document.getElementById('selDepartements');
        liste.disabled = false;
		liste.options.length = 0;
		var i = 0;
		switch (document.getElementById('selRegions').options[document.getElementById('selRegions').options.selectedIndex].value) {
			case '00' :		
				liste.options[i++] = new Option("Département","");
				liste.disabled = true;
				break;
			case '01' :
				liste.options[i++] = new Option("Bas-Rhin",67);
				liste.options[i++] = new Option("Haut-Rhin",68);
                break;
			case '02' :
				liste.options[i++] = new Option("Dordogne",24);
				liste.options[i++] = new Option("Gironde",33);
				liste.options[i++] = new Option("Landes",40);
				liste.options[i++] = new Option("Lot-et-Garonne",47);
				liste.options[i++] = new Option("Pyrénées-Atlantiques",64);
                break;
			case '03' :
				liste.options[i++] = new Option("Allier",03);
				liste.options[i++] = new Option("Cantal",15);
				liste.options[i++] = new Option("Haute-Loire",43);
				liste.options[i++] = new Option("Puy-de-Dôme",63);
                break;
		}
	}

</script>
</head>

<body>
<select name="regions" id="selRegions" onchange="aff_departements()">
     <option value="00">Region</option>
     <option value="01">Alsace</option>
     <option value="02">Aquitaine</option>
     <option value="03">Auvergne</option>
</select>

<select name="departements" id="selDepartements" disabled="true">
	<option value="">Departement</option>
</select>
</body>
</html>
--

PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
0
xxkirastarothxx Messages postés 415 Statut Membre 40
 
Roh bah oui ça marche bien mieux :P
Merci beaucoup :D
[Résolu]
0