[Résolu] Liste déroulante selon checkbox cochée ou pas.

Liste déroulante selon checkbox cochée ou pas. [Résolu] - PHP - Programmation

Marsh Posté le 22-02-2010 à 15:18:34    

Bonjour,
 
J'ai un formulaire php qui renvoi les données contenues dans une base SQL, tout fonctionne.
Dans ce formulaire j'ai 2 checkbox ("Windows" et "Linux" ) et selon ce qui est coché, je voudrais afficher une liste déroulante de logiciels disponible sous Windows et/ou Linux.  
La liste de logiciels disponible étant contenu dans un base de donnée SQL.
 
Pour l'instant j'ai la liste déroulante mais aucun lien entre ma liste déroulante et mes checkbox.  
 
Auriez vous une piste ?
 
Nicolas


Message édité par mac_gyver80 le 25-02-2010 à 12:19:05
Reply

Marsh Posté le 22-02-2010 à 15:18:34   

Reply

Marsh Posté le 23-02-2010 à 09:47:24    

3 solutions :
1) tu renvoies les 2 items (windows, linux) + chacun des logiciels selon l'OS. Et tu masques les menus déroulants via Javascript, en n'activant que celui dont l'OS est coché
 
2) on check l'OS, aller retour vers le serveur, et celui-ci renvoie uniquement le menu déroulant de l'OS checké
 
3) tu combines les 2 avec de l'AJAX.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 23-02-2010 à 14:18:08    

Salut,  
 
Effectivement, la 1ere solution est pas mal, mais ne fonctionne pas si les 2 OS sont cochés (ce qui masquerait les 2 menus).  
 
A moins que tu vois une solution dans ce script qui masque un menu déroulant quand la case est cochée:  

Code :
  1. <script language="JavaScript" type="text/javascript">
  2.   function ChangeStatut2(formulaire) {     
  3.     if (formulaire.DEFT_objlist.checked == 1) {           
  4. document.getElementById("DISPLAY2_obj" ).style.display = "block";     
  5.       }           
  6. else {   
  7. document.getElementById("DISPLAY2_obj" ).style.display = "none";         
  8.           }                                       
  9. }
  10. </script>
  11. // MENU DEROULANT
  12. <div id="DISPLAY2_obj">
  13.         <label for="OBJ_int1"></label>
  14. <?php
  15.  include('connexion.php');
  16.  $requete = "select * from logiciels where DA_MV = 'DA'";
  17.   $resultat = mysql_query($requete) or die("erreur dans la requ&eacute;te $requete" );
  18. while ($tableau = mysql_fetch_object($resultat))
  19. $nom_logiciels[] = $tableau->nom_logiciels;
  20. echo "<select name='nom_logiciels[]'>";
  21. echo "<option> </option>";
  22.  for ($i=0;$i<count($nom_logiciels);$i++)
  23.   echo "<option value='$nom_logiciels[$i]'>$nom_logiciels[$i]</option>";
  24.  echo "</select>";
  25.  mysql_close();
  26. ?>
  27.       </div>
  28. </div>


 
 
Le 2eme solution ne peut fonctionner car le choix des logiciels ne dépend pas de l'OS sur lequel l'utilisateur est.
 
merci.


Message édité par mac_gyver80 le 23-02-2010 à 16:11:29
Reply

Marsh Posté le 23-02-2010 à 16:08:30    

en JS :

Code :
  1. function AfficheMenu(choix)
  2. {
  3.     if (choix == 'windows')
  4.     {
  5.         document.getElementById('select_windows').style.display='';
  6.         document.getElementById('select_linux').style.display='none';
  7.     }
  8.     else
  9.     {
  10.         document.getElementById('select_windows').style.display='none';
  11.         document.getElementById('select_linux').style.display='';
  12.     }
  13. }


 
et dans l'HTML

Code :
  1. <label for="choix_windows">Windows</label><input type="radio" id="choix_windows" name="choix" value="windows" onclick="AfficheMenu(this.value)" />
  2. <label for="choix_linux">Linux</label><input type="radio" id="choix_linux" name="linux" value="linux" onclick="AfficheMenu(this.value)" />
  3. <label for="select_windows">Menu W :</label><select id="select_windows" name="select_windows">
  4.     <option value="...">Blabla</option>
  5.     <option value="...">Blabla</option>
  6.     <option value="...">Blabla</option>
  7. </select>
  8. <label for="select_linux">Menu L :</label><select id="select_linux" name="select_linux">
  9.     <option value="...">Blabla</option>
  10.     <option value="...">Blabla</option>
  11.     <option value="...">Blabla</option>
  12. </select>


 
après reste juste à précocher une valeur par défaut et masquer l'autre menu.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 23-02-2010 à 16:50:35    

Salut,
 
Merci pour ta réponse. Afin de pouvoir selectionner les 2 OS, j'ai remplacé les bouton radio par des checkbox, mais lorsque les 2 checkbox sont coché, les 2 listes n'apparaissent pas, saurais tu comment résoudre le problème ?
 
Nicolas.

Reply

Marsh Posté le 23-02-2010 à 18:20:49    

