[RESOLU] Valeur Liste déroulante selon coche

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Valeur Liste déroulante selon coche

Re: Valeur Liste déroulante selon coche

par AB » 27 sept. 2010, 23:42

Merci, peux-tu cliquer sur une réponse pour indiquer que le sujet est résolu ?

Re: Valeur Liste déroulante selon coche

par chloe5972 » 27 sept. 2010, 11:27

Milles merci pour vos réponses et pour la solution à mon problème
Je me rends compte (mais je me doutais un peu :lol: ) que j'ai encore beaucoup à apprendre dans ce domaine !!

Bonne journée Et à bientôt (surement :P )

Re: Valeur Liste déroulante selon coche

par stealth35 » 25 sept. 2010, 00:00

Hé bien tu me crois tu me crois pas (lol), j'ai déjà réussi à faire fonctionner un id commençant et même seulement composé de chiffres. Mais je retourne cette magnifique expérience : ce n'est pas une bonne habitude à prendre, puisque la plupart des langages ne le permettent pas. Et j'ai rajouté une lettre avant ... quand même !
Ben c'est pas la syntaxe recommandée donc comme on peut pas tester sur tous les navigateurs, autant éviter de l'employer car il est difficile de prévoir comment cela sera interpréter.
je plussoie
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
http://www.w3.org/TR/REC-html40/types.html#type-name

Re: Valeur Liste déroulante selon coche

par AB » 24 sept. 2010, 23:57

Hé bien tu me crois tu me crois pas (lol), j'ai déjà réussi à faire fonctionner un id commençant et même seulement composé de chiffres. Mais je retourne cette magnifique expérience : ce n'est pas une bonne habitude à prendre, puisque la plupart des langages ne le permettent pas. Et j'ai rajouté une lettre avant ... quand même !
Ben c'est pas la syntaxe recommandée donc comme on peut pas tester sur tous les navigateurs, autant éviter de l'employer car il est difficile de prévoir comment cela sera interpréter.

Re: Valeur Liste déroulante selon coche

par devlop78 » 24 sept. 2010, 22:26

Hé bien tu me crois tu me crois pas (lol), j'ai déjà réussi à faire fonctionner un id commençant et même seulement composé de chiffres. Mais je retourne cette magnifique expérience : ce n'est pas une bonne habitude à prendre, puisque la plupart des langages ne le permettent pas. Et j'ai rajouté une lettre avant ... quand même !

Re: Valeur Liste déroulante selon coche

par AB » 24 sept. 2010, 18:34

Ben à plusieurs endroits :wink:

Dans ton code il manque précisément ce qui cache les "select" à savoir la feuille de style intégrée qu'il faut mettre entre les balises <head> et </head>.
Et puis un id ne doit pas commencer par un chiffre, j'ai donc rajouté arbitrairement un "s" devant chacun d'entre eux.
Par ailleurs, la class indiquée dans les boutons radio doit correspondre à l'id du plus proche élément encadrant tes select, donc dans ton cas le bloc <p> ayant l'id = "select"

Et pour terminer ton code html était :x On emploie les tables uniquement pour formater des données tabulaires. En plus elles n'étaient pas correctement écrites.

Ci-dessous un code un peu plus dans les normes :
<?php
if (isset($_POST["envoyer"]))
{
        //Région
        print_r('sélection = ' .$_POST["rep_2_22"]);
}
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function Affiche_liste(id_form,id_select)
{
                var form_id = document.getElementById(id_form);
                var form_select = document.getElementById(id_select);
               
                if(form_id && form_select)
                {
                                var tab = new Array();
                               
                                //cherche les balises select inlues dans l'id id_form (= form_profil dans cet exemple)
                                tab = form_id.getElementsByTagName('select');
                              
                                for (i=0; i < tab.length; i++)        
                                        {
                                                /* on regarde si l'id est celui qu'on recherche */
                                                if (tab[i].id == id_select)
                                                        {
                                                                // Met le select en disable à false et le fait afficher
                                                                tab[i].disabled = false;
                                                                tab[i].style.display = 'inline';
                                                        }
                                                        else
                                                        {
                                                                // Met le select en disable à true et le cache
                                                                tab[i].disabled = true;
                                                                tab[i].style.display = 'none';
                                                        }
                                        }
                                // Affiche le formulaire
                                form_id.style.display = "block";
                }
}
-->
</script>

<style type="text/css">
#formulaire {
font-size:0.8em; 
font-family:Arial, Helvetica, sans-serif;
}

#formulaire p {
margin :0;
padding :0;
}

#formulaire #select {
position:static;
display:none;
}

#formulaire .titre {
background:#CCCCCC; 
font-weight:bold; 
width:650px;
margin-bottom:10px;
margin-top:10px;
}

#formulaire #envoyer {
position:absolute;
left:150px;
}
</style>
</head>

