Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
797 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1968174
mac_gyver8​0
Posté le 22-02-2010 à 15:18:34  profilanswer
 

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
mood
Publicité
Posté le 22-02-2010 à 15:18:34  profilanswer
 

n°1968395
NewsletTux
<Insérez ici votre vie />
Posté le 23-02-2010 à 09:47:24  profilanswer
 

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
n°1968514
mac_gyver8​0
Posté le 23-02-2010 à 14:18:08  profilanswer
 

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
n°1968566
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 23-02-2010 à 16:08:30  profilanswer
 

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
n°1968605
mac_gyver8​0
Posté le 23-02-2010 à 16:50:35  profilanswer
 

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.

n°1968637
mac_gyver8​0
Posté le 23-02-2010 à 18:20:49  profilanswer
 

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>

n°1968865
mac_gyver8​0
Posté le 24-02-2010 à 12:30:35  profilanswer
 


 
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.
 
 

n°1968883
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 24-02-2010 à 13:26:18  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[ Résolu ] [excel 2007] copier une image d'un worksheet à un autre[Résolu]Date('Y') +1
[Résolu] htaccess change tout seul...[Résolu] Faire plusieurs requetes mysql en meme temps
liste chainée et tableau dynamiqueentier a valeur maximum. (RESOLU)
[Résolu] Applet signée : pas d'avertissement de sécurité[Résolu] Batch to C
[Résolu] [Access2007] Création requete complexe[ KSH ] Etrange comportement d'un while dans un for - RESOLU -
Plus de sujets relatifs à : [Résolu] Liste déroulante selon checkbox cochée ou pas.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR