haoren26 发表于 2011-10-8 22:59:04

如何在首页统计评论的条数

本帖最后由 haoren26 于 2011-10-8 23:00 编辑

CI version:2.0.3

Environment:WAMP2.1      Windows2003

我写了一个博客,首页如下


我现在想添加一个功能,就是在“评论”旁边显示该文章的评论条数,希望的样子是这样“评论(X)”,X为评论条数。

但我在实现的时候遇到了困难,因为首页列出文章的方法是在Model里用$query = $this-db->get('article'),然后把$query 传给Controller,Controller里$data['list_article'] = $this->Mblog->list_article() 然后 传给视图$this->load->view('index_view',$data) 视图再用foreach循环方法列出所有文章,代码如下

index_view.php

<?php foreach($list_article as $arc_row):?>
      <hr>
      <h2><?=$arc_row->title?></h2>
      <p><?=$arc_row->article_author.' '.$arc_row->post_time?></p>
      <p><?=$arc_row->article_content?></p>
      <p><?=anchor('blog/comment/'.$arc_row->id,'评论')?></p>
      <?php endforeach;?>


我如果想在“评论”旁显示评论条数,那么我就得在 <p><?=anchor('blog/comment/'.$arc_row->id,'评论')?></p>的"</p>"标签前面加一个变量,而且必须是循环变量,因为有不止一篇文章,也就是说得再用一个foreach循环。

想想很复杂,
困难1:如何得到一个包含所有文章评论条数的数组;
困难2:foreach循环该放在原来那个foreach循环的外面还是里面,或者,这个例子根本用不了foreach循环?

附上我的数据库结构
'article'表


'comment'表






longjianghu 发表于 2011-10-8 23:39:24

这个困难在哪里?你获取当前列表之后获取主题ID查询数据库就行了。

haoren26 发表于 2011-10-9 10:21:22

longjianghu 发表于 2011-10-8 23:39 static/image/common/back.gif
这个困难在哪里?你获取当前列表之后获取主题ID查询数据库就行了。

请指教SQL语句怎么写??
你这样的话需要查询两次是吧?
查询两次得到两个数据集,我就要用两次foreach循环,这两个循环如果嵌套起来。。。我觉得不现实
最好是一次查询得到一个记录集,这样就好了

longjianghu 发表于 2011-10-9 10:58:47

还有一个更简单的方法,你设计数据库的时候增加一个评论数的字段,每当一个主题有一个评论的时候就+1,这样就不用重复查询了。这个是你设计的问题

haoren26 发表于 2011-10-9 12:49:07

longjianghu 发表于 2011-10-9 10:58 static/image/common/back.gif
还有一个更简单的方法,你设计数据库的时候增加一个评论数的字段,每当一个主题有一个评论的时候就+1,这样 ...

好办法!已经成功了

longjianghu 发表于 2011-10-15 16:02:10

haoren26 发表于 2011-10-9 12:49 static/image/common/back.gif
好办法!已经成功了

Good luck

haoren26 发表于 2011-10-23 00:07:27

longjianghu 发表于 2011-10-15 16:02 static/image/common/back.gif
Good luck

有没有办法在mysql数据库里面设置一个触发器,当comment表里面增加一条记录时,就自动在article表里加1,貌似触发器只支持当前表操作。。就是类似这种功能的东西有没有?

longjianghu 发表于 2011-10-24 08:58:46

haoren26 发表于 2011-10-23 00:07 static/image/common/back.gif
有没有办法在mysql数据库里面设置一个触发器,当comment表里面增加一条记录时,就自动在article表里加1, ...

mysql是支持的吧,我用的mysql5

zhouli520 发表于 2011-10-24 15:03:56

select *,(select count(*) from comment where article_id=article.id) as comments from article

一条sql语句不就都出来了咩....

haoren26 发表于 2011-11-4 23:00:13

zhouli520 发表于 2011-10-24 15:03 static/image/common/back.gif
一条sql语句不就都出来了咩....

啊,很好用!谢谢!

不过我看了wordpress的数据库结构,他的文章表里也有一个评论数的字段,具体的PHP代码还没看,不知道是不是通过php代码去修改评论数字段的值
页: [1] 2
查看完整版本: 如何在首页统计评论的条数