liste déroulante modifiant dynamiquement 2e liste déroulante

liste déroulante modifiant dynamiquement 2e liste déroulante - PHP - Programmation

Marsh Posté le 04-08-2003 à 11:54:51    

olà !
je m'explique, j'ai 2 listes déroulantes générées en php,la 1er contenant tous les départements de france, la 2e contenant toutes les villes de france déjà existantes dans la bdd.
ce que je souhaite c'est lorsque je choisi un département, les villes affichées dans la 2e liste déroulante se reduisent aux villes présentent dans ce département.
je pense que le javascript est incontournable ici, avec donc un événement onchange().
mais après je coince, je ne vois pas comment je peux regénérer dynamiquement la 2e liste déroulante ?

Reply

Marsh Posté le 04-08-2003 à 11:54:51   

Reply

Marsh Posté le 04-08-2003 à 11:56:19    

Reply

Marsh Posté le 04-08-2003 à 14:05:16    

ok merci pour le lien je comprends la demarche.
par contre ça coince pour le passage PHP/javascript et vice-versa.
 
dans la 1ère liste déroulante, je récupère bien le nom de mon département, après je veux utiliser cette variable pour faire une requete SQL avec PHP pour récupérer toutes les villes appartenant à ce département.
=> 1er problème
 
ensuite je traite mon résultat pour l'avoir dans un tableau (en PHP) que je veux ensuite exploiter pour refaire ma liste déroulante (en javascript)
=> 2nd problème

Reply

Marsh Posté le 04-08-2003 à 14:46:39    

JS -> client-side
PHP -> Server Side
Si tu veux faire une autre requête en php à partir d'informations récuperées en js, il te faut reloader ta page [:spamafote]

Reply

Marsh Posté le 04-08-2003 à 14:53:58    

gloups c'est vrai (le lundi c'est dur de réfléchir... :sleep: )
bon alors procédons différemment, je fais un requete avant qui me recupère toute les villes avec leurs code postal, commment puis-je exploiter ce résultat avec ma variable javascript.
ici le problème ce n'est pas la demarche mais comment se dépatouiller avec une variable de type PHP et une de type javascript ?

Reply

Marsh Posté le 04-08-2003 à 15:10:36    


une fois que t'as récupéré ta liste complète, tu te rattaches à cet exemple

Reply

Marsh Posté le 04-08-2003 à 15:15:14    

grohark a écrit :

gloups c'est vrai (le lundi c'est dur de réfléchir... :sleep: )
bon alors procédons différemment, je fais un requete avant qui me recupère toute les villes avec leurs code postal, commment puis-je exploiter ce résultat avec ma variable javascript.
ici le problème ce n'est pas la demarche mais comment se dépatouiller avec une variable de type PHP et une de type javascript ?


 
En gros, le principe est simple :  
 
tu fais une requête pour toutes les villes en PHP
 
tu fais générer au pHP du javascript en faisant un truc du type :
echo "<script language=javascript> var tableau[];"
for ($i=0;$i<nb_billes;$i++) {
 
}

Reply

Marsh Posté le 04-08-2003 à 15:45:46    

alors ca donne koi finalement grohark ?
Ca marche ? tu as trouvé ?


Message édité par Phive le 04-08-2003 à 15:45:57

---------------
/!\ Post powered by Phive-online.com /!\
Reply

Marsh Posté le 04-08-2003 à 16:08:27    

j'y travaille, j'y travaille... :pt1cable:
 
et toi ça avance ton anim flash ?  :whistle:

Reply

Marsh Posté le 04-08-2003 à 16:47:11    

grohark a écrit :

j'y travaille, j'y travaille... :pt1cable:
 
et toi ça avance ton anim flash ?  :whistle:  


 
la n'est pas le sujet du topic mon cher grohark  
veux tu bien ne pas deriver  et travailler un peu :whistle:


---------------
/!\ Post powered by Phive-online.com /!\
Reply

Marsh Posté le 04-08-2003 à 16:47:11   

Reply

Marsh Posté le 04-08-2003 à 16:55:35    

Phive a écrit :


 
la n'est pas le sujet du topic mon cher grohark  
veux tu bien ne pas deriver  et travailler un peu :whistle:  


 
t'aurais commencé par me demander de vive voix où j'en étais dans mon travail, on en serait pas là.  :kaola:

Reply

Marsh Posté le 05-08-2003 à 10:56:35    

j'ai un petit problème de simple quote avec javascript, je fais ça :
 

Code :
  1. print("<script language=\"JavaScript\" type=\"text/javascript\">
  2. tab =new Array();
  3. tab[0]='';\n" );
  4. for($i=1; $i<count($villes); $i++){
  5.   //for($j=0; $j<count($villes[$i]); $j++){
  6.     print("tab[".$i."] = new Array('".$villes[$i][0]."','".$villes[$i][1]."','".$villes[$i][2]."');\n" );
  7.   //}
  8. }


ça créé un problème lorsqu'il y a une apostrophe dans le nom de la ville.
 
est ce que qq aurait une solution de concaténation pour avoir ça :
tab[215] = new Array("L'ISLE SUR LE DOUBS","25250","Doubs" );
au lieu de ça :
tab[215] = new Array('L'ISLE SUR LE DOUBS','25250','Doubs');
 
merci.

Reply

Marsh Posté le 05-08-2003 à 11:23:11    

utilises la fonction php addslashes sur les noms de tes villes ;)


Message édité par dropsy le 05-08-2003 à 11:23:25
Reply

Marsh Posté le 05-08-2003 à 11:28:53    

j'y pensé mais ça va apparaitre dans la 2e liste déroulante que je vais recréer avec ce tableau.
à moins qu'il y ai possibilité par la suite de virer ces slash avec du javacript ?

Reply

Marsh Posté le 05-08-2003 à 11:32:41    

grohark a écrit :

j'y pensé mais ça va apparaitre dans la 2e liste déroulante que je vais recréer avec ce tableau.
à moins qu'il y ai possibilité par la suite de virer ces slash avec du javacript ?


 
rectification ! je viens de dire une grosse bêtise ! tjrs tourner sa langue dans sa bouche avant de parler  :)  
effectivement ça fonctionne...

Reply

Marsh Posté le 05-08-2003 à 13:10:55    

ça risque d'être un peu lourdingue avec cette methode. essaye en envoyant une requete au serveur pour qu'il te renvoye les villes du departement selectionné.

Reply

Marsh Posté le 05-08-2003 à 14:33:37    

c'est sur que ce n'est pas simple de cette façon !
mais je préfère éviter de faire une requête de plus.
bon finalement j'ai réussi à faire ce que je voulais donc je mets le code si ça intéresse qq1 :
 

Code :
  1. print("<script language=\"JavaScript\" type=\"text/javascript\">
  2. tab =new Array();
  3. tab[0]='';\n" );
  4. for($i=1; $i<count($villes); $i++){
  5.   //for($j=0; $j<count($villes[$i]); $j++){
  6.     print("tab[".$i."] = new Array(\"".$villes[$i][0]."\",".$villes[$i][1].",\"".$villes[$i][2]."\" );\n" );
  7.   //}
  8. }

 
cette partie là permet de générer le tableau javascript. (finalement je me suis passé du addslashes, je me suis souvenu que le \" était très pratique ;)  
 
 

Code :
  1. print("function phive(){
  2.   var ville = document.form1.ville;
  3.   var taille = ville.options.length;
  4.   var dep = document.form1.dep.value;
  5. /*** Suppression des options présentes ***/
  6.   for(var i=0; i < taille ; i++){
  7.     //ville.options[0] = null;
  8.     ville.options[1] = null;
  9.   }
  10. /*** Ajout des nouvelles options ***/ 
  11.   for(var i=0; i < tab.length; i++){
  12.     if(dep == tab[i][2]){
  13.             var opt = new Option(tab[i][0]+\" (\"+tab[i][1]+\" )\" );
  14.             ville.options[ville.options.length] = opt;
  15.  }
  16.       }
  17.       ville.focus();
  18. }

 
 
cette partie génère la 2e liste déroulante en fonction du département sélectionné.
 
et dans le corps de la page :
 

Code :
  1. print("<td width=\"50%\"><select name=\"dep\" size=\"1\" onChange=phive()><option>-- Votre d&eacute;partement --</option>" );
  2. for($i=0; $i<$nbdep; $i++){
  3.   print("<option value=\"".$deps[$i][dep_nom]."\">".$deps[$i][dep_nom]."</option>\n" );
  4. }
  5. print("</td></tr>
  6.   <tr>
  7.     <td width=\"30%\">Ville (<a href=\"javascript:popup()\">créer une ville</a> )</td>
  8.  <td width=\"50%\"><select name=\"ville\" size=\"1\" >
  9. <option >-- Votre ville --</option>" );

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed