Logo du forum
 

Forum TT-Hardware

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » dépendance de champs de recherche
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )


Auteur
Sujet : dépendance de champs de recherche
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 18-05-2006 @ 22:56   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Salut !

Je souhaiterais réaliser ceci : que lorsqu'on séléctionne une valeur spécifique dans un champ SELECT d'un formulaire, un nouveau champ s'affiche. Je ne sais pas si je suis bien clair, alors je vous mets une petite illustration :
Je voudrais donc que le champ option ne s'affiche qu'à une certaine condition sur le champ où il y a "tous"
Je ne sais pas quel langage utiliser (php, javascript, ...)

Merci à tous
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Chuck.hc
Batteur du forum
Membre # 8772

 Avatar du membre
Lieu : Val d'oise

Messages :
3286 (1.63 par jour)


Score :

Message du 18-05-2006 @ 23:12   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

bah tu peux faire ca avec php / javaSCRIPT , suivant ce que tu veux faire afficher dedans ;)

devellope un peu plus pour qu'on puissent t'aider ;)


[message édité le 19-05-2006 @ 10:57 Par Chuck.hc]

----------
- Haut de page -
Soulmanto
Codeur du forum
Membre # 5373

 Avatar du membre
Lieu : Lille

Messages :
12837 (5.73 par jour)


Score :

Message du 18-05-2006 @ 23:17   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Javascript est un des meilleurs choix, voire le meilleur si tu veux éviter d'avoir à recharger la page à chaque changement du champ où il y'a "tous"


[message édité le 18-05-2006 @ 23:17 Par Soulmanto]
----------
Core 2 Duo E6750 2,66 GHz | Asrock Conroe 1333 D667 | 2 Go DDR-II 667 | GeForce 8800 GT 512 Mo | Acer X192W (qui marche bien, sisi spook' :p )
Dell Inspiron 6400 | Core2Duo T5500 | 1 Go DDR-II | ATI X1300 128 Mo

Enfin!! 300 au bowling sur Wii Sports :classe:
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 18-05-2006 @ 23:18   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

cool !

Voilou le code html
Code :

<tr>
<td >Cycle :<td>
<td > <SELECT Name="cycle">
<OPTION> Stage Ingénieur
<OPTION> Stage Technicien
<OPTION> Stage Ouvrier
<OPTION VALUE="" SELECTED>Tous
</SELECT>
<SELECT Name="option">
<OPTION> GSI
<OPTION> GSE
<OPTION> RTC
<OPTION> SIM
<OPTION VALUE=""SELECTED>Option
</SELECT>
<td>



Donc je souhaiterais que l'option ne s'affiche que lorsqu'on sélectionne "Stage Ingénieur", qu'elle ne soit pas visible pour les autres options.

C'est plus clair, besoin d'autre chose ?

Merci en tt cas
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
16700 (5.78 par jour)


Score :

Message du 18-05-2006 @ 23:19   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

tu donne un id a tes 2 select (mettont selectTous et selectId
sur le onchange de ton select, tu appele un petit javascript.
dans ce java script tu fais(truc dans le genre) :
var tous= document.all.selectTous.value;
if (tous=="Tous"){
document.all.selectId.style.display='none'
}
else{
document.all.selectId.style.display=''
}
----------
"May He touch you with His Noodly Appendage"
- Haut de page -
Soulmanto
Codeur du forum
Membre # 5373

 Avatar du membre
Lieu : Lille

Messages :
12837 (5.73 par jour)


Score :

Message du 18-05-2006 @ 23:23   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

tu peux même pousser jusqu'à charger l'intégralité des options possibles pour tous les champs, et en utilisant la technique de Icy, n'afficher que ceux reliés au 1er champ...

Icy > les balises "code"! :siffle:

Code :


var tous= document.all.selectTous.value;
if (tous=="Tous")
{
   document.all.selectId.style.display='none';
}
else
{
   document.all.selectId.style.display='';
}



:capel:

[message édité le 18-05-2006 @ 23:25 Par Soulmanto]
----------
Core 2 Duo E6750 2,66 GHz | Asrock Conroe 1333 D667 | 2 Go DDR-II 667 | GeForce 8800 GT 512 Mo | Acer X192W (qui marche bien, sisi spook' :p )
Dell Inspiron 6400 | Core2Duo T5500 | 1 Go DDR-II | ATI X1300 128 Mo

Enfin!! 300 au bowling sur Wii Sports :classe:
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 19-05-2006 @ 1:09   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Elle est bien cette nouvelle section, très réactive, c'est super !

Merci à tous, je vois ca demain et je vous tiens au courant.
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
3681 (1.84 par jour)


Score :

Message du 19-05-2006 @ 10:23   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Citation du message de Chuck.hc :

..php / java ,..



Javascript :D

Ba même en Php ça marche bien étant donné que tu peux ne recharger que la partie de la page qui correspond à ton formulaire. De plus c'est plus dynamique, et surtout plus light.. si tu as beaucoup de champs.. qui donnent eux même accés à beaucoup d'autre champs.

Aprés si tu veux, tu peux aussi utiliser le php pour générer le code JS, mais encore une fois, plus le nombre d'option sera important plus la page mettra de temps à se charger.. ..Alors aprés à toi de voir s'il n'est pas préférable de recharger la page,plutôt que d'avoir une page monstrueuse...

----------
Mon site perso - le site de notre jeu (en développement) - Le forum du jeu
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 19-05-2006 @ 17:26   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Bon, après plusieurs essais, je ne m'en sort pas et je fais de nouveau appel à vos lumières.

Je vous le code.

html :
Code :

<FORM name="recherche" method="get" action="search2.php" >
(..)
<tr>
<td >Cycle :<td>
<td > <SELECT Name="cycle" id="selectTous" onchange="ajout(this.value)">
<OPTION> Stage Ingénieur
<OPTION> Stage Technicien
<OPTION> Stage Ouvrier
<OPTION SELECTED>Tous
</SELECT>
<SELECT id="selectId"Name="option">
<OPTION> GSI
<OPTION> GSE
<OPTION> RTC
<OPTION> SIM
<OPTION VALUE=""SELECTED>Option
</SELECT>
(...)



et le javascript plus que bien inspiré d'Icy :
Code :

<script type="text/javascript">
<!--
var tous= document.recherche.selectTous.value;
function ajout()
{
if (tous=="Ingénieur")
{
document.recherche.selectId.style.visibility='visible'
}
else{
document.recherche.selectId.style.visibility='hidden'
}
}


//-->
</script>



Maintenant, le résultat est qu'il m'affiche, au chargement de la page, les deux champs. Dès que je change, il m'efface le deuxième (celui qui a pr nom "Option") et aucun choix ne le rend à nouveau visible.

Je rappelle que j'aimerai que le champ ne soit visible que lorsqu'on séléctionne "Ingénieur".
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
3681 (1.84 par jour)


Score :

Message du 19-05-2006 @ 17:38   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Tu as mis Stage ingénieur.. donc il faut que tu ais le même intitulé

Code :

<script type="text/javascript">
<!--
var tous= document.recherche.selectTous.value;
function ajout()
{
if (tous=="Stage Ingénieur")
{
document.recherche.selectId.style.visibility='visible'
}
else{
document.recherche.selectId.style.visibility='hidden'
}
}


//-->
</script>


----------
Mon site perso - le site de notre jeu (en développement) - Le forum du jeu
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 19-05-2006 @ 17:44   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

oui, mais non ! Ca ne fonctionne toujours pas, il m'affiche tjs les 2 champs puis un seul à la moindre modif

Edit : Firefox m'indique : "Erreur : document.recherche has no properties" et IE : " 'document.recherche.selectTous' a la valeur NULL ou n'est pas un objet"

[message édité le 19-05-2006 @ 17:49 Par marmade]
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
3681 (1.84 par jour)


Score :

Message du 19-05-2006 @ 17:52   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

De plus tu as déclaré ta variable tous en dehors de la fonction... et puis tu passe déjà ta variable en argument de ta fonction JS..

Code :

<script type="text/javascript">
<!--
function ajout(tous)
{
if (tous=="Stage Ingénieur")
{
document.recherche.selectId.style.visibility='visible'
}
else{
document.recherche.selectId.style.visibility='hidden'
}
}


//-->
</script>


ou bien
Code :

<FORM name="recherche" method="get" action="search2.php" >
(..)
<tr>
<td >Cycle :<td>
<td > <SELECT Name="cycle" id="selectTous" onchange="ajout">
<OPTION> Stage Ingénieur
<OPTION> Stage Technicien
<OPTION> Stage Ouvrier
<OPTION SELECTED>Tous
</SELECT>
<SELECT id="selectId"Name="option">
<OPTION> GSI
<OPTION> GSE
<OPTION> RTC
<OPTION> SIM
<OPTION VALUE=""SELECTED>Option
</SELECT>
(...)


et
Code :

<script type="text/javascript">
<!--

function ajout()
{
var tous= document.recherche.selectTous.value;
if (tous=="Ingénieur")
{
document.recherche.selectId.style.visibility='visible'
}
else{
document.recherche.selectId.style.visibility='hidden'
}
}


//-->
</script>



Ceci dit, je ne suis pas une fléche en JS
----------
Mon site perso - le site de notre jeu (en développement) - Le forum du jeu
- Haut de page -
Icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
16700 (5.78 par jour)


Score :

Message du 19-05-2006 @ 17:55   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Code :

<SELECT Name="cycle" id="selectTous" onchange="ajout(this.value)">
<OPTION>Stage Ingénieur</OPTION>
<OPTION>Stage Technicien</OPTION>
<OPTION>Stage Ouvrier</OPTION>
<OPTION SELECTED>Tous
</SELECT>
<SELECT id="selectId"Name="option">
<OPTION> GSI
<OPTION> GSE
<OPTION> RTC
<OPTION> SIM
<OPTION VALUE=""SELECTED>Option
</SELECT>
<body>


+
Code :

function ajout(value){
   if (value=="Stage Ingénieur"){
      document.getElementById("selectId").style.visibility="visible";
   }else{
      document.getElementById("selectId").style.visibility="hidden";
   }
}



fonctionne :o
t'avais oublié de passer le param ds le onchange, des ; en fin de ligne etc...
Hier j'ai tappé sans vérif, et il était 23h :p


----------
"May He touch you with His Noodly Appendage"
- Haut de page -
Soulmanto
Codeur du forum
Membre # 5373

 Avatar du membre
Lieu : Lille

Messages :
12837 (5.73 par jour)


Score :

Message du 19-05-2006 @ 17:57   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

De plus, pour pouvoir être exploitables, les champs "select" doivent avoir le formalisme suivant:

Code :


<select name='cycle' onchange='ajout()'>
   <option value='1'>valeur 1</option>
   <option value='2'>valeur 2</option>
   <option value='3'>valeur 3</option>
   <option value='4'>valeur 4</option>
</select>


----------
Core 2 Duo E6750 2,66 GHz | Asrock Conroe 1333 D667 | 2 Go DDR-II 667 | GeForce 8800 GT 512 Mo | Acer X192W (qui marche bien, sisi spook' :p )
Dell Inspiron 6400 | Core2Duo T5500 | 1 Go DDR-II | ATI X1300 128 Mo

Enfin!! 300 au bowling sur Wii Sports :classe:
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 20-05-2006 @ 12:14   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

:mad: Ca fonctionne à peu près ! L'affichage du 2ème champ réagit bien en fonction des valeurs du 1er mais pas au chargement de la page. Comme vous avez pu le voir, le javascript, je ne connais pas trop donc j'ai encore besoin de votre aide pour mettre ca au point.

J'ai repris le code d'Icy

Soulmanto : j'ai bien pris en compte tes remarques, j'ai rajouté les "value".
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
16700 (5.78 par jour)


Score :

Message du 20-05-2006 @ 12:57   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

rajoute ca dans le tag body ca devrait aller:
Code :

<body onload='ajout("ytuf")'>



[message édité le 20-05-2006 @ 15:59 Par Soulmanto]
----------
"May He touch you with His Noodly Appendage"
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 20-05-2006 @ 13:03   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

hum, tu peux m'expliquer parce que là, je ne comprends rien :???:
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -
Chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
3681 (1.84 par jour)


Score :

Message du 21-05-2006 @ 9:13   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

En fait la ligne qu'il t'as demandé de rajouter permet d'appeler la fonction ajout avec une valeur qui n'est pas stage ingénieur, donc qui masque le deuxiéme champs.
Cette fonction est donc appelé sur le chargement de la page...
----------
Mon site perso - le site de notre jeu (en développement) - Le forum du jeu
- Haut de page -
marmade
Master
Membre # 16343

 
Lieu : IdF

Messages :
323 (0.21 par jour)


Score :

Message du 21-05-2006 @ 12:34   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

niquel, ca fonctionne à la perfection :) Merci à tous
----------
Gigabyte GA-K8NF-9 | AMD64 3000+ | Gigabyte Geforce 6600 | 1024DDR Samsung | IIyama PL E435S ||
Dell D620 | Intel T2300 @ 1,66GHz | Nvidia Quadro NVS 110M | 1024 DDR
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2006

Valid XHTML 1.0 Transitional

Page générée en 0.28 secondes