j'ai essayé ça mais ça ne marche pas :
 

Code :
  1. <script language="JavaScript" type="text/javascript">
  2. function AfficheMenu(choix)
  3. {
  4.     if (choix == 'windows')
  5.     {
  6.         document.getElementById('select_windows').style.display='';
  7.         document.getElementById('select_linux').style.display='none';
  8.     }
  9.     else  if (choix == 'linux')
  10.     {
  11.         document.getElementById('select_windows').style.display='none';
  12.         document.getElementById('select_linux').style.display='';
  13.     }
  14. else
  15.  {
  16.         document.getElementById('select_windows').style.display='';
  17.         document.getElementById('select_linux').style.display='';
  18.      }
  19. }
  20. </script>

Reply

Marsh Posté le 24-02-2010 à 12:30:35    


 
J'ai trouvé ça, ce n'est pas forcement optimal mais ça marche. Les checkbox sont deja checké, l'utilisateur choisi donc l'OS qu'il veut, et selon ce qu'il décoche, le menu déroulant associé est masqué.  :
 
Le javascript

Code :
  1. <script language="JavaScript" type="text/javascript">
  2. // Pour le premier menu déroulant
  3. function ChangeStatut(formulaire)
  4. {     
  5.     if (formulaire.DEFT_objlist1.checked == 1)
  6.  {           
  7.  document.getElementById("DISPLAY_obj1" ).style.display = "block";     
  8.  }           
  9.    else {   
  10.          document.getElementById("DISPLAY_obj1" ).style.display = "none";         
  11.           }                                       
  12. }
  13.     
  14. </script>
  15. <script language="JavaScript" type="text/javascript">
  16. // pour le deuxieme menu déroulant
  17. function ChangeStatut2(formulaire2)
  18. {     
  19.     if (formulaire2.DEFT_objlist2.checked == 1)
  20.  {           
  21.  document.getElementById("DISPLAY_obj2" ).style.display = "block";     
  22.  }           
  23.    else {   
  24.          document.getElementById("DISPLAY_obj2" ).style.display = "none";         
  25.           }                                       
  26. }
  27.     
  28. </script>


 
 
Les checkbox
 

Code :
  1. Windows <input name="DEFT_objlist" type="checkbox" id="DEFT_objlist" style="margin-top: 0;" onclick="ChangeStatut(this.form);" checked="checked" />
  2. Linux     <input name="DEFT_objlist2" type="checkbox" id="DEFT_objlist2" style="margin-top: 0;" onclick="ChangeStatut2(this.form);" checked="checked" />


 
 
L'affichage de la 1ere liste déroulante :
 

Code :
  1. <div id="DISPLAY_obj1"> 
  2. <?php
  3.   include('connexion.php');
  4.  $requete = "select * from logiciels where DA_MV = 'DA'";
  5.   $resultat = mysql_query($requete) or die("erreur dans la requ&eacute;te $requete" );
  6.  while ($tableau = mysql_fetch_object($resultat))
  7.   $nom_logiciels[] = $tableau->nom_logiciels;
  8.  echo "<select id='OBJ_int1' name='OBJ_int1'>";
  9.   echo "<option> </option>";
  10.   for ($i=0;$i<count($nom_logiciels);$i++)
  11.    echo "<option value='$nom_logiciels[$i]'>$nom_logiciels[$i]</option>";
  12.  echo "</select>";
  13.  mysql_close();
  14. ?>
  15. </div>


 
 
Le 2eme
 

Code :
  1. <div id="DISPLAY_obj2">
  2.       <?php
  3.   include('connexion.php');
  4.    $requete = "select * from DA_MV";
  5.   $resultat = mysql_query($requete) or die("erreur dans la requ&eacute;te $requete" );
  6.  while ($tableau = mysql_fetch_object($resultat))
  7.   $nom_logiciels[] = $tableau->nom_logiciels;
  8.  echo "<select id='OBJ_int2' name='OBJ_int2'>";
  9.   echo "<option> </option>";
  10.   for ($i=0;$i<count($nom_logiciels);$i++)
  11.    echo "<option value='$nom_logiciels[$i]'>$nom_logiciels[$i]</option>";
  12.  echo "</select>";
  13.  mysql_close();
  14. ?>
  15.       </div>


 
 
 
 
nous ne voyons pas d'autres explications.
 
 
Nicolas.
 
 

Reply

Marsh Posté le 24-02-2010 à 13:26:18    

Euh ... :sweat:  

Code :
  1. Dans ce formulaire j'ai 2 checkbox ("Windows" et "Linux" ) et selon ce qui est coché, je voudrais afficher une liste déroulante de logiciels disponible sous Windows et/ou Linux.


j'ai pas compris ça de la même façon ... pour moi c'était soit l'un, soit l'autre, mais pas un "ou" inclusif ...
Why not.
 
Bah alors il suffit de transformer ma fonction JS :

Code :
  1. if (document.getElementById('choix_windows').checked == true)
  2.     document.getElementById('select_windows').style.display='';
  3. else
  4.     document.getElementById('select_windows').style.display='none';


 
pareil pour linux.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Sujets relatifs:

Leave a Replay

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