购买流程 付款方式 常见问题 在线提问  续租服务  购物车
首页 域名注册 虚拟主机 成品网站 企业邮局 服务器租用 VPS主机 云主机 智能建站 代理专区 客户中心
用户登陆
           首页公告
           常见问题
           有问必答
           跟踪提问
           购买流程
           付款事宜
           汇款确认
           相关文档
           联系我们



发一个thinkphp3.0版的数据库标签实例

 



发一个thinkphp3.0版的数据库标签实例
    

thinkphp是国内非常好的开源开发框架,所以在这里我发一个他的数据库调用标签的实例。希望能帮到各位.


<?php


// +-----------------------------------------------------------
// | ThinkPHP
// +------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +------------------------------------------------------------
// $Id: TagLibArticle.class.php 2601 2012-01-15 04:59:14Z liu21st $
//修改 jroam 2012-4-28



class TagLibArticle extends TagLib {


    // 标签定义
    protected $tags = array(
        // 标签定义:
        //attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
        /**
         * name 表示表的名称,不加前缀
         * field 查询的字段名
         * limit 查询的限制条件,
         * where 查询的条件,用于模型的where部份
         * sql 原生态语句查询 当name值为空时生效.
         * key表示模板循环的变量,默认就能量名为i
         * mod表示取模时的变量,通常在并列列时用来计算,默认它的值为2  <eq name="mod" value="1"><tr></eq> 
         */
        'article' => array('attr' => 'name,field,limit,order,where,sql,key,mod', 'level' => 3),
    );


    //定义查询数据库标签
    public function _article($attr, $content) {
        $tag = $this->parseXmlAttr($attr, 'article');
        $result = !empty($tag['result']) ? $tag['result'] : 'article'; //定义数据查询的结果存放变量
        $key = !empty($tag['key']) ? $tag['key'] : 'i';
        $mod = isset($tag['mod']) ? $tag['mod'] : '2';
        if ($tag['name']) {   //根据用户输入的值拼接查询条件
            $sql = "M('{$tag['name']}')->";
            $sql .= ($tag['field']) ? "field({$tag['field']})->" : '';
            $sql .= ($tag['order']) ? "order(\"{$tag['order']}\")->" : '';
            $sql .= ($tag['where']) ? "where(\"{$tag['where']}\")->" : '';
            $sql .= "select()";
        } else {
            if (!$tag['sql'])
                return ''; //排除没有指定model名称,也没有指定sql语句的情况
            $sql .= "M()->query(\"{$tag['sql']}\")";
        }
        
        //下面拼接输出语句
        $parsestr = '<?php $_result=' . $sql . '; if ($_result): $' . $key . '=0;';
        $parsestr .= 'foreach($_result as $key=>$' . $result . '):';
        $parsestr .= '++$' . $key . ';$mod = ($' . $key . ' % ' . $mod . ' );?>';
        $parsestr .= $content; //解析在article标签中的内容
        $parsestr .= '<?php endforeach; endif;?>';
        return $parsestr;
        //return $sql;
    }


}


?>


运用说明:


这个文件取名为:TagLibArticle.class.php  ,要放在:lib/TagLib下.


 


调用方法:


1先导入标签
2书写标签主体,如下: 
<Article:article name="orderform">
 <div><{article.orderform1}></div>
 </Article:article>


其中的name值是表名
field表示要选择的字段名,limit表示要限制显示的条数,order排序,where查询条件,
sql原生态查询语句,在name值为空时生效,
key循换的变量名,默认为i,mod循环时的取模值,默认为2


 


返回首页 |关于我们 | 联系我们 | 付款方式 | 广告联盟 | 有问必答
版权所有 西部数码代理,西数代理,vps_空间优惠,网站性能优化·严禁复制
在线客服: 点击发送消息给对方3528938
服务热线:18382390188 传真:028-86264041
信息反馈:业务咨询 技术问题 问题投诉 《中华人民共和国增值电信业务经营许可证》川B2-20030065号
友情链接:美美哒网