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

PHP & Base de données Discussion :

recueil information liste déroulante [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 112
    Par défaut recueil information liste déroulante
    Bonjour, J'aimerais que lorsque j'appuis sur submit, une variable contiennent dans un tableau tous les éléments sélectionnés dans ma liste déroulante. J'ai essayé plusieurs trucs sans succes. Je vous remercie de votre aide!


    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="acteurs" size="5" multiple>
     
    					<?
    			//Requete SQL
    			$query = "SELECT * from ACTEURS";
    			$retour = mySql_query($query, $connect);
                while($ligne = mySql_fetch_array($retour, MYSQL_ASSOC))
    			{
    			echo("<option value=\"".$ligne["ID_ACTEURS"]."\">".$ligne["NOM_ACTEURS"]."</option>");
    			}
    			?>	
    </select>

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut et bienvenue dans les forums de Developpez.com !

    IMPORTANT :

    • Merci de chercher un peu avant de poster dans le forum...
    • Chercher une réponse dans la FAQ PHP
    • Chercher une réponse dans la FAQ PHP-MySQL
    • Chercher une réponse dans la FAQ MySQL
    Google.fr est ton ami!
    • Ne poster qu'en dernier recours!

    • Merci de lire et de respecter les règles du forum!

    ps : Je donne systématiquement ce message aux nouveaux venus.
    Il s'agit d'un formulaire où tu postes les données sélectionnées.
    Respecte l'ordre des choses :
    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
    <?php
    //===============================================
    // RECEPTION & TRAITEMENT DU FORMULAIRE
    //===============================================
    if(isset($_POST['valider'])){
      if(isset($_POST['acteurs'])){
        echo '<pre>';
        print_r($_POST['acteurs'];
        echo '</pre>';
      }
    }
     
    //===============================================
    // REQUETE SQL 
    //===============================================
    $sql = "SELECT * from ACTEURS"; 
    $res=@mysql_query($sql, $connect);
    $num_rows=@mysql_num_rows($res);
    if($num_rows>0){
     
      //=============================================
      // FORMULAIRE HTML
      //=============================================
      echo '<form method="post">'.
           '<select name="acteurs[]" size="5" multiple>';
      while($ligne=@mysql_fetch_array($res, MYSQL_ASSOC))
        echo '<option value="'.$ligne['ID_ACTEURS'].'">'.
             $ligne['NOM_ACTEURS'].
             '</option>';  
      echo '</select>'.
           '<input type="submit" name="valider">'.
           '</form>';
     
    }else echo 'Aucun enregistrement trouvé dans la table !<br>';
    ?>
    En général, je commence plutôt par faire la requête et enregistrer les champs dans un tableau.
    Ainsi, je peux utiliser ces données pour le traitement du formulaire...
    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
    //===============================================
    // REQUETE SQL 
    //===============================================
    $sql = "SELECT * from ACTEURS"; 
    $res=@mysql_query($sql, $connect);
    $num_rows=@mysql_num_rows($res);
    $tableau=Array();
    if($num_rows>0){
      while($ligne=@mysql_fetch_array($res, MYSQL_ASSOC))
        $tableau[]=$ligne;
    }else die('Aucun enregistrement trouvé dans la table !<br>'); 
     
     
    //===============================================
    // RECEPTION & TRAITEMENT DU FORMULAIRE
    //===============================================
    if(isset($_POST['valider']) && isset($_POST['acteurs'])){
      for($x=0;$x<$num_rows;$x++) 
        if(in_array($tableau['ID_ACTEURS'][$x],$_POST['acteurs']))
          echo $tableau['ID_ACTEURS'][$x].' = '.$tableau['NOM_ACTEURS'][$x].'<br>';
    }
     
    //===============================================
    // FORMULAIRE HTML 
    //===============================================
    echo '<form method="post">'. 
         '<select name="acteurs[]" size="5" multiple>'; 
    for($x=0;$x<$num_rows;$x++) 
      echo '<option value="'.$tableau['ID_ACTEURS'][$x].'">'. 
           $tableau['NOM_ACTEURS'][$x]. 
           '</option>';  
    echo '</select>'. 
         '<input type="submit" name="valider">'. 
         '</form>';
    Attention à une chose, il faut des fois utiliser addslashes et stripslashes pour obtenir un bon résultat dans ce genre de code, si les éléments contiennent des caractères spéciaux, à+


    Lien tout en bas à gauche de cette fenêtre

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 112
    Par défaut
    Je comprend presque tout...

    1. Que veux dire la balise <pre>?

    2. Si je choisis plusieurs éléments de ma liste déroulantes multiple, quel est la facon de pouvoir afficher ces choix à l'écran dans mon script appelé lorsque j'appuie sur envoyer?

    Je voudrais faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $acteurs = $_POST["ACTEURS"];
    tant que éléments dans acteurs
    insert into acteursfilms values $acteurs[i]
    i++;
    Y a t'il qqch comme ca que je puisse faire?

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Oula, excuse moi, j'ai oublié un truc important...
    Il faut mettre des crochets au nom du select sinon la sélection multiple ne fonctionne pas vraiment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '<select name="acteurs[]" size="5" multiple>';
    Je corrige le 1er code que je t'ai donné.

  5. #5
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Le 2ème code que je t'ai donné dans mon 1er message répond maintenant à ce que tu recherchais : Tu postes un tableau contenant ta sélection (la liste des ID des acteurs), puis au traitement du formulaire, tu parcours ta table à la recherche des éléments postés pour les afficher un par un. Le fait d'effectuer la requête SELECT en tout 1er a justement cet intérêt. La fonction in_array dans la partie "Réception & traitement du formulaire" permet de savoir si l'id de la table se trouve dans le tableau posté... Il suffit donc de faire un INSERT (ou un UPDATE) de cet enregistrement au lieu de l'afficher...

    En ce qui concerne la balise <pre>, je ne l'utilise qu'avec la fonction print_r pour mieux visualiser le contenu d'un tableau. En effet, l'affichage est beaucoups plus clair en encadrant print_r avec ces balises (fait un essai d'affichage sans les balises pour comprendre la différence).

    Pour essayer de me faire pardonner, je te donne une astuce sympa pour coloriser la liste (une ligne sur deux d'une autre couleur) et pour resélectionner automatiquement les éléments qui ont été précédemment postés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //===============================================
    // FORMULAIRE HTML 
    //===============================================
    echo '<form method="post">'. 
         '<select name="acteurs[]" size="5" multiple>'; 
    for($x=0;$x<$num_rows;$x++) 
      echo '<option value="'.$tableau['ID_ACTEURS'][$x].'"'.
           ' style="background-color:'.(($x%2)?'#FFFFFF':'#DDDDDD').'"'.
           (in_array($tableau['ID_ACTEURS'][$x],@$_POST['acteurs'])?' selected':'').'>'. 
           $tableau['NOM_ACTEURS'][$x]. 
           '</option>';  
    echo '</select>'. 
         '<input type="submit" name="valider">'. 
         '</form>';
    à+

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 112
    Par défaut
    Merci beaucoup! ca marche beaucoup mieux maintenant!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/08/2011, 11h33
  2. Réponses: 3
    Dernier message: 10/04/2008, 13h50
  3. Afficher des informations dans une liste déroulante
    Par onlytime dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2008, 18h47
  4. Réponses: 2
    Dernier message: 20/08/2007, 09h22
  5. Réponses: 5
    Dernier message: 12/06/2006, 10h27

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