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 :

recuperer puis modifier les choix d'une liste à choix multiples


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 recuperer puis modifier les choix d'une liste à choix multiples
    salutatous,

    j'ai un FORMULAIRE DE SAISIE contenant (entre autres) une LISTE À CHOIX MULTIPLES.

    Voici le code :

    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
    <form action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" method="post">
     
    <?php
     
    // options de la liste à choix multiples définies dans un tableau
    $choix = array(
        "choix 1",
        "choix 2",
        "choix 3"
    );
     
    // fonction permettant le ré-affichage "highlighté" des options sélectionnées par le visiteur (au cas où le visiteur remplit mal le formulaire)
    function selection($option) {
        for ($i = 0, $comptabilisation = count($_POST['liste_choix_multiples']); $i < $comptabilisation; $i++) {
            if ($_POST['liste_choix_multiples'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
     
    ?>
     
    <select name="liste_choix_multiples[]" size="12" style="background-color:#FFFFFF" multiple>
        <?php
        foreach ($choix as $valeur) {
            if (isset($_POST['liste_choix_multiples']) && selection($valeur)) {
                echo '<option selected>' . $valeur . '</option>';
            } else {
                echo '<option>' . $valeur . '</option>';
     
            }
        }
        ?>
    </select>
     
    <input type="submit" value="OK"/>
     
    </form>
    Jusque-là tout fonctionne parfaitement dans mon FORMULAIRE DE SAISIE :
    Les choix de la liste se ré-affichent "highlighté" si le formulaire se ré-affiche pour cause de mauvaise saisie dans un champ.
    Et si tout est ok les données sont bien envoyées dans la base de données.

    ----------------------------------------------

    LÀ OÙ JE BLOQUE, c'est sur mon FORMULAIRE DE MODIFICATION des informations !
    J'ai repris ce code et essayer de le modifier.
    Mais je n'arrive pas à afficher la liste à choix multiples avec les choix en "highlighté" qui ont été sélectionnés par le visiteur !!!


    Merci de votre aide
    Nico

  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
    Tes <option> n'ont pas de "value" ?
    Pour reprendre les valeurs tu pourrais simplement utiliser in_array() parce que la tu parcours la meme liste plusieurs fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $lstChoix = $_POST['liste_choix_multiples']));
    foreach ($choix as $valeur) {
            if (isset($_POST['liste_choix_multiples']) && in_array($valeur, $lstChoix)) {
                $selected = ' selected="selected" ';
               } else {
                $selected = '';
                }
      echo '<option value="' . $valeur . '"' . $selected .'>' . $valeur . '</option>';
    }
    $lstChoix peut ensuite être la liste des valeurs recuperées depuis la bdd.

  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,

    j'ai effectuer les modifs que tu me conseilles dans mon FORMULAIRE DE SAISIE des données et ça fonctionne nickel-chrome

    par contre ça ne fonctionne pas dans mon FORMULAIRE DE MODIFICATION des données

    dans mon formulaire de modification, je récupère les choix de la liste dans la base et les affiche, comme ceci :

    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
    <?php
     
    require('../prive/connecter.php');
     
    $requete_sql = "SELECT
    liste_choix_multiples
    FROM membre WHERE login='$login'";
     
    $requete_sql_bis = mysql_query($requete_sql);
    echo mysql_error();
     
    while(list($liste_choix_multiples) = mysql_fetch_array($requete_sql_bis)) {
     
    ?>
     
    <form action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" method="post">
     
    <?php
     
    $choix = array(
        "choix 1",
        "choix 2",
        "choix 3"
    );
     
    function selection($option) {
        for ($i = 0, $comptabilisation = count($_POST['liste_choix_multiples']); $i < $comptabilisation; $i++) {
            if ($_POST['liste_choix_multiples'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
     
    ?>
     
    <select name="liste_choix_multiples[]" size="12" style="background-color:#FFFFFF" multiple>
    	<?php
    	$liste_choix = $_POST['liste_choix_multiples']; 
     
    	foreach ($choix as $valeur) {
            if (isset($_POST['liste_choix_multiples']) && in_array($valeur, $liste_choix)) {
                $selected = ' selected="selected" ';
               } else {
                $selected = '';
                }
      		echo '<option value="' . $valeur . '"' . $selected .'>' . $valeur . '</option>';
    	}
    	?>
    </select>
     
    <input type="submit" value="OK"/>
     
    </form>
     
    }
    Comment faire pour que les choix que je vais chercher dans la base s'affichent comme "highlightés" dans mon select multiple de mon formulaire de modification ?

  4. #4
    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
    j'ai rajouté explode() pour $liste_choix, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste_choix = explode(',',$liste_choix_multiples);
    marche toujours pô

  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 YEEEEEEEEEESSSSSSSSSS !
    c'est bon j'ai maintenant les choix (provenant de la base) qui s'affiche "highlighté" dans ma liste à choix multiples

    j'ai donc utilisé explode(), comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste_choix = explode(',',$experience_internationale_choix);
    et dans la fonction foreach() j'ai remplacé $_POST['liste_choix_multiples'] par $liste_choix, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($choix as $valeur) {
    if (isset($liste_choix) && in_array($valeur, $liste_choix)) {
    $selected = ' selected="selected" ';
    } else {
    $selected = '';
    }
    echo '<option value="' . $valeur . '"' . $selected .'>' . $valeur . '</option>';
    }
    à+ et merci
    Nico

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/05/2009, 19h07
  2. [MySQL] modifier les donnees d'une liste deroulante
    Par youyouta dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/04/2008, 17h04
  3. Réponses: 4
    Dernier message: 12/02/2008, 09h54
  4. Réponses: 1
    Dernier message: 12/07/2006, 09h51
  5. [POI]recuperer et modifier les données d'une cellule
    Par corbier32 dans le forum Documents
    Réponses: 5
    Dernier message: 04/05/2006, 10h41

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