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 :

[Tableaux] Pb de récupération d'un select multiple


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut [Tableaux] Pb de récupération d'un select multiple
    Bon voilà, je voudrais récuprer dans une variable (afin de l'enregistrer dans une base de données) les résultats d'un select multiple... j'arrive bien à afficher les différents résultats, mais quand il s'agit de les enregistrer, seul le dernier résultat de la la liste est pris en compte
    Merci d'un coup de main éventuel

    Voici mon code :

    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="frdpt[]" size="5" multiple="multiple" class="champform" id="frdpt">
                <option value="Ain (01)">01 - Ain</option>
                <option value="Aisne (02)">02 - Aisne</option>
                ....//...
    </select>
     
    foreach(
    	foreach($frdpt as $elem) {
        echo $elem;
    }
     
    	$sql = "UPDATE xxxxx SET RDPT='$elem' where LOGIN='$login'";
            ...//...

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Salut,

    Oublie pas les balises code.
    Sinon il faut récupérer la variable grace à $_POST.
    Les deux foreach ne servent à rien.
    Sinon comment tu veux enregistrer les données dans ta base?

  3. #3
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut bdd
    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="frdpt[]" size="5" multiple="multiple" class="champform" id="frdpt">
                <option value="Ain (01)">01 - Ain</option>
                <option value="Aisne (02)">02 - Aisne</option>
                ....//...
    </select>
     
    foreach(
    	foreach($frdpt as $elem) {
        echo $elem;
    }
     
    	$sql = "UPDATE xxxxx SET RDPT='$elem' where LOGIN='$login'";
            ...//...

    Si tu fais un foreach pour les afficher et ainsi parcourir tout le tableau il te faut faire la même chose pour sauvegarder tes données!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($frdpt as $elem) {
    mysql_querry("UPDATE xxxxx SET RDPT='$elem' where LOGIN='$login'");
    }

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Non parce que ça reviendrait au même, à la fin il y aurait la dernière donnée d'insérée

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Croyez pas que j'ai résolu mon problème... et non je cherche encore.

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Avec un tout petit peu de bonne volonté, tu pourrais étudier la réponse, pleine de bon sens, d'Hug0_76 : tu as un echo pour afficher le contenu correctement, mais tu as situé ta requête en-dehors de la boucle qui exécute cet echo. Cela ne te semble-t-il pas étrange ?

  7. #7
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    bonjour,


    je profite de votre discussion car j'ai le même type de problème :

    voici le code de la sélection multiple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="specifique[]" multiple >
              <option option value=""selected>Choisir dans la liste</option>
              <option value="Alzheimer">Alzheimer </option>
              <option value="Handicap">Handicap</option>
              </select>
    et je voudrais ensuite intégrer une ligne par sélection dans la BDD, ou alors une ligne avec un champ vide si rien n'est sélectionné.
    Je suis partie sur le code suivant, mais je n'arrive pas à voir où ca bloque.
    Merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (isset($_POST['specifique']) && $_POST['specifique'] != "")
    {
    foreach($_POST['specifique'] as $elem) 
    {
       $sql1 = 'INSERT INTO aide_ac VALUES ("","'.$_SESSION['clef'].'","'.$_POST['public'].'","'.$_POST['activite'].'", "'.$elem.'")'; 
    }
    }
    else	
     $sql1 = 'INSERT INTO aide_ac VALUES ("","'.$_SESSION['clef'].'","'.$_POST['public'].'","'.$_POST['activite'].'","")';
    Merci à ceux qui pourront m'aider.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    D'une part, il faudrait nous dire ce qui bloque
    D'autre part, n'oublie pas de te protéger contre les injections SQL (doc de mysql_real_escape_string() par exemple).

  9. #9
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    merci yogui,

    pour li'nstant, le problème c'est qu'il n'y a qu'une ligne d'intégrée, avec "array" dans le champ specifique.

    Pour la sécurité, c'est une autre de mes préoccupations actuelles, mais je voulais chercher un peu avant de poster. Pour l'instant j'ai juste des addslashes / stripslashes avant d'intégrer les variables ou de les écrire, mais je ne sais pas si c'est suffisant.

    Pour les requêtes, je vais voir la doc de mysql_real_escape_string, merci.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Oui mais comment alimenter une variable avec le résultat du champ multiple sans que chaque valeur efface la précédente mais plutot qu'elle garde la somme des résultats... ?

  11. #11
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Salut manu,

    Ton select est dans un formulaire????


    Parce que le pb "d'alimenter ta variable" n'en n'est pas un puisque tu as correctement déclaré ton select avec un nom de tableau.
    Tes données ne sont pas supprimées, c'est sur que si tu affiches
    echo $sepecifique; tu ne pourras jamais voir tout ton tableau!

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    oui mon select est dans un formulaire... mais bon jene vois toujours pas la solution.

  13. #13
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Quant tu fais un print_r de ton tableau est ce que tu vois toutes tes données selectionnées?

    Fais le test et affiche nous ce que tu vois stp!

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Le pint_r affiche le contenu entier de la sélection soit par exemple pour 3 sélections faites :

    Array ( [0] => Ain (01) [1] => Aisne (02) [2] => Allier (03) )

    Voilà.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Bonjour,

    2 petites questions pour essayer de t'aider:

    -Sous quelle forme souhaite tu trouver les infos dans la BDD (Ex:"Ain (01),Aisne (02),Allier (03) ") ?

    -Auras-tu une recherche a effectuer sur ces valeurs dans ta base (recherche par département) ?

    Merci.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Je souhaite qu''ils soient sous cette forme :
    Ain (01),Aisne (02),Allier (03)

    Et il n'y aura pas de recherche sur ces enregistrements, juste un affichage du résultat complet de ce mmême enregistrement.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Bonjour Manuxy,

    Ce code peut peut-etre t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $i = 0;
    $a = sizeof($_POST['specifique']); //taille du tableau
    while ($i < $a){
    $valeur = $_POST['specifique'][$i];
    $resultat = .$valeur.",";
    $i++;
    }
    $sql = "UPDATE xxxxx SET RDPT='$resultat' where LOGIN='$login'";
    Bonne chance...

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Merci Attilius, je vais voir cela dès ce soir.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Problème avec ton bout de code Attilius
    Il n'accèèpte pas le point devant la variable $valeur de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = .$valeur.",";
    Parse error: parse error, unexpected '.'

Discussions similaires

  1. Récupération d'un select Multiple avec PHP
    Par Loic Dupel dans le forum Langage
    Réponses: 8
    Dernier message: 13/09/2013, 11h21
  2. Récupération des valeurs select multiple sans sélection
    Par akara dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2007, 20h10
  3. Réponses: 1
    Dernier message: 21/03/2007, 16h21
  4. Problème de récupération de valeur d'un select multiple
    Par poissonsoluble dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/11/2006, 10h37
  5. Réponses: 14
    Dernier message: 18/08/2006, 19h54

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