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 :

[PHP-JS] Une liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut [PHP-JS] Une liste déroulante
    Bonjour,
    J'ai fait une liste déroulante qui recupère ses valeurs d'une colone d'une table d'une base de donnée et je voudrai que:
    - Que si une valeur apparaisse une seule fois dans la table, cette valeur ne devra apparaitre qu'une fois dans la liste
    - Je voudrai que ce soit moi qui décide de la valeur qui apparaisse initialement
    - Enfin, en c emoment, pour afficher les resultats de mon choix sur la liste déroulante, je click sur un bouton "Afficher" Je souhaiterai pouvoir m'en passer et qu'un simple click sur le choix suffise
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut

    un bout de code nous aiderait à t'aider...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut
    Je vous rajoute le bout de code que j'ai deja fait pour lire la liste déroulante
    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
     
    $query = mysql_query("SELECT Flux FROM incident;") or die (mysql_error());
    if ($query) {
        echo '<form method="post">';
        echo '<select name="Incident">';
        while ($array = mysql_fetch_array($query)) {
    		if ($choix == $array["Flux"]) {
                echo '<option value="' . $array['Flux'] . '" selected>' . $array['Flux'] . '</option>';
            } else {
                echo '<option value="'.$array['Flux'] . '">' . $array['Flux'] . '</option>';
            }
        }
     
        echo '</select>';
        echo '<input type="submit" value="Afficher">';
        echo '</form>';
    J'espère que c'est suffisant
    Merci

  4. #4
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Merci,
    D'où vient la variable $choix?

    Sinon, tu peux changer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="' . $array['Flux'] . '" selected="selected">' . $array['Flux'] . '</option>';
    Cela peut résoudre le problème de temps en temps...

    Qu'en est-il maintenant?

    EDIT: Heu, désolé, j'avais pas compris... en fait je crois que tu ne peux sélectionner l'élément en ne le montrant qu'une fois que dans les boîtes-listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select size="5" name="liste"></select>
    Dans les listes déroulantes, le premier affichage de la valeur sélectionnée n'est là qu'à titre indicatif...

  5. #5
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Pour l'affichage du choix directement après l'avoir sélectionné, tu peux utiliser la fonction javascript submit().
    Il faut pour cela que tu nommes ton formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<form method="post" name="form">';
        echo '<select name="Incident" onchange="document.form.submit();">';
    Cela devrait suffir...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut
    J'ai pas tres bien compris les modification suggegerer est ce que tu peux les apporter sur le code que j'ai posté
    Merci

  7. #7
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    <option value="'.$array['Flux'].'" selected>'.$array['Flux'].'</option>

    Inutile. Si tu ne met pas value="", la valeur sera celle entre les balises <option>

    <option value="'.$array['Flux'].'" selected>Option 1</option>
    Avec ca, quand tu selectionnera "Option 1", la valeur que tu récupérera dans le form c'est $array['Flux']


    Pour le fait de ne récupérer qu'une seule fois $array['Flux'], c'est au niveau de ta requete qu'il faut traiter ca ...
    "SELECT Flux FROM incident" => "SELECT DISTINCT `Flux` FROM `incident`"

  8. #8
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Citation Envoyé par Space Cowboy
    <option value="'.$array['Flux'].'" selected>'.$array['Flux'].'</option>

    Inutile. Si tu ne met pas value="", la valeur sera celle entre les balises <option>
    Je savais pas ça... bonne astuce !
    Pour le fait de ne récupérer qu'une seule fois $array['Flux'], c'est au niveau de ta requete qu'il faut traiter ca ...
    "SELECT Flux FROM incident" => "SELECT DISTINCT `Flux` FROM `incident`"
    Pour ça, j'avais compris qu'il ne voulais pas voir 2 fois la valeur s'afficher.
    Quand on fait un "selected" sur une valeur d'un select, cette valeur est dupliquée : une en haut du select (que le visiteur voit) et une à son endroit habituel si elle n'avait pas été sélectionnée.
    Sais-tu comment éviter cela?Nom : liste.gif
Affichages : 75
Taille : 1,3 Ko

  9. #9
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    <?php
    $query&#160;
    =&#160;mysql_query("SELECT&#160;DISTINCT&#160;`Flux`&#160;FROM&#160;`incident`;")&#160;or&#160;die&#160;(mysql_error());
    if&#160;(
    $query)
    {
    &#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '<form&#160;method="post">';
    &#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '<select&#160;name="Incident">';
    &#160;&#160;&#160;&#160;&#160;&#160;while&#160;(
    $array&#160;=&#160;mysql_fetch_array($query))
    &#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '<option';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(
    $choix==$array&#91;"Flux"])&#160;echo&#160;'&#160;selected="selected"&#160;';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '>'.$array&#91;"Flux"].'</option>';
    &#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '</select>';
    &#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '<input&#160;type="submit"&#160;value="Afficher">';
    &#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    '</form>';
    }&#160;
    &#160;

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  10. #10
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Pour fignoler avec les questions précédentes :
    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
    <?php
    $query = mysql_query("SELECT DISTINCT `Flux` FROM `incident`;") or die (mysql_error());
    if ($query)
    {
          echo '<form method="post" name="form">';
          echo '<select name="Incident" onchange="document.form.submit();">';
          while ($array = mysql_fetch_array($query))
          {
                echo '<option';
                      if($choix==$array["Flux"]) echo ' selected="selected" ';
                echo '>'.$array["Flux"].'</option>';
          }
          echo '</select>';
          echo '<input type="submit" value="Afficher">';
          echo '</form>';
    } 
    ?>

  11. #11
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Le name dans le form est utile seulement si tu à plusieurs formulaire, c'est juste pour les distinguer, sinon ca ne sert à rien.

    (N'oublie pas le "résolu")

  12. #12
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Le name dans le form est utile seulement si tu à plusieurs formulaire, c'est juste pour les distinguer, sinon ca ne sert à rien.
    Faux, sinon, JS ne reconnaît pas le formulaire...et donc ne le soumet pas !

  13. #13
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Alors, où en es-tu?

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/01/2007, 16h38
  2. Réponses: 4
    Dernier message: 15/12/2006, 21h43
  3. [MySQL] PHP afficher a partir d'une liste déroulante
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/11/2006, 09h00
  4. [PHP-JS] changement d'une liste déroulante
    Par maraly dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2006, 14h53
  5. Réponses: 12
    Dernier message: 02/05/2006, 19h37

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