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 les valeurs d'un Array dans une vue


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Par défaut Récupérer les valeurs d'un Array dans une vue
    Bonjour,

    J'ai un petit souci sur une de mes pages en mvc, à savoir que je fais passer un array dans le controleur dont je n'arrive pas à récupérer les valeurs dans ma vue.

    Au niveau de la méthode appelée, c'est le getCommentaires de la classe commentaireManager :

    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
    22
    23
    24
    25
    26
    27
     
        public function getCommentaires($id = null)
        {
            $bdd = $this->bdd;
            $query = 'SELECT COM_ID AS id, COM_DATE AS date_b, COM_AUTEUR AS auteur, COM_CONTENU AS contenu, COM_SIGNALEMENT as signalement FROM T_COMMENTAIRE';
            ($id == null) ? $where = '' : $where = ' WHERE BIL_ID= :id ';
            $query .= $where;
            $query .= ' ORDER BY COM_ID desc ';
            ($id == null) ? $limit = 'LIMIT 0,3' : $limit = '';
            $query .= $limit;
            // echo $query; exit;
            $req = $bdd->prepare($query);
            if ($id) $req->bindParam(':id', $id);
            $req->execute();
     
            if ($req->rowCount() > 0) {
                while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
                    // instance of a commentaire object
                    $commentaire = new Commentaire();
                    // hydrate manualy from bdd datas
                    $commentaire->hydrate($row);
     
                    $commentaires[] = $commentaire;
                }
                return $commentaires;
            }
        }
    Au niveau du controlleur, je l'appelle de cette manière, et le renvoie à la vue correspondante (back_end) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public function back_end()
        {
     
            $multiCommentaire = new commentaireManager;
            $multiComms = $multiCommentaire->getCommentaires();
     
            $view = new view();
            $view->render('Back_end', array('title' => 'Back_end',  'multiComms' => $multiComms));
        }
    Et enfin, au niveau de ma vue, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <?php if (is_array($multiComms)) : ?>
            <?php foreach ($multiComms as $commentaires): ?>
                <header>
                    <h1 class="titreCommentaire"><?php echo $commentaires->getcomAuteur(); ?></h1>
                    <time><?php echo $commentaires->getcomDate(); ?></time>
                </header>
                <p><?php echo $commentaires->getcomContenu(); ?></p>
                <hr />
            <?php endforeach; ?>
        <?php endif; ?>
    j'ai un joli message d'erreur qui m'affiche :

    Notice: Undefined variable: multiComms in C:\Users\Adrien.Gautier\Desktop\P3Abiolab\P3_V11\view\back_end.php on line 50

    De plus, lorsque j'appelle cette même fonction dans un autre controleur (listeEpisodes) tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public function listeEpisodes(){
     
            $multiBillet = new billetManager;
            $multiBills = $multiBillet->getBillets();
     
            $multiCommentaire = new commentaireManager;
            $multiComms = $multiCommentaire->getCommentaires();
     
            $view = new view();
            $view->render('Episodes', array('title' => 'test', 'multiBills' => $multiBills, 'multiComms' => $multiComms));
        }
    Au niveau de ma vue associée, le code est exactement le même que celle du dessus.

    Ici, pas de messages d'erreur, je n'ai juste que le vide qui remonte :p

    J'ai checké ma bdd, ma requete, tout est bon, et le passage se fait bien car mes vues sont bien générées, je ne comprends juste pas d'ou le probleme peut venir du coup pour que rien ne s'affiche, sinon ce message d'erreur sur une page sur deux.

    Merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je remarque un truc dans ta fonction : si il n'y a pas de résultats, il n'y a pas d'appel à return Tu pourrais essayer de retourner un tableau vide par défaut :
    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
    22
    23
    24
    25
    26
    public function getCommentaires($id = null){
        $bdd = $this->bdd;
        $query = 'SELECT COM_ID AS id, COM_DATE AS date_b, COM_AUTEUR AS auteur, COM_CONTENU AS contenu, COM_SIGNALEMENT as signalement FROM T_COMMENTAIRE';
        ($id == null) ? $where = '' : $where = ' WHERE BIL_ID= :id ';
        $query.= $where;
        $query.= ' ORDER BY COM_ID desc ';
        ($id == null) ? $limit = 'LIMIT 0,3' : $limit = '';
        $query.= $limit;
     
        // echo $query; exit;
     
        $req = $bdd->prepare($query);
        if ($id) $req->bindParam(':id', $id);
        $req->execute();
        $commentaires = array();
        if ($req->rowCount() > 0) {
            while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
                // instance of a commentaire object
                $commentaire = new Commentaire();
                // hydrate manualy from bdd datas
                $commentaire->hydrate($row);
                $commentaires[] = $commentaire;
            }
        }
        return $commentaires;
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Par défaut
    En effet, en ajoutant par défaut l'array, ça ne me change rien. Quand je fais un var_dump dans ma vue, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    object(Commentaire)[22]
          protected 'comId' => null
          protected 'comDate' => null
          protected 'comAuteur' => null
          protected 'comContenu' => null
          protected 'billetId' => null
          protected 'comSignalement' => null
    Donc, rien ne remontant, il doit y avoir un souci dans la requete ? C'est bizarre, quand j'instanciais directement mes classes depuis la vue (c'est mal je sais !!! :p), tout fonctionnait bien, donc ça me semble bizarre que le problème vienne de la.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2012, 16h07
  2. récupérer les valeurs d'un checkbox dans une liste
    Par ikouhan dans le forum Struts 1
    Réponses: 19
    Dernier message: 31/08/2010, 14h22
  3. Récupérer les valeurs lors de navigation dans une jsp
    Par aze20moh dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 17/01/2010, 17h08
  4. Réponses: 4
    Dernier message: 03/08/2007, 14h09
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55

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