[Resolu] [php/mySQL JS?] Case a cocher evenementielle.

Case a cocher evenementielle. [Resolu] [php/mySQL JS?] - PHP - Programmation

Marsh Posté le 11-06-2007 à 06:09:43    

Bonjour
 
Je cherche à faire apparaitre une check box à coté d'un liste déroulante que si on selectionne un champ specifique dans la liste déroulante.
 
Ma liste déroulantes est generer par une requete php
 

Code :
  1. <? 
  2. $db_conn = mysql_connect("localhost", "util", "mdp" );
  3. mysql_select_db("name_base", $db_conn);
  4. $SQL = "SELECT `id_categorie`, `lib_categorie` FROM categorie ORDER BY `id_categorie` ASC, `lib_categorie` ASC";
  5. $res = mysql_query($SQL);
  6. echo "<OPTION VALUE='#'>==> Choisir categorie <==</option>\n";
  7. while($val = mysql_fetch_array($res))
  8.              {
  9.  echo "<OPTION VALUE='".$val["id_categorie"]."'>".$val["lib_categorie"]."</option>\n";
  10. }
  11.          ?>


 
 
j'imagine que le code est a faire en JS mais je n'ai aucune idée de comment m'y prendre :s
Si qqun a une idée, je l'en remercie d'avance ;)


Message édité par kashir le 12-06-2007 à 15:55:04
Reply

Marsh Posté le 11-06-2007 à 06:09:43   

Reply

Marsh Posté le 11-06-2007 à 10:37:37    

D'abord tu fais ton formulaire complet.
 
Ensuite tu mets ta checkbox en display:none par défaut (sauf si l'option sélectionnée par défaut est la bonne).
 
Enfin tu ajoutes un évenement sur ton select : à chaque fois qu'il change, tu vérifies si l'option choisie est celle que tu veux. Si oui, tu mets la checkbox en display : block, sinon tu la remets en display : none.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 11-06-2007 à 12:30:04    

La propriété display n'est pas stipulé par l'intel insense de dreamweaver bizarement.
 
Ce que tu essaie de me dire c'est que je dois par default la rendre invisible et quand mon champ est selectionner dans ma liste deroulante alors a ce moment là l'evenement declenche l'apparition de la checkbox ?
C'est ce que j'essaie de faire en tout cas mais rendre invisible la check box est faisable, mais en evenementielle, ça reste un peu plus dur ;)
 
 
Ou veut tu mettre le display dans cette balise ?  

Code :
  1. <input type="checkbox" name="checkbox" value="checkbox">


Message édité par kashir le 11-06-2007 à 12:31:07
Reply

Marsh Posté le 11-06-2007 à 12:36:24    

<input type="checkbox" name="checkbox" value="checkbox" style="display:none;">

Reply

Marsh Posté le 11-06-2007 à 12:43:04    

Ok ça marche pour la box
 
ensuite je dois creer un evenement sur le select de la deroulante
 

Code :
  1. <select name="categorielocation" ;>
  2. <? 
  3. $db_conn = mysql_connect("localhost", "*****", "******" );
  4. mysql_select_db("********", $db_conn);
  5. $SQL = "SELECT `id_categorie`, `lib_categorie` FROM categorie ORDER BY `id_categorie` ASC, `lib_categorie` ASC";
  6. $res = mysql_query($SQL);
  7. echo "<OPTION VALUE='#'>==> Choisir categorie <==</option>\n";
  8. while($val = mysql_fetch_array($res)) {
  9.  echo "<OPTION VALUE='".$val["id_categorie"]."'>".$val["lib_categorie"]."</option>\n";
  10. }
  11. ?>
  12. </select>


 
C'est a dire la propriétée "OnChange" je suppose ?
Que dois-je lui mettre en argument ?

Reply

Marsh Posté le 11-06-2007 à 12:47:07    

De mémoire tu devrais avoir un truc qui ressemble a ca :  
 
<select name="categorielocation" onchange="document.getElementById('checkbox').style.display='block';">

Reply

Marsh Posté le 12-06-2007 à 15:02:31    

oui ton bout de code fonctionne mais ne repond pas totalement a ce que je recheche.
 
Je desirerai que ma check box n'apparaissent que si je selectionne un certain champ dans ma liste deroulante, et dans le cas ou je met ton code elle apparait dés que je change de champ :s
 
Je continue a chercher mais si qqun a une idée je suis toute ouïe !

Reply

Marsh Posté le 12-06-2007 à 15:16:26    

Faut adapter enfin...

Code :
  1. onchange="document.getElementById('checkbox').style.display=(this.value=='avec checkbox' ? 'block' : 'none');"

Reply

Marsh Posté le 12-06-2007 à 15:18:14    

fait un test sur la valeur du champs selectionné au moment du onchange

Reply

Marsh Posté le 12-06-2007 à 15:20:03    

cgo2 a écrit :

Enfin tu ajoutes un évenement sur ton select : à chaque fois qu'il change, tu vérifies si l'option choisie est celle que tu veux. Si oui, tu mets la checkbox en display : block, sinon tu la remets en display : none.


 
Faut utiliser if, else, et this.options[this.selectedIndex].value... allez un petit effort on va pas t'écrire tout le code non plus :o
 
edit : ah ben si...

Message cité 1 fois
Message édité par cgo2 le 12-06-2007 à 15:41:39

---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 12-06-2007 à 15:20:03   

Reply

Marsh Posté le 12-06-2007 à 15:21:24    

this.value c'est plus court, cf code précédent...

Reply

Marsh Posté le 12-06-2007 à 15:36:54    

cgo2 a écrit :

Faut utiliser if, else, et this.options[this.selectedIndex].value... allez un petit effort on va pas t'écrire tout le code non plus :o


 
ça marche trés bien sans if & else t'en fait pas mais merci de t'inquieter pour la syntaxe
 
merci et à bientot

Reply

Marsh Posté le 14-06-2007 à 15:46:00    

je poste la reponse quand meme, c'est la moindre des choses
 

Code :
  1. <select name="categorielocation" onchange="
  2. index = (this.options[this.selectedIndex].value);
  3. if (index == 1)
  4. {
  5. document.getElementById('vehicul').style.display='block';document.getElementById('salle').style.display='none';
  6. document.getElementById('checkbox-vehicule').style.display=(this.value == index ? 'block' : 'none');
  7. document.getElementById('checkbox-salle').style.display=(this.value == index ? 'none' : 'block');
  8. }
  9. else
  10. {if ( index == 2)
  11. {
  12. document.getElementById('salle').style.display='block';
  13. document.getElementById('vehicul').style.display='none';
  14. document.getElementById('checkbox-salle').style.display=(this.value == index ? 'block' : 'none');
  15. document.getElementById('checkbox-vehicule').style.display=(this.value == index ? 'none' : 'block');
  16. }
  17. else
  18. {
  19. document.getElementById('vehicul').style.display='none';
  20. document.getElementById('salle').style.display='none';
  21. document.getElementById('checkbox-salle').style.display=(this.value == index ? 'none' : 'block');
  22. document.getElementById('checkbox-vehicule').style.display=(this.value == index ? 'none' : 'block');
  23. }
  24. }" >

Reply

Sujets relatifs:

Leave a Replay

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