Po55
Messages postés5Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention25 juillet 2005
-
14 juil. 2005 à 08:58
Po55
Messages postés5Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention25 juillet 2005
-
25 juil. 2005 à 08:32
Bonjour,
Je cherche à faire un truc qui me semble tout con, mais malgré mes recherches, je n'y arrive pas.
Alors voilà, j'ai une liste déroulante avec 2 dates (2003 et 2004). Je
voudrais récupérer la valeur selectionnée (sans cliquer sur un bouton)
pour ensuite la passer en paramètre d'une url.
cs_lfontaine
Messages postés203Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention11 mai 2006 19 juil. 2005 à 05:35
Salut,
Si tu veux que la variable passes lorsque tu cliques sur le lien il faut appeler le javascript depuis le lien. EN AUCUN CAS TU NE PEUX CHANGER LA VALEUR D'UNE VARIABLE COLDFUSION DEPUIS UN JAVASCRIPT SANS RECHARGER LA PAGE. - desole il fallait que ca sorte ;o)
Donc ce que tu cherches ressemblerait me semble t il a un truc du style:
cfquery
Messages postés15Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention31 mars 2006 16 juil. 2005 à 12:00
ESSAIE LE CODE SUIVANT VOIR
<cfif isdefined("form.an")>
<cfset an = form.an>
<cfelse>
<cfset an = 2004> <!--- Puisque ton selected est pointé sur 2004 --->
</cfif>
<cfform name="choix1" METHOD="post">
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 16 juil. 2005 à 20:58
Ok..
Avec la réponse de CFQuery, je comprends mieux. Je pensais que tu
voulais changer l'URL sans faire un Submit. Si c'est le cas, il te
faura utiliser Javascript et non Cold fuison ki ne peut rien
faire pour toi..
De mémoire la valeur doit se retrouver en Javascript ainsi.
document.monForm.an.elements[document.monForm.an.selectedIndex].value ou kelke chose dans le genre..
S.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Po55
Messages postés5Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention25 juillet 2005 18 juil. 2005 à 08:15
Merci beaucoup pour vos réponses.
Avec ton code, cfquery, la variable 'an' reste égale à 2003. Elle ne prend jamais la valeur 2004. Je ne sais pas trop pourquoi.
Je pense également, comme tu le dis syndrael, qu'il faut passer par
javascript. J'ai essayé un peu mais je n'arrive pas à renvoyer une
variable de javascript vers coldfusion. Si vous avez une solution, elle
serait la bienvenue car je commence un peu à désespérer...
cs_lfontaine
Messages postés203Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention11 mai 2006 18 juil. 2005 à 08:41
Salut PO55,
Ce que tu veux faire n'est pas possible puisque le select est au niveau client et que donc CF ne peut pas voir ces valeurs dans la mesure ou la page est deja processee.
Ce que tu peux faire c'est un truc du style (pas teste):
Avec ma_fonction qui valorise une variable coldfusion ('an') en
fonction du value du select. Le hic, c'est que je n'arrive pas à
renvoyer une variable coldfusion avec javascript.
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 23 juil. 2005 à 01:09
Bon.. je vais me permettre une petite remarque (depuis le temps que je suis pas venu, il faut au moins ça...)
ce que dit Laurent(lfontaine) est tout à fait justifié, et je te
déconseillerais d'utiliser le script de cfquery.. d'ailleurs si tu
creuse un peu les deux scripts proposés et validés ne fonctionnent pas
vraiment de la même façon, et tu te rendras compte de la différence
lorsque tu installera ton script ailleurs que sur un serveur local.
petite démonstration textuelle...
<hr size="2" width="100%">
Dans le script de lfontaine, quelque soit le temps de réponse du serveur :
1) tu sélectionne une valeur dans la liste
2) tu clique sur ton lien, qui par javascript(donc coté client, donc
totalement transparent... pas d'appel au serveur ni besoin de recharger
la page) va prendre la valeur sélectionnée dans la liste et passe la
valeur 'an' en paramètre
3) tu attéri sur ta page choisie par le lien avec la bonne année
<hr size="2" width="100%">
Dans le script de cfquery il se passe la chose suivante, si le temps de réponse du serveur est rapide :
1) tu sélectionne une valeur dans la liste, lançant automatiquement l'ordre de recharger la page
2) le temps de réponse étant rés rapide, la page se recharge en trés
peu de temps, de façon quasi invisible
pour l'utilisateur(je dis bien quasi... car en utilisant une mise en
page un peu lourde et complexe, ça fera une espèce de flash...), en
passant en paramètre 'an' la valeur choisie dans
la liste. Cold fusion reprend la valeur et la met dans le lien
3) tu cliques sur ton lien qui passe ta valeur an choisie précédemment en paramètre
4) tu attéri sur ta page choisie par le lien avec la bonne année.
imagine la même chose avec un serveur ayant un temps de réponse suffisamment long
1) tu sélectionne une valeur dans la liste, lançant automatiquement l'ordre de recharger la page
2) le serveur étant trés lent, ta page ne se recharge pas tout de
suite.( La page précédente reste affichée tant que le serveur n'a pas
envoyé suffisamment d'information sur la page en cours de chargement).
Ceci te laissant suffisamment de temps pour cliquer sur ton lien avant
que la page ne soit rechargée
3) tu cliques donc sur ton lien qui possède la valeur an définie
originellement au chargement de la page (bref celle qui apparait avant
l'étape 1)
4) tu atterri sur ta page choisie, mais avec une mauvaise année...
<hr size="2" width="100%">voilà voilà... et si tu veux vérifier par toi
même, fais toi une petite boucle un peu longue (genre cfloop bouclant
10000 fois) au début de tes pages coldfusion ou dépose ton script sur
un serveur que tu atteins par un réseau super lent...
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 23 juil. 2005 à 01:39
Autre petite remarque : tu précises bien que tu ne veux pas de
redirection lors de la sélection dans la liste.. c'est presque ce que
fait le script de cfquery, qui fait recharger la même page pour changer
le lien... (cfquery va croire que je lui en veux...)
Pour cfquery : ton <cfif isdefined("form.an")... <cfset
an=form.an>...</cfif> sont inutiles pour plusieurs
raisons :
si tu indique a CF d'utiliser #an# il regardera si les variables
#form.an#, #url.an#, #an# (enfin.. il y a d'autres préfixes, pour ça
regarder la doc cf pour avoir la liste et l'ordre de traitement auto)
existent et si oui utilisera automatiquement le premier trouvé, défini
et contenant une valeur, en tant que #an#.
il existe aussi le tag <cfparam> que tu peux utiliser ainsi
<cfparam name="an" default="2004"> qui signifie que si la var
#an# n'est pas définie elle prendra par défaut la valeur 2004
ce qui signiefie donc, en combinaison avec la capacité de cf cité
précédemment que s'il y a un #form.an# défini, il le mettra
automatiquement dans la var #an#, sinon il utilisera 2004.
J'en profite également pour proposer une autre solution, qui est
presque équivalent a celle de laurent, sauf que la variable annee est
passée en tant que variable de formulaire (ce qui ne change rien, si tu
ne t'amuse pas à distinguer les variables d'url, de formulaire,
générales et autres)
cfquery
Messages postés15Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention31 mars 2006 23 juil. 2005 à 13:21
Je suis tout à fait d'accord avec les remarques de Bastoun.
Je veux tout de même préciser( si jè bien piger son code) que sa variables annee serait recuperée sur les page1 et page2 par la methode form. et non url.
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 23 juil. 2005 à 14:59
tout a fait... mais si tu ne précise pas la méthode (ni form, ni url)
pour récupérer la variable annee, ça fonctionnera... bon après, faut
voir si tu veux différencier form/url ou pas...
Po55
Messages postés5Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention25 juillet 2005 25 juil. 2005 à 08:32
Merci beaucoup pour toutes ces précisions.
Comme le dit cfquery, en effet, je cherche à récupérer ma variable 'annee' sur les pages1 et 2.
Pour éclaircir un peu mon problème j'ai fait une capture d'écran :
Le lien1 renvoie sur une page où j'ai besoin de ma variable 'annee' (utilisée dans des requètes SQL).
Pour les autres ce sont des fichiers à télécharger (la valeur de 'annee' détermine le répertoire où se trouve les fichiers).
Pour le lien2, en plus de l'année, je dois tenir compte de la langue
('annee' détermine le répertoire et la langue détermine le nom du
fichier).
C'est pour ça que la méthode de cfquery me paraissait pas mal. En effet
en local ça marche très bien, mais j'ai pas encore testé sur le
serveur...
En fin de compte, le problème des liens me semble accessoire, je désire
juste avoir une variable qui prenne comme valeur de le choix effectué
dans le menu déroulant.
Voilà, je ne sais pas si j'ai été très clair, mais merci encore pour votre aide.