Bonjour à tous,
j'essaie de compter le nombre de commentaires pour chaque article, j'utilise codeIgniter 2, mais ma requête ne donne pas le bon résultat.
c'est la 1ere fois que j'utilise CI, et cela fait plusieurs jours que je cherche une solution, si quelqu'un peut m'aider, se serait sympas.
Voici mon code:
mon modèle:
Voici mon controller:
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 class Comments_model extends CI_Model { public function __construct() { $this->load->database(); } /*Fonction récuperrant le nombre de commentaire pour un article*/ public function get_nb_comment() { //$sql = "SELECT COUNT(commentaires.id) FROM commentaires, news WHERE commentaires.news_id = news.id GROUP BY news.id"; $query = $this->db->select('id')->from('commentaires')->join('news','news.id = commentaires.news_id')->group_by('news.id'); return $query->count_all_results(); } }
et pour finir ma vue:
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 class News extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('news_model'); $this->load->model('comments_model'); } public function index() { $data['news'] = $this->news_model->get_news(); $data['count'] = $this->comments_model->get_nb_comment(); $data['title'] = 'News archive'; $this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } }
Merci d'avance pour votre aide
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 <?php foreach ($news as $news_item): ?> <h2><?php echo $news_item['title'] ?></h2> <p class="news_meta"><?php echo date('d/m/Y H:i', strtotime($news_item['date'])) ; ?></p> <p align="justify"><?php echo substr($news_item['text'],0,250) ?></p> <p class="news_meta"> <?php //On récupère le nombre de commentaires pour un article et on l'affiche //$count = $this->db->select('id')->from('commentaires')->where('news_id',$news_item['id']); //$count = $this->db->count_all_results(); if ($count > 1) { echo '('.$count.' commentaires)'; } else { echo '('.$count.' commentaire)'; }?> </p>
Partager