<body>

<div id = "formulaire">

<form action = "#" method = "post" id = "form_profil" >

<p class = "titre">
    1- Parmi les sites suivants, cochez votre lieu de travail principal (une seule réponse possible)
</p>

<p>
    <input name = "rep_1_1" type='radio' value='s4' class = "select" onclick = "Affiche_liste(this.className,this.value)">Services Centraux
    <br />
    <input name = "rep_1_1" type='radio' value='s3' class = "select" onclick = "Affiche_liste(this.className,this.value)">Campus Moulins (Droit - FFBC - SCD Droit)
    <br />
    <input name = "rep_1_1" type='radio' value='s2' class = "select" onclick = "Affiche_liste(this.className,this.value)">FSSEP - SUAPS
    <br />
    <input name = "rep_1_1" type='radio' value='s1' class = "select" onclick = "Affiche_liste(this.className,this.value)">Médecine Pôle Formation - ILIS - SCD Santé - ILIS
    <br />
    <input name = "rep_1_1" type='radio' value='s0' class = "select" onclick = "Affiche_liste(this.className,this.value)">Pharmacie - SCFP - Chirurgie Dentaire - Médecine Pôle Recherche - ICPAL
    <br />                    
</p>

<p class = "titre">
    Si oui
</p>

<p id = "select">
<select name='rep_2_22' id="s4" size='1'>
<option>Choisissez</option>
<option value='Citadine 1'>Citadine 1</option>
<option value='Liane 1'>Liane 1</option>
<option value='Ligne 13'>Ligne 13</option>
</select>

<select name='rep_2_22' id="s3" size='1'>
<option>Choisissez</option>
<option value='Ligne 202'>Ligne 202</option>
<option value='Ligne 206'>Ligne 206</option>
<option value='Ligne 209'>Ligne 209</option>
<option value='Ligne 221'>Ligne 221</option>
<option value='Ligne 17'>Ligne 17</option>
<option value='Ligne 7'>Ligne 7</option>
<option value='Liane 1'>Liane 1</option>
</select>

<select name='rep_2_22' id="s2" size='1'>
<option>Choisissez</option>
<option value='Ligne 221'>Ligne 221</option>
<option value='Liane 1'>Liane 1</option>
<option value='Ligne 15'>Ligne 15</option>
</select>

<select name='rep_2_22' id="s1" size='1'>
<option>Choisissez</option>
<option value='Liane 2'>Liane 2</option>
<option value='Liane 58'>Liane 58</option>
<option value='Ligne 63'>Ligne 63</option>
<option value='Ligne 229'>Ligne 229</option>
<option value='Ligne 232'>Ligne 232</option>
</select>

<select name='rep_2_22' id="s0" size='1'>
<option>Choisissez</option>
<option value='Ligne 63'>Ligne 63</option>
<option value='Ligne 64'>Ligne 64</option>
<option value='Liane 2'>Liane 2</option>
<option value='Ligne 13'>Ligne 13</option>
<option value='Ligne 58'>Ligne 58</option>
</select>

<input name = "envoyer" value = "envoyer" id = "envoyer" type = "submit"/>
</p>

</form>

</div>

</body>
</html>

Re: Valeur Liste déroulante selon coche

par chloe5972 » 24 sept. 2010, 16:02

Merci Cyrano et AB pour votre réponse
J'ai utilisé la solution d'AB qui marche comme il faut !!
J'ai juste pas les liste déroulantes cachées (invisibles) à l'ouverture du formulaire !!
Glups j'ai du zapper un paramètre en adaptant mon code ?!
Que voila
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function Affiche_liste(id_form,id_select)
{
                var form_id = document.getElementById(id_form);
                var form_select = document.getElementById(id_select);
               
                if(form_id && form_select)
                {
                                var tab = new Array();
                               
                                //cherche les balises select inlues dans l'id id_form (= form_profil dans cet exemple)
                                tab = form_id.getElementsByTagName('select');
                               
                                for (i=0; i < tab.length; i++)        
                                        {
                                                /* on regarde si l'id est celui qu'on recherche */
                                                if (tab[i].id == id_select)
                                                        {
                                                                // Met le select en disable à false et le fait afficher
                                                                tab[i].disabled = false;
                                                                tab[i].style.display = 'inline';
                                                        }
                                                        else
                                                        {
                                                                // Met le select en disable à true et le cache
                                                                tab[i].disabled = true;
                                                                tab[i].style.display = 'none';
                                                        }
                                        }
                                // Affiche le formulaire
                                form_id.style.display = "block";
                }
}
-->
</script>
</head>

<body>

<form action = "#" method = "post" id = "form_profil" >

<table width='0%'  border='1' cellpadding='0' cellspacing='0'>
  <tr>
    <td width='597' bgcolor='#CCCCCC'>&nbsp;<span class='bold'><font size=2>1- Parmi les sites suivants, cochez votre lieu de travail principal (une seule réponse possible)</font> </span></td>
  </tr></table>
             <input name=rep_1_1 type='radio' value='4' class = "form_profil" onclick = "Affiche_liste(this.className,this.value)">Services Centraux</td>
  <br>
             <input name=rep_1_1 type='radio' value='3' class = "form_profil" onclick = "Affiche_liste(this.className,this.value)">Campus Moulins (Droit - FFBC - SCD Droit)</td>
  <br>
            <input name=rep_1_1 type='radio' value='2' class = "form_profil" onclick = "Affiche_liste(this.className,this.value)">FSSEP - SUAPS</td>
  <br>
     <input name=rep_1_1 type='radio' value='1' class = "form_profil" onclick = "Affiche_liste(this.className,this.value)">Médecine Pôle Formation - ILIS - SCD Santé - ILIS</td>
  <br>
      <input name=rep_1_1 type='radio' value='0' class = "form_profil" onclick = "Affiche_liste(this.className,this.value)">Pharmacie - SCFP - Chirurgie Dentaire - Médecine Pôle Recherche - ICPAL</td>
      <br>                    

<table width='0%'  border='0' cellpadding='0' cellspacing='0'>
  <tr>
    <td width='597' bgcolor='#CCCCCC'>&nbsp;<span class='bold'><font size=2>Si oui</font> </span></td>
  </tr></table><tr>
<div id = "select">
<select name='rep_2_22' id=4 size='1'><tr>
<option value='Citadine 1'>Citadine 1</option>
<option value='Liane 1'>Liane 1</option>
<option value='Ligne 13'>Ligne 13</option>
</select>

<select name='rep_2_22' id=3 size='1'><tr>
<option value='Ligne 202'>Ligne 202</option>
<option value='Ligne 206'>Ligne 206</option>
<option value='Ligne 209'>Ligne 209</option>
<option value='Ligne 221'>Ligne 221</option>
<option value='Ligne 17'>Ligne 17</option>
<option value='Ligne 7'>Ligne 7</option>
<option value='Liane 1'>Liane 1</option>
</select>

<select name='rep_2_22' id=2 size='1'><tr>
<option value='Ligne 221'>Ligne 221</option>
<option value='Liane 1'>Liane 1</option>
<option value='Ligne 15'>Ligne 15</option>
</select>

<select name='rep_2_22' id=1 size='1'><tr>
<option value='Liane 2'>Liane 2</option>
<option value='Liane 58'>Liane 58</option>
<option value='Ligne 63'>Ligne 63</option>
<option value='Ligne 229'>Ligne 229</option>
<option value='Ligne 232'>Ligne 232</option>
</select>

<select name='rep_2_22' id=0 size='1'><tr>
<option value='Ligne 63'>Ligne 63</option>
<option value='Ligne 64'>Ligne 64</option>
<option value='Liane 2'>Liane 2</option>
<option value='Ligne 13'>Ligne 13</option>
<option value='Ligne 58'>Ligne 58</option>
</select>

   <input name = "envoyer" value = "envoyer" type = "submit"/>

</form>
</div>
</body>
</html>
Ou c'est que j'ai merdouillé ?
Merci d'avance
Chloe

Re: Valeur Liste déroulante selon coche

par AB » 23 sept. 2010, 19:39

En variante des solutions proposées par Cyrano, Je viens juste de répondre à une question similaire avec le code ici
Tu peux l'utiliser si tes listes déroulantes ne sont pas très longues. Dans le cas contraire, regardes plutôt la formule Ajax donnée dans le lien de Cyrano

Re: Valeur Liste déroulante selon coche

par Cyrano » 23 sept. 2010, 14:03

Sur le même principe que les listes déroulantes liées, la différence est qu'au lieu de mettre à jour ta liste sur la sélection dans une première liste, la mise à jour doit être déclenchée par un évènement onclick du bouton radio sélectionné.

Valeur Liste déroulante selon coche

par chloe5972 » 23 sept. 2010, 10:47

Bonjour à tous....

Je vous jure j'ai cherché et recherché sur internet mais po moyen de mettre la main sur une solution !!
Je ne doit pas taper les bons termes !! :oops:
Ca n'a pourtant pas l'air compliqué mon problème mais je suis une super débutante (php et javascript)
Voici le soucis
Je construit un questionnaire et selon les réponses à une question (case à cocher)
la liste déroulante suivante prend des valeurs en fonction !!
exemple : Ou habitez vous? o Lille o Paris o Lyon
Selon que je réponde Lille ou Paris....les valeurs de la liste déroulante se situant dans le même formulaire sont <>
Comment codifier ca???

D'avance merci pour votre Aide
Chloe