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 :

Récupérer valeurs des choix d'une liste déroulante multiple


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Récupérer valeurs des choix d'une liste déroulante multiple
    Bonjour !

    Je viens vous demander de l'aide parce que j'ai (encore) un problème, et que je ne sais pas pourquoi ça ne fonctionne pas.

    J'ai une liste déroulante à choix multiple qui se remplie au fur et à mesure que l'utilisateur choisit des personnes : dès qu'il choisit une personne dans une première liste, cette personne vient s'ajouter dans ma liste à choix multiple.

    Et les personnes de cette liste à choix multiple doivent être enregistrées dans la base. J'ai donc regardé sur le forum comment faire et j'ai trouvé ma réponse, sauf que j'ai une erreur et je ne sais pas comment la résoudre.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Select contenant les personnes sélectionnées
    <select id="personnes_projet" name="personnes_projet[]" multiple="multiple"></select>
    Récupération des valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for($i=0;$i<(sizeof($_POST['personnes_projet']));$i++)
    {
    	if(isset($_POST['personnes_projet'][$i]))
    	{
    		$pers = $_POST['personnes_projet'][$i];
    		// Requête
    		$req_persproj = mysql_query("INSERT INTO ...);					
    	}
    }
    Et l'erreur que j'obtiens :
    Notice: Undefined index: personnes_projet in C:\Program Files\EasyPHP5.3.0\www\ajout_projet.php on line 485
    Ligne 485 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<(sizeof($_POST['personnes_projet']));$i++)
    Si vous pouviez m'aider ...

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    les 2 portions de codes que tu as donné sont sur la même page php ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(isset($_POST['personnes_projet']))
    {
    	for($i=0;$i<(sizeof($_POST['personnes_projet']));$i++)
    	{
    		if(isset($_POST['personnes_projet'][$i]))
    		{
    			$pers = $_POST['personnes_projet'][$i];
    			// Requête
    			$req_persproj = mysql_query("INSERT INTO ...");					
    		}
    	}
    }

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Oui, la soumission de mon formulaire se fait sur la même page et exécute donc le code PHP de la même page.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ce n'est pas parce que tu copies un nom d'une liste dans une autre que celui-ci est sélectionné.
    En conséquence, avant la soumission du formulaire, tu dois activer une fonction javascript qui va sélectionner tous les noms de cette nouvelle liste.

  5. #5
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ce n'est pas parce que tu copies un nom d'une liste dans une autre que celui-ci est sélectionné.
    Euh je n'ai pas tout saisi ...

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Tu as 2 listes déroulantes. L'une contient des noms, l'autre est vide à l'origine. Lorsqu'un nom est sélectionné dans la 1ère liste, j'imagine que tu le copies en javascript dans la 2è. Le nom apparait dinc, mais il n'est pas sélectionné pour autant. Tu dois donc sélectionner tous les noms de cette 2è liste manuellement ou en javascript avant la soumission du formulaire.

  7. #7
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ah ok j'ai compris !

    Donc mettre un attribut "selected" par exemple à chaque nom dès qu'il est copié suffirait à faire fonctionner mon isset($_POST ...) ?

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    @Seb33300 , c'est mieux comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_POST['personnes_projet']))
    {
    	foreach($_POST['personnes_projet'] as $index=>$pers)
    	{
    		// Requête
    		$req_persproj = mysql_query("INSERT INTO ...");					
    	}
    }

  9. #9
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    J'ai utilisé la méthode de jeca en plaçant des selected à chaque personne sélectionnée et ça fonctionne !

    Donc résolu, merci à tous

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

Discussions similaires

  1. Utilisation des choix d'une liste déroulante dans un code VBA
    Par mrshoother dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2013, 22h20
  2. Réponses: 2
    Dernier message: 05/01/2011, 09h34
  3. Concaténation des choix d'une liste déroulante dans un input text
    Par alaska750 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/08/2009, 21h17
  4. Réponses: 0
    Dernier message: 24/10/2007, 20h29
  5. [SQL] Récupérer des variables d'une liste déroulante
    Par jermel2 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/06/2007, 18h21

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