当前位置:首页 > CMS教程 > phpcms > 列表

新版phpcms v9但中使用GET标签的SQL调用几个注意点

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-19 22:09:54 浏览: 评论:0 

今天在偶然使用到phpcms v9中的get标签,发现如下的写法都失效了,最初,逐日者写的标签如下:

  1. {get sql="select * from zty_category where parentid=22 or parentid=23 or parentid=52 order by allclicks desc" rows="8"
  2. ...{$r[catname]}...{$r[allclicks]}... 
  3. {/get} 

由于本人没有背记这些标签严格格式的习惯--!上网上一搜,前几页给出的大部分都是如上的格式,结果系统直接不解析,原文返回.

现在网上流传的很多phpcms的get标签的使用方法还是这种形式的,看来这样写已经不完全符合现在的版本了,后来进过查阅网上资料,有发现了在get前面加上pc标记的方式,如下:

  1. {pc:get sql="select * from zty_category where parentid=22 or parentid=23 or parentid=52 order by allclicks desc" rows="8"
  2. ...{$r[catname]}...{$r[allclicks]}... 
  3. {/pc} 

这次系统解析了,但是不返回任何数据,这次‘逐日者’发飙了,直接到/caches/caches_template/...对应的模板缓存文件目录下找到了当前模板的缓存内容,找到对应此标签的解析内容如下:

  1. <ul> 
  2. \<\?php if(defined('IN_ADMIN') && !defined('HTML')) \{echo "<div class="admin_piao" pc_action="get" data="op=get&tag_md5=95dd821129f80e3f0caf981a9f215a90&sql=select+*+from+zty_category+where+parentid=22+or+parentid=23+or+parentid=52+order+by+allclicks+desc&rows=8"><a href="javascript:void(0)" class="admin_piao_edit">编辑</a& gt;";}pc_base::load_sys_class("get_model""model", 0);$get_db = new get_model();$r = $get_db->sql_query("select * from zty_category where parentid=22 or parentid=23 or parentid=52 order by allclicks desc LIMIT 20");while(($s = $get_db->fetch_next()) != false) {$a[] = $s;}$data = $a;unset($a);\?\> 
  3. <li><a href="<?php echo $r['url'];?>"><img src="<?php echo $r['image'];?>" width="130" height="170" alt="<?php echo $r['catname'];?>"/></a><a href="<?php echo $r['url'];?>"><?php echo $r['catname'];?>(<?php echo $r['allclicks'];?>clicks)</a></li> 
  4. <?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?> 
  5. </ul>  //phpfensi.com 

注意上面代码,由此可以看出,执行sql命令后返回的数据是存到了$data这个数组中去了,由此一切到明了了,这样我们应该用{loop}{/loop}标签将$data数组遍历一下,循环调用我们的需要的数据条,由此,正确的调用方式如下:

  1. {pc:get sql="select * from zty_category where parentid=22 or parentid=23 or parentid=52 order by allclicks desc" rows="8"} {loop $data $r} 
  2. ...{$r[catname]}...({$r[allclicks]}clicks)... 
  3. {/loop} {/pc} 

后来逐日者找到了官方提供的phpcms v9 get标签的格式如下:

  1. {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"
  2.  <ul> 
  3.  {loop $data $key $val} 
  4.  {$val[username]}<br /> 
  5.  {/loop} 
  6.  </ul> 
  7.  {$pages} 
  8.  {/pc} 

dbsource:数据源;

return:返回数据到哪个变量;

page:是否有翻页;

cache:缓存时间;

Tags: phpcms标签调用 get标签使用

分享到: