IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Liste déroulante selon checkbox coché ou pas. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Liste déroulante selon checkbox coché ou pas.
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu veux un changement de la liste sans rechargement, interesse toi a Ajax :
    http://siddh.developpez.com/articles/ajax/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    S'il était possible de ne pas le faire en AJAX ça m'arrangerait. Un script Javascript pourrait faire l'affaire ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Javascript ne peut pas interroger une base de donnée, il a besoin de PHP pour ça.

    Si ton problème ne se situe pas dans l'utilisation de javascript alors fonce sur Ajax car la partie PHP est on ne peut plus traditionnelle.

    Sinon il faudra faire un rafraichissement : formulaire avec la case - envoi - construction de la liste avec la valeur recu ; et en faisant cela tu as fait quasiemment comme en Ajax sauf qu'il manque la partie javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Mon formulaire est en PHP, dans ce cas il me suffirait d'inclure une requete PHP dans un javascript ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je t'ai dit, javascript ne sait pas faire de requete SQL.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    je confirme les réponses de sabotage. le javascript est exécuté coté client sur le navigateur du visiteur de tes pages, pour interroger ta base de données il te faut exécuter du code php (qui lui tourne coté serveur).

    pour faire classique, tu force sur tes checkbox l'envoi du formulaire en javascript (onclick="javascript:document.tonform.submit();")
    puis en php tu récupère la case coché pour faire tes requêtes sql et remplir ton select. mais ce sera toute la page qui sera rechargée et pas seulement ta liste.
    la meilleur solution reste celle proposé par sabotage: utilise AJAX

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Citation Envoyé par nsanabi
    onclick="javascript:document.tonform.submit();")
    onclick attend déjà une/des instruction(s) javascript donc inutile de mettre le motif "javascript:".

  9. #9
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    onclick attend déjà une/des instruction(s) javascript donc inutile de mettre le motif "javascript:".
    c'était pour montrer que c'est un code javascript, cela aurai pu être du vbscript aussi .
    mais il est vrai que cela fonctionnera sans le "javascript:" car généralement les navigateur acceptent du javascript par défaut

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
       <script language="JavaScript" type="text/javascript">
    // Pour le premier menu déroulant
    function ChangeStatut(formulaire) 
    {      
        if (formulaire.DEFT_objlist1.checked == 1)
    		{            
    		document.getElementById("DISPLAY_obj1").style.display = "block";       
    		}             
    	   else {     
        	    document.getElementById("DISPLAY_obj1").style.display = "none";           
            	 }                                        
    	}
     
    </script>
     
    <script language="JavaScript" type="text/javascript">
    // pour le deuxieme menu déroulant
    function ChangeStatut2(formulaire2) 
    {      
        if (formulaire2.DEFT_objlist2.checked == 1)
    		{            
    		document.getElementById("DISPLAY_obj2").style.display = "block";       
    		}             
    	   else {     
        	    document.getElementById("DISPLAY_obj2").style.display = "none";           
            	 }                                        
    	}
     
    </script>

    Les checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Windows <input name="DEFT_objlist" type="checkbox" id="DEFT_objlist" style="margin-top: 0;" onclick="ChangeStatut(this.form);" checked="checked" />
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <div id="DISPLAY_obj1">  
     <?php
     
    		 include('connexion.php');
     
    		$requete = "select * from logiciels where DA_MV = 'DA'";
     		$resultat = mysql_query($requete) or die("erreur dans la requ&eacute;te $requete");
     
    		while ($tableau = mysql_fetch_object($resultat))
    			$nom_logiciels[] = $tableau->nom_logiciels;
     
    		echo "<select id='OBJ_int1' name='OBJ_int1'>";
    	 	echo "<option> </option>";
    			for ($i=0;$i<count($nom_logiciels);$i++)
     
    				echo "<option value='$nom_logiciels[$i]'>$nom_logiciels[$i]</option>";
     
    		echo "</select>";
    		mysql_close(); 
    	?>
     </div>

    Le 2eme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <div id="DISPLAY_obj2">
          <?php
     
    		 include('connexion.php');
     
    				$requete = "select * from DA_MV";
     		$resultat = mysql_query($requete) or die("erreur dans la requ&eacute;te $requete");
     
    		while ($tableau = mysql_fetch_object($resultat))
    			$nom_logiciels[] = $tableau->nom_logiciels;
     
    		echo "<select id='OBJ_int2' name='OBJ_int2'>";
    	 	echo "<option> </option>";
    			for ($i=0;$i<count($nom_logiciels);$i++)
     
    				echo "<option value='$nom_logiciels[$i]'>$nom_logiciels[$i]</option>";
     
    		echo "</select>";
    		mysql_close(); 
    	?>
          </div>



    nous ne voyons pas d'autres explications.


    Nicolas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. checkbox coché ou pas ?
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 10h16
  2. Réponses: 7
    Dernier message: 10/01/2006, 10h27
  3. Réponses: 2
    Dernier message: 14/09/2005, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo