最近遇到一个网站首页调用phpcms最新评论的问题,并且要实现点击评论之后能跳转到文章内容页,而且同一个评论人评论的多个文章只能显示一个评论人和一个最新的评论内容,WP管理员之家先是通过单表查询来实现。
- <div class=“newly”>
- <h2>最新留言</h2>
- <ul>
- {pc:get sql=“select * from hym315_comment_data_1 where status=1 and reply=0 order by creat_at DESC” num=“8” cache=“3600”}
- {loop $data $r}
- <li>
- <div class=“clear”>
- <div class=“lli”><h4>{$r[username]}@</h4>{str_cut($r[content],40,‘…’)}
- </div><div><img src=“{IMG_PATH}hym/userbg.png” /></div>
- <div class=“newlyT”><?php echo date(‘Y-m-d’,$r[creat_at]);?></div>
- </div>
- </li>
- {/loop}
- {/pc}
- </ul>
- </div>
以上代码虽然能调用到评论人和评论的内容,但是不能调用到文章的链接和最新的一条评论,经过WP管理员之家深入分析phpcmsv9的数据库表发现,原来并不是不能实现,而是需要通过多表查询和分组排序来实现,到这里算是说到本文的重点了=>深度解析mysql分组查询。
- {pc:get sql=“SELECT *
- FROM (SELECT username,content,url,creat_at
- FROM hym315_comment_data_1, hym315_comment
- WHERE hym315_comment_data_1.commentid = hym315_comment.commentid
- ORDER BY hym315_comment_data_1.creat_at DESC)a WHERE 1 GROUP BY a.username ORDER BY a.creat_at DESC
- “ num=“8” cache=“3600”}
- {loop $data $r}
- <li>
- <div class=“clear”>
- <div class=“lli”><h4>{$r[username]}@</h4> <a href=“{$r[url]}”>{str_cut($r[content],40,‘…’)} </a>
- </div><div><img src=“{IMG_PATH}hym/userbg.png” /></div>
- <div class=“newlyT”><?php echo date(‘Y-m-d’,$r[creat_at]);?></div>
- </div>
- </li>
- {/loop}
- {/pc}
- </ul>
- </div>
代码分析:该代码是通过一个子查询来实现的,先是2表联合查询出评论时间新的信息,然后通过select 分组查询出评论时间最新的评论信息