phpcms v9 get语句多条件数据调用
在phpcms中get语句的用法,当使用phpcms自带标签调用不了的数据,都可以使用get语句来进行直接 sql 的调用,这在多级数据的调用上,尤其是自定义的条件数据,经常会用到。
phpcms普通的pc标签调用数据代码:
复制代码 代码示例:
{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"}
<ul class="list lh24 f14">
{loop $data $r}
<li><span class="rt">{date('Y-m-d H:i:s',$r[inputtime])}</span>·<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li>
{if $n%5==0}<li class="bk20 hr"></li>{/if}
{/loop}
</ul>
<div id="pages" class="text-c">{$pages}</div>
{/pc}
很常用的数据调用方式了,假如再来调用一个模型中的产品,而且又有 where 条件的情况下,代码:
复制代码 代码示例:
{pc:content action="lists" catid="6" moreinfo="1" where="function=1" num="8" order="id DESC"}
{loop $data $r}
<li>·<a href="{$r[url]}" title="{$r[title]}" class="xiariboke">{str_cut($r[title],64)}</a></li>
{/loop}
{/pc}
注意看 where=”function=1″ 这一条件,其中 content 里面的这些个参数都算得上是另一个 sql 的条件筛选式了,可以将上面的直接搞成 get 进行直接的调用,代码如下:
{pc:get et sql="select * from xiariboke_pictures where catid=6 and function=1 order by id desc" rows="8" return="data"}
{loop $data $r}
<li>·<a href="{$r[url]}" title="{$r[title]}">{str_cut($r[title],64)}</a></li>
{/loop}
{/pc}
这样是不是显得更方便一些呢,当然,如果像这样简单的调用夏日博客还是建议使得 pc 标签的,但如果遇到更复杂的条件语句呢,显然,使用 get 语句就更方便一些了,可以直接get语句,get唯一的优点就是其扩展性很强大,可以组合各种各样的 sql 条件语句,这一点来说的话,pc 就有点弱了。
如果前端模板要按用途来调用产品列表,把用途作为Tab,一个Tab显示一个用途,应该怎么来定义这个数据?
首先,在模型中添加一个字段为“function”作为用途,采用下拉选项菜单的方式,预先定义好几个用途可选,假定这几个选项的字段ID为1、2、3、4。
那么可以用下面的代码调用“function”字段ID为1这一用途的产品:
{pc:content action="lists" catid="6" moreinfo="1" where="function=1" num="8" order="id DESC"}
{loop $data $r}
<li>·<a href="{$r[url]}" title="{$r[title]}" class="cmsyou">{str_cut($r[title],64)}</a></li>
{/loop}
{/pc}
这样,就可以出栏目ID为6这一产品栏目(图片模型)用途ID为1的8个产品。
同理,也可以使用GET语句来做到这一调用:
{pc:get et sql="select * from cmsyou_pictures where catid=6 and function=1 order by id desc" rows="8" return="data"}
{loop $data $r}
<li>·<a href="{$r[url]}" title="{$r[title]}">{str_cut($r[title],64)}</a></li>
{/loop}
{/pc}
注意,上面的代码是通过GET语句,指定了数据库的表头cmsyou_pictures,于是你在使用的时候,要根据表头和模型所在的分表来自定义修改。
可以看到GET调用与mysql调用语句的方式相似,那么可以根据这个来做多重条件筛选。
上面的第一句是:
{pc:get et sql="select * from cmsyou_pictures where catid=6 and function=1 order by id desc" rows="8" return="data"}
其中条件使用了上面使用了Where进行筛选,当满足catid=6和function=1两个条件的时候就进行调用,如果要更多层条件筛选,大家可以尝试多个and或者or并从。