liste déroulante affichage automatique

liste déroulante affichage automatique - HTML/CSS - Programmation

Marsh Posté le 04-02-2005 à 09:37:30    

Bonjour,  
   
je voudrais savoir comment on insère une donnée dans une zone texte en sélectionnant une donnée dans une liste déroulante.    
   
je vous dit mon cas:  
j'ai une liste déroulante ou il y a mes noms d'utilisateurs et en dessous une zone texte qui représente le nom de leur service.  
quand je cliquerais sur un nom d'utilisateur, j'aimerais que leur service apparaisse automatiquement dans la zone texte...    
   
déjà est ce que c possible de le faire? Si oui, comment? (il faut utiliser onchange, onclick sur la liste déroulante?)    
   
c'est assez urgent svp.....  
merci en attendant,    
   
si qq1 a une idée n'hésitez pas....    

Reply

Marsh Posté le 04-02-2005 à 09:37:30   

Reply

Marsh Posté le 04-02-2005 à 10:08:52    

tu peux utiliser onChange si tu veux ;)

Reply

Marsh Posté le 04-02-2005 à 11:49:43    

esrevni a écrit :

tu peux utiliser onChange si tu veux ;)


 
ok j'en avais ma petite idée
mais je fais un onchange dans ma liste déroulante et ma cible serait quoi? comment je peux dire que ma zone texte recevra le nom du service de tel user?(avec une requête sql ou en javascript? :??: )
 
 

Reply

Marsh Posté le 04-02-2005 à 11:57:16    

Tu veux faire ça côté client, ou côté serveur ?

Reply

Marsh Posté le 04-02-2005 à 13:18:59    

FlorentG a écrit :

Tu veux faire ça côté client, ou côté serveur ?


 
ben coté client
en fait c'est une sorte "d'authentification".
Pour tout vous expliquer, le client a à faire à ce formulaire quand il veut déclarer un incident.
Ensuite, il choisit son nom dans une liste déroulante. et au lieu qu'il tape son service, celui-ci s'affiche automatiquement!
voila
 
le souci c'est que je ne vois pas comment faire pour qu'il s'affiche, j'ai mes petites idées mais je vois pas où les mettre..
 
faut dire que je suis encore un newbie en php et je connais peu le javascript... :(


Message édité par zeal21 le 04-02-2005 à 13:19:51
Reply

Marsh Posté le 04-02-2005 à 13:47:42    

Tu donne un id a ta zone texte. Ensuite tu peux faire un truc du genre :

Code :
  1. <script type="text/javascript">
  2. function remplir(liste) {
  3.   var inputtext = document.getElementById("service" );
  4.   inputtext.value = services[liste.selected];
  5. }
  6. </script>
  7. <form>
  8. <select name="nom" onchange="remplir(this);">
  9. <option selected="selected" value="0">Veuillez choisir un nom</option>
  10. <option value="1">Pierre Tramo</option>
  11. <option value="2">John Titor</option>
  12. <option value="3">Foo Bar</option>
  13. </select>
  14. <input type="text" name="service" id="service" value="" />
  15. </form>


Il suffit que tu remplisses le tableau "services" avec les services correspondants aux noms et ce sera bon.
 
Attention cependant, si le visiteur n'as pas de JS ca ne marchera pas.


Message édité par cerel le 04-02-2005 à 13:48:27
Reply

Marsh Posté le 04-02-2005 à 14:43:39    

en fait je comprends pas trop ton système  
là tu me donnes une fonction pour que je repmlisse ma liste!:??:  
Or ma liste déroulante contient mes noms d'utilisateurs....  
cette liste est remplie directement avec une requête SQL
ce qu'il me faut c'est juste le lien entre la liste et la zone texte pour que, dès que je sélectionne un nom, son service apparait.... :sarcastic:  
 
a moins que je n'ai pas compris ce que t'as voulu me mettre

Reply

Marsh Posté le 04-02-2005 à 14:48:56    

et les services, ils sont où ? dans un tableau ou dans les values de ton select ?

Reply

Marsh Posté le 04-02-2005 à 15:04:55    

esrevni a écrit :

et les services, ils sont où ? dans un tableau ou dans les values de ton select ?


 
mes services sont dans une table MySql ainsi que mes users
mes users sont remplies dans la liste.

Reply

Marsh Posté le 04-02-2005 à 15:07:30    

Si tes services ne sont pas sur le client au moment du clic, tu dois refaire un appel au serveur. Sinon, tu peux remplir les value des select directement avec tes services et faire un truc du style

Code :
  1. onChange="document.getElementById('tonIdDuChampTexte').value=this.value";

Reply

Marsh Posté le 04-02-2005 à 15:07:30   

Reply

Marsh Posté le 04-02-2005 à 15:22:13    

je comprends ta phrase
[citation]Si tes services ne sont pas sur le client au moment du clic, tu dois refaire un appel au serveur[/citation]

Reply

Marsh Posté le 04-02-2005 à 15:22:57    

tout va bien alors ;)
 
en gros, le client, il va pas les inventer, tes services. Soit il les a dans un tableau ou dans les value des select et ils sont exploitables, soit il les a pas, et il faut refaire une requête sql pour rapatrier le bon service correspondant au nom selectionné. Comprendo ?


Message édité par esrevni le 04-02-2005 à 15:25:25
Reply

Marsh Posté le 04-02-2005 à 15:31:56    

a daccord!! lol
mais en fait je veux pas mettre mes services dans une liste déroulante! sinon ca serait trop simple! lol :D
là où je vaux mettre mes services c'est une zone de texte
et je veux pas que mes utilisateurs saisissent leur service(sinon trop de doublon ou trop d'ecriture différente!)
je veux que dès qu'il choisissent leur nom le service s'affiche automatiquement dans la zone texte!
et toi t'as compris? ;) :p

Reply

Marsh Posté le 04-02-2005 à 15:36:25    

Bon je vais essayé de faire simple,
 
tu as un select avec des options :
 

Code :
  1. <option value="serviceDuGus">nom du gus</option>


 
dans ton select tu mets
 

Code :
  1. onChange="document.getElementById('tonIdDuChampTexte').value=this.value";


 
ainsi quand tu le choisis gus dans ton select, magie de paris, le nom du service ("serviceDuGus" qui est dans la value de l'option) apparaitra dans ton champs texte.
 
là je peux pas faire plus

Reply

Marsh Posté le 04-02-2005 à 15:43:29    

2-3 petites choses a demander:
- tu veux que mes services soit dans une liste déroulante?
- OU je choisi mes utilisateurs dans une liste déroulante, ensuite je choisi son service dans une liste déroulante et cet service se met dans la zone texte?
- ce que tu mets dans value, c'est ce qui'il va s'aficher à l'écran?
 
 

Reply

Marsh Posté le 04-02-2005 à 15:50:51    

zeal21 a écrit :

2-3 petites choses a demander:
1 tu veux que mes services soit dans une liste déroulante?
2 OU je choisi mes utilisateurs dans une liste déroulante, ensuite je choisi son service dans une liste déroulante et cet service se met dans la zone texte?
3 ce que tu mets dans value, c'est ce qui'il va s'aficher à l'écran?


 
1. non dans les values des options. une value est en quelque sorte une clé et c'est elle qui va etre mise dans la requete envoyé au serveur (et non les valeurs affichées dans le select)
 
2. non tu choisis un utilisateur et comme dans le value, il y aura déjà son service, tout va bien.
 
3.  :non: non, non et non  :non: relis la réponse du 1
 
tu as déjà utilisé un select dans un contexte C/S ?

Reply

Marsh Posté le 04-02-2005 à 16:02:42    

ben j'utilise un select pour metre mes utilisateurs et aussi quand ils veulent voir ces incidents. ils choisissent des catégories auquel appartiennent des incidents, leur statu(en cour,clos...)
 
et en fait je viens juste de voir que j'allais justement faire un peu le même procédé en ce qui conecrne les value...
dsl  
 
en tout merci de me consacrer du temps ;)

Reply

Marsh Posté le 04-02-2005 à 16:09:24    

OUPS
je viens de m'apercevoir d'un truc  
là ton code c'est cool pour 3utilisateurs avec 2services!!
mais j'ai une 50 voir 100 utilisateur et 20services...
:s
 
donc ton truc c'est cool mais bon ca me convient pas de trop....
dsl..... :s

Reply

Marsh Posté le 04-02-2005 à 16:20:35    

euh non, mon code il convient pour autant d'utilisateurs que tu veux (je ne connais pas la limite du nombre d'options pour un select, si il y en a une, mais je ne crois pas)

Reply

Marsh Posté le 04-02-2005 à 16:24:50    

oué d'accord je comprends bien
mais ce que je veux dire c'est qu'il y a pas un moyen pour que les services soient rentrés "automatiquement"
je vais pas me taper 100lignes pour définir que tel personne a tel service...... tu comprends?
sinon c'est du code à la bourrin....

Reply

Marsh Posté le 04-02-2005 à 16:31:59    

Ca faut faire côté serveur alors :/

Reply

Marsh Posté le 04-02-2005 à 16:35:01    

FlorentG a écrit :

Ca faut faire côté serveur alors :/


 
en gros c'est presque impossible ce que je veux faire...??!!  :??:  :(
 
abused.... :(

Reply

Marsh Posté le 04-02-2005 à 16:35:48    

Si, tout est possible ;) Mais dans la mesure du possible, faut tout faire côté serveur, c'est le mieux :)

Reply

Marsh Posté le 04-02-2005 à 16:37:01    

esrevni a écrit :

Bon je vais essayé de faire simple,
 
tu as un select avec des options :
 

Code :
  1. <option value="serviceDuGus">nom du gus</option>


 
dans ton select tu mets
 

Code :
  1. onChange="document.getElementById('tonIdDuChampTexte').value=this.value";


 
ainsi quand tu le choisis gus dans ton select, magie de paris, le nom du service ("serviceDuGus" qui est dans la value de l'option) apparaitra dans ton champs texte.
 
là je peux pas faire plus


L'inconvenient avec cette methode c'est qu'il ne recupere que le service mais pas le nom du gus... Il me semble que se serait mieux s'il pouvait recuperer les 2 a la fois.
 
zeal21 :
Dans le systeme que je t'ai donne, tu dois remplir le tableau "service" en javascript avec les services correspondants aux utilisateurs.
Tu dois donc faire 2 requetes SQL. Une pour recupere les noms des utilisateurs et construire ton select. Et enfin une autre requete SQL pour construire le tableau JavaScript qui va contenir les services correspondants.
Si tu connais un peu JS tu pourrais meme "optimser" ca et creant un tableau d'objets. Ces objets auraient le nom du client et le service. Ensuite tu pourrais meme utiliser ce tableau pour construire ton select.

Reply

Marsh Posté le 04-02-2005 à 16:40:15    

apparemment tu utilises du php pour ta page. Moi, je fais du java et en java, j'aurai utilisé un tableau d'objet Utilisateur avec comme attributs : le nom et le service. Après je fais une boucle pour remplir mon select du style

Code :
  1. <% for (int i=0 ; i<tableauUtilisateur.length() ; i++){%>
  2. <option value="<%=tableauUtilisateur[i].getService()%>"><%=tableauUtilisateur[i].getNom()%></option>
  3. <%}%>


 
mon tableau peut alors avoir 100 utilisateurs, mon select aura 100 entrées et j'aurai pas bcp codé pour ça.
 
Tu vois ce que je veux dire ?


Message édité par esrevni le 04-02-2005 à 16:40:58
Reply

Marsh Posté le 04-02-2005 à 16:48:25    

oué d'accord...
le souci c'est que j'apprends déjà en live le JS parce que la je suis en stage lol
et mes services dans une table MySQl...
je fais le site en PHP/MySql.....
j'ai déjà rentré mes services....
 
mais en fait je vais posé une question con: sans faire de tableau en javascript, en ayant que ma table users et service, avec php et un pe JS, est ce que je peux faire ce que je demande c'est a dire, pouvoir mettre dans ma zone texte "service", le nom du service rien qu'en sélectionnant un le nom d'un utilisateur ddans une liste déroulante? :??:
 
parce que la je nage un peu beaucoup...
si c'est pas possible ils choisiront leur service dans une liste déroulante pi voila ca sera plus simple....
 
en attendant , merci beacoup ;)

Reply

Marsh Posté le 04-02-2005 à 16:53:55    

zeal21 a écrit :


 
j'ai déjà rentré mes services....
 


 
Dans une table MySQL ? si oui, elle doit être liée quelque part à la table utilisateur. Il suffit juste de créer un recordSet (je connais pas php donc ne vous jeter pas sur moi si c'est pas la bonne manière de faire) qui te ramène pour chaque utilisateur son nom et son service. Après tu utilises ce recorset (pas taper) comme un tableau d'utilisateurs et tu fais ce qu'on te dit depuis maintenant... 9h37 ce matin. Heurseument que je suis au boulot, j'aurai pas été aussi patient à la maison  :D

Reply

Marsh Posté le 04-02-2005 à 17:03:10    

LOL
ralala je sais pas ou tu bosses mais tu doit pas faire grand chose!! lol  
nan désolé je paux pas juger...
 
ben oué c'est dans une table Mysql et la table users a comme clé étrangère l'ID des services.
 
en fait faudrait que je crée une fonction qui fait ca et je l'appelle quand on change dans ma liste avec un "onchange" !!
non?
 
MERCI encore.... :D

Reply

Marsh Posté le 04-02-2005 à 17:10:27    

zeal21 a écrit :

LOL
ralala je sais pas ou tu bosses mais tu doit pas faire grand chose!! lol  
nan désolé je paux pas juger...
 
ben oué c'est dans une table Mysql et la table users a comme clé étrangère l'ID des services.
 
en fait faudrait que je crée une fonction qui fait ca et je l'appelle quand on change dans ma liste avec un "onchange" !!
non?
 
MERCI encore.... :D


 
je fais pas grand chose ? faut dire que ce que tu mets 1 journée à coder, je l'aurais fini à 9h39  :D  
 
pour tes tables, tu peux pas créer une requête qui te ramenerait juste les noms et les services associés dans un recordset ? si oui, tu peux tout faire côté client : sur le onChange, une fonction JS va remplir directement ton champs texte (cf mon 3ème message). ouf dsl mais comme le disait lorie C'EST LE WEEK END, SUPER WEEK END

Reply

Marsh Posté le 07-02-2005 à 11:00:41    

tu l'aurais peut- être fait en 2minutes en JS alors que je ne fait pas un site en JS...
c'est ca le problème....
tant pis
++

Reply

Marsh Posté le 07-02-2005 à 11:19:28    

Cerel a écrit :


Code :
  1. <script type="text/javascript">
  2. function remplir(liste) {
  3.   var inputtext = document.getElementById("service" );
  4.   inputtext.value = services[liste.selected];
  5. }
  6. </script>
  7. <form>
  8. <select name="nom" onchange="remplir(this);">
  9. <option selected="selected" value="0">Veuillez choisir un nom</option>
  10. <option value="1">Pierre Tramo</option>
  11. <option value="2">John Titor</option>
  12. <option value="3">Foo Bar</option>
  13. </select>
  14. <input type="text" name="service" id="service" value="" />
  15. </form>




 
j'ai testé cette méthode comme celle de esrevni. Elles fonctionnent mais un souci.
quand je choisis une valeur, c'est l'ID de l'utilisateur...
mais je pense que cela vient du fait que ma liste déroulante a comme valeur "iduser" et se base sur l'ID de l'utilisateur...
pour résoudre le problème que dois-je faire? une requête? :??:  
 
merci de vos réponses ;)

Reply

Marsh Posté le 09-02-2005 à 14:17:14    

bon ben la chui desepéré....
je n'arrive pas a afficher mon nom de service...
j'ai essayé de faire uen requête pour retrouver le nom du service mais impossible...  
je vois pas comment il faut...
si une bonne âme veut bien m'aider ca serait cool...
merci...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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