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 :

Problème de récupération de donnée (liste a choix multiple)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème de récupération de donnée (liste a choix multiple)
    Bonjour voila mon problème j'ai une liste a choix multiple ou l'on peut faire plusieurs choix en maintenant ctrl+clic gauche.

    je souhaite récupérer les valeurs sélectionner par l'utilisateur puis les enregistrer dans ma base de donnée mysql mais le problème est que l'enregistrement de
    toute les informations ce fait bien mais il n'y a que le dernier choix de ma liste a choix multiple qui est sauvegarder.

    Code pour récupérer les informations de la liste choisie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(isset($_POST['lesCompetences']) && !empty($_POST['lesCompetences'])){
        $Col1_Array = $_POST['lesCompetences'];
        $lesCompetencesRecup[] = array();
        foreach($Col1_Array as $selectValue){
                //affichage des valeurs sélectionnées
                $lesCompetencesRecup = $selectValue.";";
        }
        $competencesRecup = "";
        $competencesRecup = $lesCompetencesRecup;
    }
    La liste à choix multiple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select class="form-control" name="lesCompetences[]" multiple="multiple" size="10">
        <optgroup label="E-commerce">
            <option value="Site E-commerce">Site E-commerce</option>
            <option value="Paiement CB">Paiement CB</option>
            <option value="208">Oscommerce</option>
            <option value="209">Prestashop</option>
            <option value="211">Joomla Virtuemart</option>
            <option value="223">Magento</option>
            <option value="221">Zencart</option>
            <option value="235">Ubercart</option>
            <option value="630">Opencart</option>
            <option value="633">Drupal Commerce</option>
        </optgroup>
    </select>

    Ah , et la colonne ou j'enregistre les choix de la liste et de type Varchar(100).

    Merci .

  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
    Il faut apprendre a faire simple et à utiliser les fonctions existantes :
    Ton premier code se résume à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!empty($_POST['lesCompetences'])){
                $competencesRecup = implode(";", $_POST['lesCompetences']);
    }
    Par contre, stocker des éléments multiples dans une seule colonne est une mauvaise façon de faire.

    Il te faudrait une table de référence contenant la liste des compétences et une table de liaison avec ton autre table.

    Par exemple si l'utilisateur a coché Oscommerce et Magento, ça donne :

    table competence_tableA
    id id_tableA id_compétence
    1 456 208
    2 456 223
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Par contre, stocker des éléments multiples dans une seule colonne est une mauvaise façon de faire.

    Il te faudrait une table de référence contenant la liste des compétences et une table de liaison avec ton autre table.
    Merci à toi je vais tester cela de suite.

    Mais pour ta solution de table de référence elle est déjà faite je ne les pas indiquer pour ne pas "encombre" mon message. Et c'est sur qu'avec une seul colonne ce ne serais pas très pratique ma liste fait 10 fois ce que j'ai indiquer ^^.

    Mais je pense tout de même que je n'est pas fait comme toi.
    J'ai fait ma table avec toute les compétences comprise dedans (id,libelle) et je les reliés à ma table principal grâce à une clé étrangère sur la colonne (idCompétences).

    Est-ce que cela est viable ?

Discussions similaires

  1. Problème de récupération de données à partir d'une liste déroulante
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 25/10/2008, 09h50
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 22h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 15h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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