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

MVC PHP Discussion :

Problème pour récupérer une variable en Post()


Sujet :

MVC PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Problème pour récupérer une variable en Post()
    Bonjour,

    Je viens de me mettre au Zend Framework, et je rencontre un petit souci.
    Je posséde un formulaire ( la méthde d'envoie est POST) contenant une liste déroulante, autorisant la selection mulitiple, de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <tr>
    <td><label for="competences">Compétences:</label></td>
    <td>
    	<select name="competences[]" multiple="true">
    	<?php foreach($this->competences as $compet) 
     
                        echo "<option id='$this->escape($compet->compet_id)' value='$this->escape($compet->compet_id)'>$compet->compet_libelle</option>";
    	?>
    	</select>
    </td>
    </tr>
    Dans le controllers qui doit s'occuper de l'action du formulaire, j'arrive a récupérer l'ensemble des variables cependant lorsque je veux parcourrir la liste des compétence séléctionnées a l'aide d'une boucle foreach j'ai le message d'erreur suivant:
    Warning: Invalid argument supplied for foreach() in C:\wamp\www\Zend_XML\application\controllers\IndexController.php on line 44
    Voici comment je récupere ma variable compétence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $compet = trim($filter->filter($this->_request->getPost('competences')));
    et la boucle foreach qui suit (pour l'instant j'essaye juste de voir si j'arrive à récuperer les valeurs de la liste d'oû le petit code javascript a l'interieur de la boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($compet as $valeur)
    {
          echo "<script>alert('".$valeur."')</script>";
    }
    Donc, j'aurai voulu savoir comment récupérer une liste provenant d'une selection multiple.

    Merci d'avance pour votre aide.

    Pour information j'utilise WAMP5 version 1.6.0.

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

    L'instruction foreach est très pratique mais elle a généralement un défaut (à mon sens) : si le tableau existe mais qu'il est vide, alors foreach envoie un warning.

    Essaie de mettre la boucle foreach dans un test empty() ou dans son équivalent ZF.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer en mettant la boucle foreach dans un test !empty($compet):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(!empty($compet))
    {
    	foreach($compet as $value)
    	{
    		echo"<script>alert('".$value."');</script>";
    	}
    }
    ma variable n'est pas vide et j'ai la même erreur. C'est assez étrange.

  4. #4
    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
    Je parlais de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($this->competences))

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Le probleme avec le foreach a lieu dans le controller, ma liste dans la vue ce rempli correctement.

    De ce fait si j'utilise $this->competences dans le controller il ne reconnaitra pas la variable.

    En faisant le test avec $this->compet, il me renvoie que ma variable n'est pas vide et essaye d'executer le foreach ce qui me retourne l'erreur.

    Si j'essaye d'afficher dans un alert cette même variable il m'affiche "Array".

  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
    Je sais pas pourquoi je n'arrive pas à me faire comprendre mais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($this->competences as $compet)
    Est une boucle foreach sur la variable dont je te parle : $this->competences. Encapsule le code ci-dessus dans un test if(!empty($this->competences)) et ça devrait bien se passer. Non ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Toujours le même le probleme ma liste ce rempli correctement mais côté controllers quand je désire récuperer ma sélection j'ai le même probleme.

  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
    Peux-tu montrer ici la ligne 44 incriminée ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //je récupére ma liste de selection
    $compet = trim($filter->filter($this->_request->getPost('competences')));
     
     
    //je parcours ma liste
    foreach($compet as $value)
    {
    La ligne 44 est la ligne du foreach.

  10. #10
    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 appliques trim() à un tableau ?
    Je n'avais aps remarqu

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Oui c une petite erreur que j'ai rectifié ( ah les pieges du copier/coller ) mais le probleme ne vient pas la. Une fois trim() enlevé j'ai le même souci.

  12. #12
    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
    Fais un var_dump() de la variable juste avant le foreach, pour voir ?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    ok.

    Aprés le var_dump(), il s'avére que ma variable est reçu par le controller comme une chaine de caractere contenant la valeur de la derniere ligne sélectionnée.

  14. #14
    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
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($this->_request->competences) ?

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Oui j'ai essayé et c le même probléme.

  16. #16
    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
    Donne-voir le tag <form>, stp ?

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Voila le tag <form> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <FORM method='post' action='<?php echo $this->baseUrl ?>/index/<?php
    echo $this->action; ?>' name='formInscri'>

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Probleme résolu, fallait juste ne pas passer par la méthode filter.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/01/2012, 21h51
  2. Problème pour inclure une variable à un objet
    Par yoyo29 dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/05/2007, 13h01
  3. Réponses: 2
    Dernier message: 14/04/2006, 18h40
  4. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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