IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer la valeur d'un select pour générer une autre dynamiquement


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut Récupérer la valeur d'un select pour générer une autre dynamiquement
    Bonjour tout le monde et merci de m'aider
    Je souhaite générer une deuxième liste qui contient les noms des leçons du chapitre sélectionné dans la première liste.
    Voici le code de cette page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <form name="chap" method="post" action="">
      <p> 
        <select name="select" id="c" size="1" >
          <option value="1">Chapitre 1 </option>
          <option value="2">Chapitre 2 </option>
          <option value="3">Chapitre 3 </option>
          <option value="4">Chapitre 4 </option>
          <option value="5">Chapitre 5 </option>
          <option value="6">Chapitre 6 </option>
        </select>
      </p>
     
      <select name="select2"  size="1">
        <?php
    $host="localhost";
    $user="root";
    $password="mysql";
    $base="projet";
    $connect=mysql_connect($host,$user,$password);
     
    if($connect==false)
    {die("la connexion a échoué");
    }
    $connectbase=mysql_select_db($base);
    if($connectbase==false)
    {echo("basse inaccessible");
    }
     
    $a=$_GET['select.c'];
    if ($a !=0) then
    {echo ("$a");
    }
    else
    { echo"failed";
    }
    $res=mysql_query("select * from chapitres,lesson where lesson.nc=$a and chapitres.numc=$a");
    if($res==false)
    {die("<br> requete incorrect");
    }
    else
    {echo("requete correcte");
    }
     
    if($res==false)
    {die("requete incorrect");
    }
    $nb=mysql_num_rows($res);
     
    for($i=0;$i < $nb;$i++)
    {$reg=mysql_fetch_array($res);
     
    echo "<option value=\"$a\>""."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";
    
    
    }
    ?>
      </select>
    </form>
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    Ton formulaire est en POST pas en GET et "select.c" ce n'est pas du php
    Utilise un while{} plutot qu'une boucle for bricolée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $nb=mysql_num_rows($res);
    for($i=0;$i < $nb;$i++)
    {$reg=mysql_fetch_array($res);
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($reg=mysql_fetch_array($res)) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    MERCI pour votre attention,
    Je ne vous cache pas que j'ai une confusion entre les deux mais j'ai testé les deux est pas de résultats
    Leproblème est comment ou est ce qu'on peut récupérer la valeur sélectionner de la première select est l'envoyé à la requête sql pour quelle génére la deuxième liste déroulante.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je n'ai pas relu ton code dans le detail car il est un peu brouillon mais le principe est bon.
    Réécris le avec les corrections que je t'ai donné et on verra ce que ca donne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Je l'ai corrigé et testé mais la même chose
    Est ce qu'il y a un eerreur dans la liigne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value=\"$a"."\">"."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je l'ai corrigé et testé mais la même chose
    C'est à dire ?
    Est ce qu'il y a un erreur dans la ligne
    Pour le savoir, regarde ton resultat html, tu verras s'il correspond a ce que tu veux produire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Voici le résultat dans la deuxième liste :
    ."Leçon".$reg["nl"]." : ".$reg["noml"]."

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu vois ca dans ton navigateur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    OUI

    C'est pourquoi je vous ai dit qu'il peut y avoir une erreur
    dans la ligne mentionné ci dessus

  10. #10
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Essaye comme ça ça seras beaucoup plus propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo "<option value=\"$a\"><br>Leçon{$reg['nl']} :  {$reg['noml']}</option>";
    ?>
    Sinon, ton probleme me parait bizarre.
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 58
    Points
    58
    Par défaut
    bonjour,
    en plus des bons conseils se sabotage j'ajouterai ceci :
    allégez votre code pour y voir plus clair
    1 - vous créez des variables qui ne sont pas utilisées ou pour l'instant inutiles,
    2 - beaucoup {} inutiles pour l'instant
    3 - utilisez l'interpolation pour créer vos options
    4 - nommez de façon significative vos éléments
    5 - évitez les mots "réservés" dans les nomages (nommez un élément <select> select j'ai joué avec le diable :-))

    Par ailleurs il manque un bouton SUBMIT,
    et aussi un if(isSet()) ....
    Votre requête est exécuté dès la premier "requêtage" et donc générera un erreur puisqu'elle n'aura pas la valeur pour le WHERE.

    en le simplifiant volontairement (sans gestion d'erreurs)
    voici un script très proche du vôtre (seules les valeurs de départ et le SELECT SQL change) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <form method="post" action="">
        <select name="cps" id="cps" size="1" >
          <option value="75">75</option>
          <option value="78">78</option>
        </select>
     
      <select name="villes" size="1">
      <?php
    	if(isSet($_POST["valider"]))
    	{
    		mysql_connect("localhost","root","");
    		mysql_select_db("cours");
     
    		$cp = $_POST['cps'];
    		$rs = mysql_query("SELECT nom_ville from villes WHERE cp LIKE '$cp%'"); 
    		while($enr = mysql_fetch_row($rs)) 
    		{
    			echo "<option value='$enr[0]'>$enr[0]</option>";
    		}
    	}
      ?>
      </select>
      <input name="valider" type="submit">
    </form>
    Bonne journée

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais-tu nous montrer ton code actuel parce que la ligne que tu as mis ne donne pas ce genre de resulats.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Sachant que la même requête je l'ai utilisé dans une autre page et j'ai affiché son résultat et elle fonctionne correctement

  14. #14
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Voici mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <form name="chap" method="POST" action="">
      <p> 
        <select name="select" id="c" size="1" >
          <option value="1">Chapitre 1 </option>
          <option value="2">Chapitre 2 </option>
          <option value="3">Chapitre 3 </option>
          <option value="4">Chapitre 4 </option>
          <option value="5">Chapitre 5 </option>
          <option value="6">Chapitre 6 </option>
        </select>
      </p>
     
      <select name="select2"  size="1">
        <?php
    $host="localhost";
    $user="root";
    $password="mysql";
    $base="projet";
    $connect=mysql_connect($host,$user,$password);
     
    if($connect==false)
    {die("la connexion a échoué");
    }
    $connectbase=mysql_select_db($base);
    if($connectbase==false)
    {echo("basse inaccessible");
    }
     
    $a=$_GET['c'];
     
    echo ("<h1>"."Succ"."$a"."</h1>");
     
    $res=mysql_query("select * from chapitres,lesson where lesson.nc=$a and chapitres.numc=$a");
    if($res==false)
    {die("<br> requete incorrect");
    }
    else
    {echo("requete correcte");
    }
     
    if($res==false)
    {die("requete incorrect");
    }
     
    while($reg=mysql_fetch_array($res)) {
    {
     
    echo "<option value=\"$reg["nl"]"."\">"."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";
     
     
    }
    ?>
      </select>
    </form>
    <h1>Bonjour</h1>
    </body>
    </html>

  15. #15
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    la ligne que tu donne et celle d'en haut ne sont pa pareil, celle que tu donne ets bonne mais pas celle d'en haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo "<option value=\"$a\>""."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";
    ?>
    Donne nous la dernière version ou essaye celle de Pascal.

    Bonne journée
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  16. #16
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Voici la prremière version
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <form name="chap" method="post" action="">
      <p> 
        <select name="select" id="c" size="1" >
          <option value="1">Chapitre 1 </option>
          <option value="2">Chapitre 2 </option>
          <option value="3">Chapitre 3 </option>
          <option value="4">Chapitre 4 </option>
          <option value="5">Chapitre 5 </option>
          <option value="6">Chapitre 6 </option>
        </select>
      </p>
     
      <select name="select2"  size="1">
        <?php
    $host="localhost";
    $user="root";
    $password="mysql";
    $base="projet";
    $connect=mysql_connect($host,$user,$password);
     
    if($connect==false)
    {die("la connexion a échoué");
    }
    $connectbase=mysql_select_db($base);
    if($connectbase==false)
    {echo("basse inaccessible");
    }
     
    $a=$_GET['c'];
    if $a !=0 then
    {echo ("$a");
    }
    else
    { echo"failed";
    }
    $res=mysql_query("select * from chapitres,lesson where lesson.nc=$a and chapitres.numc=$a");
    if($res==false)
    {die("<br> requete incorrect");
    }
    else
    {echo("requete correcte");
    }
     
    if($res==false)
    {die("requete incorrect");
    }
    $nb=mysql_num_rows($res);
     
    while($reg=mysql_fetch_array($res)) {
    {
     
    echo "<option value=\"$a"."\">"."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";
     
     
    }
    ?>
      </select>
    </form>
    </body>
    </html>

  17. #17
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Ok je vais tester la solution de Pascal et je vais voir
    Merci beaucoup pour votre aide

    Salut tout le monde,
    D'après vous est ce que c'est nécessaire de programmer l'évènement onchange() pour réaliser cette tâche.

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu passes par onchange(), il faut passer par Ajax aussi ; commence plutot par faire fonctionner ce que tu veux sans javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 10
    Points
    10
    Par défaut
    Voici e code actuel mais pas de résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <form name="chap" method="POST" action="">
      <p> 
        <select name="c" id="c" size="1" >
          <option value="1">Chapitre 1 </option>
          <option value="2">Chapitre 2 </option>
          <option value="3">Chapitre 3 </option>
          <option value="4">Chapitre 4 </option>
          <option value="5">Chapitre 5 </option>
          <option value="6">Chapitre 6 </option>
        </select>
      </p>
     
      <select name="l"  size="1">
        <?php
    $host="localhost";
    $user="root";
    $password="mysql";
    $base="projet";
    $connect=mysql_connect($host,$user,$password);
     
    if($connect==false)
    {die("la connexion a échoué");
    }
    $connectbase=mysql_select_db($base);
    if($connectbase==false)
    {echo("basse inaccessible");
    }
     
    $a=$_GET['c'];
    if $a !=0 then
    {echo ("$a");
    }
    else
    { echo"failed";
    }
    $res=mysql_query("select * from chapitres,lesson where lesson.nc=$a and chapitres.numc=$a");
     
    while($reg=mysql_fetch_array($res)) 
    {
     
    echo "<option value=\"$a"."\">"."<br> Leçon".$reg["nl"]." :  ".$reg["noml"]."</option>";
     
     
    }
    ?>
      </select>
    </form>
    </body>
    </html>

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme te l'as indiqué Pascal, il faut un bouton submit.

    Et c'est $_POST pas $_GET puisque tu utilises un formulaire POST.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/01/2013, 16h39
  2. Réponses: 13
    Dernier message: 09/11/2011, 12h06
  3. [AC-2000] Récupérer la valeur d’une liste déroulante pour filtrer une requête SQL
    Par Gremandine dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/03/2010, 15h43
  4. Réponses: 5
    Dernier message: 17/07/2008, 09h18
  5. Réponses: 2
    Dernier message: 11/07/2007, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo