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 :

Remplissage d'une liste déroulante d'après base


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut Remplissage d'une liste déroulante d'après base
    salutatous,

    j'ai la table suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE ma_table (
     
    id int(11) NOT NULL auto_increment,
    type_candidature varchar(30) DEFAULT NULL,
     
    PRIMARY KEY (id)
     
    ) TYPE=MyISAM;
    j'ai pondu la liste déroulante suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <select name="type_candidature" class="listederoulante">
     
    <option value="" style="color:grey;">Selectionner...</option>
     
    <option value='emploi' <?php if ($_POST['type_candidature']=='emploi') {echo "selected='selected'";}?> >pour un emploi</option>
     
    <option value='stage' <?php if ($_POST['type_candidature']=='stage') {echo "selected='selected'";}?> >pour un stage</option>
     
    <option value='job ete ou vacation' <?php if ($_POST['type_candidature']=='job ete ou vacation') {echo "selected='selected'";}?> >pour un job d'&eacute;t&eacute; ou une vacation</option>
     
    <option value='freelance' <?php if ($_POST['type_candidature']=='freelance') {echo "selected='selected'";}?> >en tant que freelance</option>
     
    </select>
    j'ai testé la méthode de "Moloc'h" (http://php.developpez.com/sources/?p...rms#gestlistes)
    mais ça m'affiche tous les résultats, c'est-à-dire que dans ma liste j'ai 5 fois "emploi", 12 fois "stage"... etc

    moi je voudrais que ma liste n'affiche qu'1 résultat par valeur,
    c'est à dire 1 fois "emploi", 1 fois "stage", 1 fois "job ete ou vacation" et 1 fois "freelance"

    merci d'avance...

  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,

    Pourrais-ton voir le code que tu as écris d'apres le script proposé ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    salut Sabotage,

    la fonction :

    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
    <?php
        function listbox ( $name , $array_value = array() , $array_selected , $multiple = 0 , $size = 1 )
        {
            $select = '<select' . ( ( $multiple == 1 ) ? ' multiple name="' . $name . '[]"' : ' name="' . $name . '"' ) . 
    ' size="' . $size . '">' . "n" ;
     
                foreach ( $array_value as $key => $value )
                {
                    $select .= '<option value="' . $key . '"' .
                    ( ( $multiple == 1 ) ? ( in_array ( $key , $array_selected ) ? ' selected="selected"' : '' ) : 
    ( $key == $array_selected ? ' selected="selected"' : '' ) ) .
                    '>' . $value . '</option>' . "n" ;
                }
     
            $select .= '</select>' ;
     
            return $select ;
        }
    ?>
    puis la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    // connexion à la base
    require('blabla/blabla/connecter.php');
     
    $requete = 'SELECT type_candidature FROM ma_table';
    $result = mysql_query ( $requete ) ;
    $ma_table = array() ;
     
    while ( $row = mysql_fetch_assoc ( $result ) ) {
    	$ma_table[] = $row['type_candidature'] ;
    }
     
    ?>
    puis les essais d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    	echo listbox ( 'ma_table' , $ma_table ) ;
    	echo '<br /><br />';
    	echo listbox ( 'ma_table' , $ma_table , 4 ) ;
    	echo '<br /><br />';
    	echo listbox ( 'ma_table' , $ma_table , ( isset ( $_POST['ma_table'] ) ? $_POST['ma_table'] : 4 ) ) ;
    	echo '<br /><br />';
    	echo listbox ( 'ma_table' , $ma_table , array() , 1 , 6 ) ; 
    	echo '<br /><br />';
    	echo listbox ( 'ma_table' , $ma_table , array ( 4 , 5 , 6 , 7 ) , 1 , 6 ) ; 
    	echo '<br /><br />';
    	echo listbox ( 'ma_table' , $ma_table , 
    	( isset ( $_POST['ma_table'] ) ? $_POST['ma_table'] : array ( 4 , 5 , 6 , 7 ) ) , 1 , 6 ) ; 
    ?>
    merci par avance

  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
    A regarder comme ca je ne vois rien de particulier.

    As-tu controlé dans phpmyadmin ce que donnait ta requete ?
    Fais egalement un print_r($ma_table); pour etre sur que tout va bien de ce côté aussi.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    en fait comme tu dis, il n'y a rien de particulier en ce sens que le code fonctionne parfaitement.

    le code récupère bien dans "ma_table" toutes les valeurs émanant du choix de tous les visiteurs et les affiche correctement sous la forme d'une liste déroulante.

    MAIS ce que je voudrai, c'est éviter les doublons dans la liste générée pour n'avoir que les 4 choix de mon menu déroulant de départ, à savoir :
    emploi
    stage
    job ete ou vacation
    freelance

    car là si 5 visiteurs ont choisi "emploi" et 10 visiteurs "stage", et bien j'aurai 5 fois "emploi" + 10 fois "stage" dans ma liste !

  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
    Que stocke ta table exactement en terme d'organisation de tes données ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    "ma_table" stocke au choix 4 valeurs de type texte sélectionnées depuis une liste déroulante (varchar(30) DEFAULT NULL)

  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 veux dire que tu as
    1 - emploi
    2 - stage
    3 - emploi
    4 - emploi
    5 - stage
    6 - dodo (parce qu'un petit malin a envoyé un element qui n'etait pas dans la liste )
    ?

    Si tu veux une organisation plus structuré de ta base, fais une table de reference qui contient
    1 - emploi
    2 - stage
    3 - freelance
    etc.

    Cette table te sers a construire tes listes déroulantes.

    La table ou tu stockes le choix des utilisateurs n'a plus ensuite qu'a contenir
    1 - 1
    2 - 2
    3 - 1
    4 - 1

    economique n'est-ce pas ?


    Si tu es réfractaire cette methode, tu peux toujours faire un
    SELECT DISTINCT type_candidature FROM ma_table
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    merci Sabotage pour tes "tuyaux" d'expert

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplissage d'une liste déroulante en JSP
    Par ulysse031 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 13/05/2011, 16h53
  2. Remplissage d'une liste déroulante en JSP
    Par alen22 dans le forum Servlets/JSP
    Réponses: 28
    Dernier message: 28/03/2011, 08h13
  3. [phpBB] Remplissage d'une liste déroulante
    Par kitiss dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 05/01/2009, 14h11
  4. remplissage d'une liste déroulante à partir d'une autre liste
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/05/2007, 12h28
  5. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46

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