recherche_webmaster Posté 19 Août 2005 Posté 19 Août 2005 (modifié) Bonsoir, Voilà ce que je souhaite réussir : Passer une variable d'une page à une autre au moyen d'un select. Jusque là c'est très simple. Mais voilà ça se complique : Les champs options du select ne peuvent être composés d'un simple nom. Sinon la page qui va recevoir la variable du select dont la valeur sera le nom contenu dans option ne saura pas quoi aller chercher dans la base (il y a des doublons etc...). Donc dans le select, je dois passer aussi un id précis (par exemple), soit deux variables en une seule fois. C'est impossible n'est-il pas... Mais peut-être vos lumières m'éclaireront-elles et me donneront une idée salvatrice. Modifié 19 Août 2005 par recherche_webmaster
recherche_webmaster Posté 19 Août 2005 Auteur Posté 19 Août 2005 (modifié) Bon je peux faire une simple div avec une barre de scroll avec overflow auto (et des liens qui passent l'id dans l'url), mais c'est pas super, c'est un select que je voudrais. Une idée? Modifié 19 Août 2005 par recherche_webmaster
xpatval Posté 20 Août 2005 Posté 20 Août 2005 Bonjour, midi, Soit je ne comprends pas ce que tu souhaites faire, soit je ne vois pas trop où se trouve la difficulté. Les champs proposés dans le select peuvent être visibles (clic sur le champ voulu), et cachés (<input type="hidden"...>). Lors du choix, les variables placées en type="hidden" seront pris en compte. J'ai bon, ou je n'ai vraiment rien compris ? xpatval
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 (modifié) tu as à moitié bon, ou c'est moi qui n'ait pas tout compris. Je peux effectivement utiliser un champ hidden, mais je ne peux pas utiler un select dans lequel se trouve une information/variable visible et une information hidden, le tout dans le même <option>. exemple S1: <select name="bob"> <option>premier nom</option> <option>deuxième nom</option </select> ça c'est simple mais ça ne marche pas dans mon cas : je vais avoir des doublons etc... exemple S2: <select name="bob"> <option>id n°1</option> <option>id n°2</option </select> ça ça fonctionne pour la base, mais présenter une liste d'id aux visiteurs... Donc je dois passer les deux en un. Bon ce n'est pas une question de vie ou de mort hein, mais y'a peut être un truc à creuser. Modifié 20 Août 2005 par recherche_webmaster
Anonymus Posté 20 Août 2005 Posté 20 Août 2005 As tu essayé : <select name="bob"><option value=id1>nom1</option><option value=id2>nom2</option</select> Sinon, idem, je n'ai pas trop bien compris ce que tu aimerais avoir comme infos en sortie :/
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 (modifié) Voilà ! Comme je débute je ne savais pas que l'on pouvait passer la valeur d'une option directement dans la balise et donc que celle-ci n'est pas forcément donnée par le nom contenu entre <option></option>, si j'ai bien compris ton exemple du moins. Là je suis sur autre chose, dès que j'ai terminé, dans deux heures je pense, j'essaie et je vous dis si c'est bien ce que je souhaitais. Merci Modifié 20 Août 2005 par recherche_webmaster
xpatval Posté 20 Août 2005 Posté 20 Août 2005 Tout bon, anonymous ! Du genre de cette ligne, après un SELECT (SQL) et un WHILE, par exemple: <option value="<?php print $i[$champ1];?>"><?php echo $champ_libelle;?></option> xpatval
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 je n'ai pas essayé le truc d'anonymus encore. Mais pourquoi tu mets un print dans le option et un echo entre les deux balises xpatval ?
xpatval Posté 20 Août 2005 Posté 20 Août 2005 je n'ai pas essayé le truc d'anonymus encore. Mais pourquoi tu mets un print dans le option et un echo entre les deux balises xpatval ? <{POST_SNAPBACK}> Pour que tu me poses la question ? les deux en "echo". xpatval
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 (modifié) Bon et bien j'ai essayé cela, ça ne fonctionne pas : <select><?php $req="SELECT id, mot FROM demandes WHERE vue=1 and donne=0 ORDER BY date"; $res=mysql_query("$req");while ($bob=mysql_fetch_array($res)){ echo"<option value=\"$bob[id]\">$bob[mot]</option>";}mysql_free_result($res);?></select> Sur ma ma page le select n'a qu'une option "définition demandée". D'ailleur je me demande d'où il sort cette option Modifié 20 Août 2005 par recherche_webmaster
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 Ah si si ça marche ! C'est parce que j'ai rempli un formulaire sans préciser le nom du mot demandé alors il m'a rempli le champ de la table avec le contenu du value par défaut du formulaire. D'où l'effet de surprise mais je viens de vérifier dans le code source d'IE, le n° d'id est bien dans le option. je vais voir si ça se transmet bien maintenant.
Anonymus Posté 20 Août 2005 Posté 20 Août 2005 Fais plutôt comme ceci : while ($bob=mysql_fetch_array($res)){ echo"<option value=\"".$bob[id]."\">".$bob[mot]."</option>";} c'est plus logique.
recherche_webmaster Posté 20 Août 2005 Auteur Posté 20 Août 2005 (modifié) Arf mais c'est nul aussi, quand je clique sur valider ça m'expédie sur la page de traintement en passant tout dans l'url. J'ai fait un url rewriting justement pour la sécurité et maintenant pour ce select on voit toutes les variables. J'avais pas pensé à ça Comment cela se puisse t-il être d'ailleurs? Sur mes pages de formulaire j'ai un "form action" qui transmet les variables à une page de traitement et ces variables n'apparaissent pas dans l'url. Et là elles apparaissent. Les poufs. Comment ça se fait ça ? Modifié 20 Août 2005 par recherche_webmaster
Anonymus Posté 20 Août 2005 Posté 20 Août 2005 Dans un cas, tu fais un "form action" comme ceci : <form method=POST action=.. et dans l'autre (où tu vois les variables) : <form method=GET action=.. Pour que les variables ne soient pas visibles dans l'url, il faut utiliser la méthode POST. Ceci dit, ce n'est pas parce qu'elles ne sont pas visibles qu'elles sont mieux sécurisées. De plus, un moteur de recherche ne cherchera pas à remplir un formulaire
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant