Comment changer dynamiquement le contenu de tag <select> ?

Comment changer dynamiquement le contenu de tag <select> ? - PHP - Programmation

Marsh Posté le 14-01-2003 à 20:21:21    

Salut joce,
 
 
Je vais faire au plus simple :
 
J'ai en HTML + PHP (qui genere du HTML) deux <select>
 
Mon resp Info veut que, quand je selectionne qqchose dans le premier <select> je change ce qu'il faut dans le second (dans mon cas : Premier c'est les rgions, le deuxieme c'est les commune)
 
En JavaScript on aurait pu utiliser la methode OnChange du tag <select>  
Mais cela reviendrait à recharger la page, ce qui est un peu lourd.
 
Existe t-il une autre methode pour changer dynamiquement en HTML+PHP le contenu du deuxieme select ?
 
 
Merci d'avance

Reply

Marsh Posté le 14-01-2003 à 20:21:21   

Reply

Marsh Posté le 14-01-2003 à 21:09:24    

Voici un exempel de code :
 

Code :
  1. <html>
  2. <head>
  3. <SCRIPT LANGUAGE="javascript">
  4.   <!--
  5.   function gotoLink() {
  6. // Get the currently selected item from the menu
  7.   goingTo = document.quickMenu.link.options[document.quickMenu.link.selectedIndex].value;
  8.   // If the currently selected item is not valid, do nothing. Otherwise,
  9.   // redirect the browser to the newly selected page.
  10.   if (goingTo == "" )
  11.     { return; }
  12.   else
  13.     { self.location =  "http://www.yahoo.fr"; }
  14.   }
  15.   // -->
  16. </SCRIPT>
  17. </head>
  18. <body>
  19. <FORM NAME="quickMenu">
  20.   <LABEL>Get information from <A HREF="http://www.yahoo.com">Yahoo</A> about one of the states:
  21.   <SELECT NAME="link" ONCHANGE="gotoLink()">
  22.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alabama/">Alabama</OPTION>
  23.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alaska/">Alaska</OPTION>
  24.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alabama/">Alabama</OPTION>
  25.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alaska/">Alaska</OPTION>
  26.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alabama/">Alabama</OPTION>
  27.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Alaska/">Alaska</OPTION>
  28.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Arizona/">Arizona</OPTION>
  29.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Arkansas/">Arkansas</OPTION>
  30.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/California/">California</OPTION>
  31.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Colorado/">Colorado</OPTION>
  32.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Connecticut/">Connecticut</OPTION>
  33.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Delaware/">Delaware</OPTION>
  34.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Florida/">Florida</OPTION>
  35.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Georgia/">Georgia</OPTION>
  36.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Hawaii/">Hawaii</OPTION>
  37.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Idaho/">Idaho</OPTION>
  38.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Illinois/">Illinois</OPTION>
  39.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Indiana/">Indiana</OPTION>
  40.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Iowa/">Iowa</OPTION>
  41.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Kansas/">Kansas</OPTION>
  42.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Kentucky/">Kentucky</OPTION>
  43.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Louisiana/">Louisiana</OPTION>
  44.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Maine/">Maine</OPTION>
  45.     <OPTION VALUE="http://dir.yahoo.com/Regional/U_S__States/Maryland/">Maryland</OPTION>
  46.     </SELECT>
  47.   </LABEL>
  48. </FORM>
  49. </body>
  50. </html>

 
 
Maintenant quand je selectionne qqchose ben la fonction est belle et bien appelee, helas je ne peux nullement faire du PHP a l'interieur de cette fonction
 
Un echo "bonjour" ne marche meme pas :(
 
Alors comment faire ? Je me le demande (et en me le demandant je crois avoir trouvé une solution)  :pfff:

Reply

Marsh Posté le 14-01-2003 à 21:56:51    

updater un select avec un autre sans re-chargement de page --> javascript.
updater un select avec un autre avec re-chargement de page -> php.
 
tu peux charger tes selects avec des infos issues d'une bd/php, puis utiliser la solution 1, mais la partie update du second select restera du javascript.

Reply

Marsh Posté le 14-01-2003 à 23:06:15    

Il y a aussi la méthode de la "frame cachée" :)
 
Bon c plus une astuce qu'autre chose mais suivant ta situation ca peut etre la solution.
 
Donc en gros tu fais un frameset avec ta frame principale (appelée Principale) qui fait 100% et une frame de dimension 0 (appelée Cachee).
 
Tu généres ta page avec ton premier select qui a une méthode onChange qui appelle la page remplir_select.php dans la frame Cachee. Cette fonction va aller chercher les bons éléments du select, et remplir le select de ta page dans la frame Principale en construisant le javascript grace a un script php qui sera allé cherché les bonnes données et en reconstruisant le select via : parent.document.form.[NomSelect] ... etc via javascript. (C un peu tiré par les cheveux ^^ mais j'ai du mal a clarifier la chose a cette heure la :D )
 
Cette méthode peut pas toujours être utilisée pour des questions de compatibilités à cause des frames, mais si tu peux te le permettre alors ca resoudra ton probleme ;)
 
Si tu comprends pas tout, poses tes questions ^^

Reply

Marsh Posté le 15-01-2003 à 12:28:07    

Mejero a écrit :

Il y a aussi la méthode de la "frame cachée" :)
 
Bon c plus une astuce qu'autre chose mais suivant ta situation ca peut etre la solution.
 
Donc en gros tu fais un frameset avec ta frame principale (appelée Principale) qui fait 100% et une frame de dimension 0 (appelée Cachee).
 
Tu généres ta page avec ton premier select qui a une méthode onChange qui appelle la page remplir_select.php dans la frame Cachee. Cette fonction va aller chercher les bons éléments du select, et remplir le select de ta page dans la frame Principale en construisant le javascript grace a un script php qui sera allé cherché les bonnes données et en reconstruisant le select via : parent.document.form.[NomSelect] ... etc via javascript. (C un peu tiré par les cheveux ^^ mais j'ai du mal a clarifier la chose a cette heure la :D )
 
Cette méthode peut pas toujours être utilisée pour des questions de compatibilités à cause des frames, mais si tu peux te le permettre alors ca resoudra ton probleme ;)
 
Si tu comprends pas tout, poses tes questions ^^


 
J'ai pas tout compris :D
 
 J'ai trouvé une solution alternative : Je genere ma requete PostGre avant l'appel de JavaScript et je fout la valeur dans le tag Value de Option comme ça je peux me debrouiller avec des split dans le $HTTP_POST_VARS
 
Par contre il y a un gros probleme c'est que en meme temps que les <select> j'ai des checkbox, si je recherge la page avec le OnChange ce que j'ai coché est perdu, et là je sais vraiment pas comment faire :(  
 
(Quand je coche une CheckBox je ne sais pas comment garder son status et le reutiliser en utilsant PHP dans la génération du code HTML)

Reply

Sujets relatifs:

Leave a Replay

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