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] Récupérer un tableau à partir de valeurs d'un <select> multiple [Fait]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut [Tableaux] Récupérer un tableau à partir de valeurs d'un <select> multiple
    Bonjour à tous,

    Voici mon soucis :

    Je désire récuperer un tableau contenant les valeurs d'une ComboBox de type multiple dans laquelle se trouve une ou plusieurs valeurs.

    Juste avant l'envoi, une fonction JAVASCRIPT me séléctionne tout les élments de cette combo, donc les valeurs ont (théoriquement) bien envoyée par POST.

    Malheuresement, je me retrouve sur ma page de récéption avec ce message d'erreur :
    Notice: Undefined index: MaCombo in c:\program files\easyphp1-8\www\MonDossier\PageReception.php on line 17
    et ce quelle que soit la maniere que j'ai pu tester.

    Voilà le code en question :
    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
    //Premiere page où se trouve ma Combo
    
    echo '<SELECT name = "MaCombo" multiple size = 2></SELECT><br><br>'
    
    //j'effectue un envoi POST, MaCombo contient admettons 3 valeurs séléctionées
    
    ********************************************************************
    
    //Page de récéption, j'ai tésté tout ça :
    
    $MesChoix= $_POST["MaCombo"];
    
    $MesChoix[]= $_POST["MaCombo[]"];
    
    $MesChoix[]= $_POST["MaCombo"];
    
    echo $MesChoix[1];
    echo $MesChoix;
    echo;
    $_POST["MaCombo[1]"]
    Impossible de trouver la solution malgré mes recherches....
    Avez vous une idée du probleme ? Est-ce le fait que j'utilise une ComboBox multiple ?

    merci à vous !

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 064
    Points
    6 064
    Par défaut
    Dans le name de ton select il faut placer des crochets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select name="MaCombo[]">
    ....
    </select>
    coté php "MaCombo" sera un tableau, tu pourras donc faire ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nbElement = count($_POST['MaCombo']);
    for($k=0;$k<$nbElement;$k++)echo $_POST['MaCombo'][$i];

  3. #3
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Merci à toi pour ta réponse !!

    Malheursement, le fait d'ajouter des crochets dans la nomination de mon SELECT me genere des erreurs dans JavaScript, de type Error Syntax sur ces crochets.

    Et donc mes fonctions JAVA ne fonctionnent plus...

    Edit : si je rajoutes mes crochets dans tout mon document, java me sort cette erreur se synthaxe, si je ne met les crochets uniquement lorsque je crée mon SELECT, java ne reconnait plus le contrôle MaCombo sur le formulaire...

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 064
    Points
    6 064
    Par défaut
    Effectivement ça pose problème dans le name alors identifie tes élément via l'attribut id="MonCombo" name="MonCombo[]" pour atteindre ton élément tu fais document.getElementById("MonCombo").value;

  5. #5
    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

    Si si, c'est bien la bonne méthode. J'en ai mis des exemples ici : Les formulaires et PHP 5
    Souviens-toi que Java et JavaScript ne sont pas la même chose.

  6. #6
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Oui, pour la difference JavaScript et Java je connais.
    Je ne connaissais pas l'attribut ID, je testarais !! Je pense que ça ira, merci à toi !!

    Merci à vous !

  7. #7
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bon je n'arrive toujours pas à récupérer ce fichu tableau. Par contre l'attribut "id" dans la création du SELECT avec le nom sans les crochets fonctionne, Javascript arrive a travailler sans problemes avec, le script JS me séléctionne bien les éléments de MaCombo avant envoi. Je n'ai pas d'ereur JavaScript par contre un avertissement

    PHP m'affiche toujours la même erreur avec l'index non défini:
    Notice: Undefined index: MaCombo in c:\program files\easyphp1-8\www\MonDossier\MaPageDeReception.php on line 17


    Et voici l'avertissement de la console JavaScript :
    Avertissement : Le formulaire contient un champ d'entrée de fichier, mais ne spécifie pas la méthode POST et l'encodage « multipart/form-data ». Le fichier ne sera pas envoyé.


    Je suis paumé, je vois pas où ça peut bloquer....
    En reception j'ai testé
    * echo $_POST["MaCombo"]; (histoire de voir s'i m'affiche "Array")
    * echo $_POST["MaCombo[]";
    * echo $_POST["CompChoix[2]"];

    Rien a faire, message d'erreur identique. Par contre un count($_POST["MaCombo"]); me retourne zéro

    J'en perd mon latin !!!

    Si vous voyez d'où peut venir mon soucis, je pencherais pour un probleme du coté de mon script JavaScript vu l'avertissement....

  8. #8
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    <form name="FormNom" enctype = "multipart/form-data">

    J'ai rajouté l'encodage à mon Formulaire et plus de soucis... de Javascript !
    Par contre pour ce tableau je crois que je vais concatener mes valeurs du tableau dans un champ masqué et le récupéré par ce biais.

    C'est peut être un peu brouillon comme méthode, mais je ne vois pas d'autre solution, à part eventuellement en passant pas une variable de session.

    Ralala.... chuis pô doué

  9. #9
    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
    Tu n'as pas ien regardé mon tuto sur les formulaires, car j'y indique la méthode utilisée par dafaut par un formulaire : GET. Là, tes données sont envoyées dans le tableau PHP $_GET, non $_POST comme tu utilises.

  10. #10
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 064
    Points
    6 064
    Par défaut
    Citation Envoyé par JFKen
    Bon je n'arrive toujours pas à récupérer ce fichu tableau. Par contre l'attribut "id" dans la création du SELECT avec le nom sans les crochets fonctionne, Javascript arrive a travailler sans problemes avec, le script JS me séléctionne bien les éléments de MaCombo avant envoi. Je n'ai pas d'ereur JavaScript par contre un avertissement

    PHP m'affiche toujours la même erreur avec l'index non défini:


    Et voici l'avertissement de la console JavaScript :


    Je suis paumé, je vois pas où ça peut bloquer....
    En reception j'ai testé
    * echo $_POST["MaCombo"]; (histoire de voir s'i m'affiche "Array")
    * echo $_POST["MaCombo[]";
    * echo $_POST["CompChoix[2]"];

    Rien a faire, message d'erreur identique. Par contre un count($_POST["MaCombo"]); me retourne zéro

    J'en perd mon latin !!!

    Si vous voyez d'où peut venir mon soucis, je pencherais pour un probleme du coté de mon script JavaScript vu l'avertissement....
    Pour que tu puisses savoir comment récupérer tes données utilise print_r($_POST) ou get tu verras à ce moment là comment sont rangés tes données donc par déduction tu seras comment les récupérées.

  11. #11
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Effectivement, j'ai réeussi a résoudre mon probleme avant d'avoir lu ton tuto.
    Avec la methode POST j'arrive a passer mon tableau. J'ai utiliser ce code dans mon script JavaScript avant l'envoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("MaCombo").name = "MaCombo[]";
    Et là bizzarement, JavaScript ne me fait pas d'erreur (bien qu'il y ai des crochets) et je peux récupérer mon tableau dans ma page de reception avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $MonTableau = $_POST["MaCombo"];
    Va comprendre....

    En tout cas merci à vous !!

    Ps : je vais quand même jeter un coup d'oeil à ton tuto, toujours des choses à apprendre !!

  12. #12
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 064
    Points
    6 064
    Par défaut
    Citation Envoyé par JFKen
    Effectivement, j'ai réeussi a résoudre mon probleme avant d'avoir lu ton tuto.
    Avec la methode POST j'arrive a passer mon tableau. J'ai utiliser ce code dans mon script JavaScript avant l'envoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("MaCombo").name = "MaCombo[]";
    Et là bizzarement, JavaScript ne me fait pas d'erreur (bien qu'il y ai des crochets) et je peux récupérer mon tableau dans ma page de reception avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $MonTableau = $_POST["MaCombo"];
    Va comprendre....

    En tout cas merci à vous !!

    Ps : je vais quand même jeter un coup d'oeil à ton tuto, toujours des choses à apprendre !!
    Je comprend pas pourquoi tu as besoin de cela ?
    document.getElementById("MaCombo").name = "MaCombo[]";

  13. #13
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    J'avoues ne pas comprendre non plus, en tout cas ça fonctionne.
    Si je laissais name="MaCombo[]" sans l'attribut ID javascript ne voulait pas de mes crochets, et là en renommant avec les crochets, bin ça passe...

    Je pense pas que celà est la meilleure maniere, mais elle fonctionne bien : mon tableau est récupéré entierement et est complet.

  14. #14
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 064
    Points
    6 064
    Par défaut
    En faite il faut laisser name="MonCombo[]" juste pour le post mais pour travailler avec le javascript il faut laisser aussi id="MonCombo".

  15. #15
    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
    Ou plutôt, puisque tous les "id" d'une même page doivent être différents, il faudrait donner un nom style id="MonCombo-1", id="MonCombo-2" etc.
    En revanche, le nom doit porter les crochets : name="MonCombo[]"

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

Discussions similaires

  1. [Tableaux] Faire un tableau à partir d'une string
    Par hugo69 dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2007, 10h49
  2. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  3. [Tableaux] récupérer un tableau de valeur
    Par PAYASS59 dans le forum Langage
    Réponses: 7
    Dernier message: 16/02/2006, 12h22
  4. [Tableaux] récupérer un tableau sur une autre page
    Par samsso2005 dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 22h58
  5. [Tableaux] Coloriser un tableau à partir de mon code
    Par pod1978 dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2005, 16h25

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