新版phpcms v9但中使用GET标签调用sql数据的几个注意点
2013-05-22 23:00:29;  来源:追太阳;  作者:逐日者;  评论:0 点击:

今天在偶然使用到phpcms v9中的get标签,发现如下的写法都失效了:最初,逐日者写的标签如下:{get sql="select * from zty_category...
今天在偶然使用到phpcms v9中的get标签,发现如下的写法都失效了:
最初,逐日者写的标签如下:

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

    (ps:由于本人没有背记这些标签严格格式的习惯--!上网上一搜,前几页给出的大部分都是如上的格式)
    结果系统直接不解析,原文返回。
    现在网上流传的很多phpcms的get标签的使用方法还是这种形式的,看来这样写已经不完全符合现在的版本了。

    后来进过查阅网上资料,有发现了在get前面加上pc标记的方式,如下:

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

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

    <ul>
    <?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"get\" data=\"op=get&tag_md5=95dd821129f80e3f0caf981a9f215a90&sql=select+%2A+from+zty_category+where+parentid%3D22+or+parentid%3D23+or+parentid%3D52+order+by+allclicks+desc&rows=8\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">编辑</a>";}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);?>
    <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>
    <?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
    </ul>

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

    {pc:get sql="select * from zty_category where parentid=22 or parentid=23 or parentid=52 order by allclicks desc" num="8"} {loop $data $r}
  • ...{$r[catname]}...({$r[allclicks]}clicks)...
  • {/loop} {/pc}
    (限制调用条数的属性用num,详情可参考:PHPcms v9 get标签 sql语句limit无效及num和rows属性无效问底层分析题解决全攻略)
    后来逐日者找到了官方提供的phpcms v9 get标签的格式如下:

    {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"}

     <ul>

     {loop $data $key $val}

     {$val[username]}<br />

     {/loop}

     </ul>

     {$pages}

     {/pc}

    dbsource:数据源;
    return:返回数据到哪个变量;
    page:是否有翻页;
    cache:缓存时间;

    (PS:--!幸亏哥对php还比较有自信,不然一时找不到管方最新公布的格式,岂不是抓瞎猴急了~~)

    本文属追太阳原创文章,转载请声明出处:http://www.zhuitaiyang.com/html/fcms/53.html逐日者_追太阳

    相关热词搜索:phpcms v9 GET标签 sql 注意点

    上一篇:帝国、PHPCMS及织梦标签中使用sql调用数据
    下一篇:dedecms栏目添加选项字段--栏目自定义字段

    收藏
    回到顶部