Page 1 sur 1

un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:07
par diabless6
Bonjour,

J'ai un petit soucis avec mon select name=ville, il ne fonctionne pas et le reste fonctionne parfaitement.
<form  action="forms/depot.php" method="post" name="formulaire" enctype="multipart/form-data"> 

<p class="fd2">
<select name="region" onChange="choix_a(this)"  size="1" class="texte">
<option value=-1 selected>-- régions / pays --</option>
<option value=0>Alsace</option>
<option value=1>Aquitaine</option>
<option value=2>Auvergne</option>
</select>

<select  name="departement" onChange="choix_b(this)" size="1" class="texte">
<option value=0>-- département --</option>
</select>
<select  name="ville" size="1" class="texte">
<option value=0>-- ville --</option>
</select>
f

Code : Tout sélectionner

unction choix_a ( selectbox) { var label; var value; var newopt; var flag = true; var selectarea2 = selectbox.options[ selectbox.selectedIndex ].value; switch ( selectarea2 ) { case "0": label = new Array("-- votre choix --", "Bas Rhin (67)", "Haut Rhin (68)" ); value = new Array("0","67", "68" ); break; case "1": label = new Array("-- votre choix --", "Dordogne (24)", "Gironde (33)", "Landes (40)", "Lot-et-Garonne (47)", "Pyrénées-Atlantiques (64)" ); value = new Array("0","24", "33", "40", "47", "64" ); break; default : label = new Array( "-- votre choix --"); value = new Array( "0"); break; } var selbox2 = document.formulaire.departement; var selbox3=document.formulaire.ville; for ( var i = selbox2.options.length - 1; i >= 0; i-- ) { selbox2.options[ i ] = null; } for ( var i = selbox3.options.length - 1; i >= 0; i-- ) { selbox3.options[ i ] = null; } for ( var j = 0; j < label.length; j++ ) { newopt = new Option ( label[ j ], value[ j ], false, false ); selbox2.options[ j ] = newopt; } selbox3.options.length=1; newopt=new Option('--choix--',0,false,false); selbox3.options[0]=newopt; }

Code : Tout sélectionner

function choix_b ( selectbox) { var label; var value; var newopt; var flag = true; var selectarea2 = selectbox.options[ selectbox.selectedIndex ].value; switch ( selectarea2 ) { case "67": label = new Array("-- votre choix --", "(67204) ACHENHEIM", "(67320) ADAMSWILLER" ); value = new Array("0","67204", "67320" ); break; default : label = new Array( "-- votre choix --"); value = new Array( "0"); break; } var selbox2 = document.formulaire.ville; for ( var i = selbox2.options.length - 1; i >= 0; i-- ) { selbox2.options[ i ] = null; } for(var j=0;<label.length;j++){ newopt=new Option(label[j],value[j],false,false); selbox2.options[j]=newopt; } }
Merci

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:12
par Cyrano
Essaye en faisant du HTML proprement écrit avec des attributs de balises entre guillemets.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:17
par diabless6
Même en écrivant correctement et rajouter les guillemets ça ne marche pas.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:31
par Cyrano
Aucun message d'erreur ? Utilises-tu Firebug ? C'est un outil pratique pour avoir des informations détaillées.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:39
par diabless6
Aucun message d'erreur ? Utilises-tu Firebug ? C'est un outil pratique pour avoir des informations détaillées.
Oui c'est pratique pour le HTML mais pour les scripts, je ne sais pas trop bien l'utiliser :roll:

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 18:48
par Cyrano
Il y a l'onglet console qui va afficher les erreurs de JavaScript normalement, enfin si tu actives l'onglet scripts

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 19:02
par diabless6
Ha oui c'était désactivé. Il me met ça : choix_b is not defined :shock:

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 19:18
par diabless6
Yavait aussi un message XML syntaxe là :

for(var j=0; j <label.length;j++)

J'avais oublier le j, ça marche un peu mieux, mais c'est pas ça et il n' y a plus d'erreurs :roll:

C'est bizarre mon select=ville se redimensionne bien mais m'affiche rien, mon case est bon, rhoo ce javacripst #-o

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 19:39
par Cyrano
Tu devrais jeter un coup d'oeil à la première version sur ceci, c'est prévu pour deux listes, mais tu peux adapter pour trois ou davantage.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 20:04
par diabless6
Merci pour le lien, très intéressant. Mais j'utilise pas de base sql pour ça simplement parce que j'ai prévu une base pour autre chose qui utlisera intensivement le server Mysql.
Je crois que je me suis trompée dans une boucle.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 21:12
par diabless6
Stilt! stilt! :roll:

Hihi! J'ai trouvé, ne trouvant pas l'erreur au début mais après, j'avais changé le numéro du case hihi ! ça marche :mrgreen: God save the Queen ! :twisted:

Par contre, heu!, j'ai un autre petit soucis de grande taille : 33850 villes à rentrer #-o vennant d'un csv. Alors, là j'ai un gros soucis, comment pourrais-je automatiser ça en javascript ? :? bah! avec PHP ça c'est sûr, mais c'est pas ça qui m'embête waouf :

echo 'case ".$nb.": label = new Array("-- votre choix --", "'.$villes.'" ); value = new Array("0","'.$val'." );break;';

Faudrait que j'imprime cette partie en PHP dans le javascript ? #-o

AIN 450 communes(INSEE), http://www.annuaire-mairie.fr/departement-ain.html,
AISNE 829 communes, http://www.annuaire-mairie.fr/departement-aisne.html, si fallait se fier aux statistiques faussées de l'INSEE.... :mrgreen:
etc...
Il me faut un chargement sélectif des données en fonction du département. A mon avis, je vais subdiviser ça dans un tableau et faire la lecture en Ajax :wink:

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 22:14
par Cyrano
Dans ce cas, comme je l'explique dans le tuto, ça risque d'être très exigeant en terme de mémoire, donc une solution alternative passe par AJAX, le même tuto mais pas la première version. Et encore, la version AJAX montrée pourrait être un peu simplifiée avec jQuery par exemple. Il faudrait dans ce cas importer ton csv dans une base de données.

Re: un champs ne fonctionne pas

Posté : 30 oct. 2010, 22:28
par diabless6
Oui, je pense aussi au problème de ressources et rapidité d'exécution, il faut trouver le bon compromis. Oui, je compte utiliser Jquery qui va me simplifier les choses sous peu que je comprenne le fonctionnement de l'ajax et du json #-o

Re: un champs ne fonctionne pas

Posté : 31 oct. 2010, 00:49
par Cyrano
...que je comprenne le fonctionnement de l'ajax et du json #-o
Ce n'est pas le plus compliqué :)
JSON = JavaScript Object Notation : c'est du javascript natif, et la fonction json_encode te permet de transformer à la volée un tableau PHP en JSON qui devient de ce fait directement utilisable dans ton code JS :)
Quant à l'AJAX, ça consiste simplement à utiliser une donnée récupérée lors d'un évènement, à l'envoyer vers le serveur qui doit renvoyer des données, en l'occurrence en JSON.

Réfléchis à ce déroulement des différentes étapes dans le fonctionnement et reviens avec les questions sur les problèmes que tu n'arrives pas à résoudre :)