Formulaire Dynamique

Résolu
xxkirastarothxx Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   -  
xxkirastarothxx Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   -
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 146 Date d'inscription   Statut Membre Dernière intervention   13
 
Tout peut se faire en PHP, tu connais bien le PHP?
0
Absinthe06 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   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 380 Date d'inscription   Statut Membre Dernière intervention   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 380 Date d'inscription   Statut Membre Dernière intervention   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 1770 Date d'inscription   Statut Membre Dernière intervention   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 380 Date d'inscription   Statut Membre Dernière intervention   40
 
Roh bah oui ça marche bien mieux :P
Merci beaucoup :D
[Résolu]
0