A-A+

phpcms多表查询图集上下页

2016年08月14日 PHP开源系统 暂无评论 阅读 8 views 次

我们知道,phpcms提供了最基础的 pc 标签来进行调用各种信息,但 pc 标签又不是万能的,有些需求不能够调用出来,所以phpcms的官网也提供了另一种解决方案,哪就是 get 万能标签了,get 万能 sql 标签可以组合成各种各样我们需求的 sql 语句,然后根据 sql 来调用我们需要的信息,在做项目的时候,遇到了调用图集,这个需求是这样的,首先要判断图集存不存在,如果存在的话则显示调用,如果不存在的话就不显示.

phpcms 的图集保存在 v9_picture 和 v9_picture_data 两个表里面,在 phpcms 默认的代码里面有一个小 bug,就是上一页和下一页,只要我选择文章类型为图集的话,如果不上传图集,这条信息也会出现在上一页和下一页里面,结果点出来什么都没有,一直在加载,所以在选择上一页下一页的时候,要先判断上一条和下一条有没有内容,如果没有的话直接跳过。

v9_picture 是保存基础的信息的,真正判断有没有图集内容则是在 v9_picture_data 表里面,也就是 pictureurls 这个字段值,只要判断这个值就OK了,同时也需要把 v9_picture 基础字段都读出来。

夏日博客首先的思路就是使用 get 来进行 sql 多表的组合,费了很多劲组合成功的 sql 如下所示:

  1. 成功:select `lehuo`.`v9_picture`.*,`lehuo`.`v9_picture_data`.* from   
  2. `lehuo`.`v9_picture`,`lehuo`.`v9_picture_data` where `lehuo`.`v9_picture`.id=`lehuo`.`v9_picture_data`.id  
  3. and `lehuo`.`v9_picture`.id<220 and `lehuo`.`v9_picture`.catid=13 and `lehuo`.`v9_picture`.status=99 and `lehuo`.`v9_picture_data`.pictureurls<>''  

sql 组合出来之后就要和 pc 的模板进行整合了,看如下的代码:

  1. {pc:get sql="SELECT `v9_picture`.*,`v9_picture_data`.* from `v9_picture`,`v9_picture_data` where `v9_picture`.id=`v9_picture_data`.id and `v9_picture`.id > $id and `v9_picture`.catid = $catid and `v9_picture`.status = 99 and `v9_picture_data`.pictureurls<>'' order by `v9_picture`.id DESC" num="1"} //xiariboke.com  

这个是组合下一页也就是判断下一条有没有图集的 sql 标签了,如果想要判断上一组的话直接把 id 改为 小于 就可以了,在图集的列表里面还有一个相关图集,如果也要判断 pictureurls 是否为空的话,直接在上面的代码上面修改一下就可以了,如下所示:

  1.   <div class="bk10"></div>  
  2.     <div class="relevance">  
  3.     <h5>相关图集</h5>  
  4.     {pc:get sql="SELECT `v9_picture`.*,`v9_picture_data`.* from `v9_picture`,`v9_picture_data` where `v9_picture`.id=`v9_picture_data`.id and `v9_picture`.catid = $catid and `v9_picture`.status = 99 and `v9_picture_data`.pictureurls<>'' order by `v9_picture`.id DESC" num="6"}  
  5. //xiariboke.com  
  6.             <ul class="photo-list">  
  7.                 {loop $data $r}  
  8.                 <li><div class="img-wrap"><a href="/index.php?m=content&c=index&a=show2&catid={$r[catid]}&id={$r[id]}"><img src="{thumb($r[thumb])}" width="100" height="86"/></a></div><a href="/index.php?m=content&c=index&a=show2&catid={$r[catid]}&id={$r[id]}">{str_cut($r['title'],35,'')}</a></li>  
  9.                 {/loop}  
  10.             </ul>  
  11.         {/pc}  
  12.     </div>  
  13. </div>  

可以不看 div+css,把万能 sql 整合到自己的 pc 标签里就行了,这里的基础万能读取多表的语句已经出来了,实际上我们可以修改成各种各样的多表读取,很是方便。

关于图集上下页的相关 model 文件(仅供夏日博客参考):

pictureurls 图集字段

两个文件/phpcms/modules/content/index.php

phpcms/libs/classes/model.class.php

/phpcms/libs/classes/mysql.class.php

标签:

给我留言