Bonjour,
je suis entrain de mettre un systeme de commentaire sur un site et j'ai un soucis:
je souhaiterai afficher les 3 derniers commentaires posté mais je n'obtient que le premier alors qu il y en a bien 3 dans ma base, auriez vous une petite idée?
merci d'avance

Gilles

je joint le controleur:

<?php
class CommentsController extends AppController{

    function latest() {
        if (empty($this->request->params'requested'])) {
            throw new ForbiddenException();
        }
        return $this->Comment->find('all', array('order' => 'Comment.id DESC', 'limit' => 3));
    }
}

et la vue

<div class="content-footer">
         <div class="col">
         <?php $comments = $this->requestAction('/comments/latest'); ?>
                <?php foreach ($comments as $comment); ?>
                        <h3><?php echo $comment'Comment']'pseudo']; ?></h3>
                                <p><?php echo $comment'Comment']'content']; ?></p>
                                <?php endforeach; ?>
                        </div>

         </div>

6 réponses


stitox
Réponse acceptée

ah oui, je vois bien l'erreur lol, c'est cette ligne

<?php foreach ($comments as $comment); ?>

donc soit tu fais comme ça

<?php foreach ($comments as $comment) : ?>

ou bien tu ouvres une accolade :

<?php foreach ($comments as $comment){ ?>
    tu fais ici ce que tu veux, après tu fermes
<?php }?>

j'espère que c'est ça la source de ton problème ;)

Bizard, je ne vois pas de problème, et si tu enlèves le limit => 3, tu obtiens quoi ?

Escuse mais tu as fait un debug(), de $comments pour savoir si tous tes commentaires sont biens transmis, sa permettra de cibler l'erreur, si sa vient de la requete ou de l'affichage.

gilles40
Auteur

Bonjour à vous,

@stitox: si je retire le 'limit' c'est pareil
@lepetitnico: quand je fais un 'debug($comments)' je vois bien le tableau avec mes 3 commentaires voila ce que j'obtiens:

Array
(
    [0] => Array
        (
            [Comment] => Array
                (
                    [id] => 3
                    [pseudo] => titi
                    [mail] => titi@free.fr
                    [content] => distribution de lettres plus ou moins versions sont apparues avec le temps, parfois par accident, souvent intentionnellement (histoire d'y rajouter de petits clins d'oeil, voire des phrases embarassantes).
                    [posts_id] => 8
                )
        )
    [1] => Array
        (
            [Comment] => Array
                (
                    [id] => 2
                    [pseudo] => titi
                    [mail] => titi@free.fr
                    [content] => distribution de lettres plus ou moins normale, et en tout cas comparable avec celle du français standard. De nombreuses suites logicielles de mise en page ou éditeurs de sites Web ont fait du Lorem Ipsum leur faux texte par défaut, et une recherche pour 'Lorem Ipsum' vous conduira vers de nombreux sites qui n'en sont encore qu'à leur phase de construction. Plusieurs versions sont apparues avec le temps, parfois par accident, souvent intentionnellement (histoire d'y rajouter de petits clins d'oeil, voire des phrases embarassantes).
                    [posts_id] => 8
                )
        )
    [2] => Array
        (
            [Comment] => Array
                (
                    [id] => 1
                    [pseudo] => toto
                    [mail] => toto@toto.fr
                    [content] => test commentaires
                    [posts_id] => 8
                )
        )
)
gilles40
Auteur

Merci stitox cela fonctionne
@+
Gilles

Je t'en prie gilles40 ;)