基于TP的数据库查询和分页类应用模块

model 类的进化版

<?php 
/**************************
     * 获取信息
     *
     * @param object    
     * @date 2016/02/17
     * @write zss
     * @return array        从数据库查询的信息
     ****************************/
    private function model ($model='', $pages='', $field='', $where='', $order=''){
    //转换页数为整型
        $pages = (int)$pages
        //实例化
        $model = M($model);
        //组合字段
        //$field = array('字段1','字段2','字段3');
        //计算数量
        if(is_array($field)){
            $count_field = count($field);

            //当字段大于1
            if($count_field >1){
                foreach ($field as $k1 => $v1){
                    $fields .= $v1.',';
                }
                //截取最后的逗号
                $fields = substr($fields,0,-1);

            //等于1
            }else if($count_field == 1){
                $fields = $field[0];
            }else{
                //没有设置字段时
                $fields = '*';
            }
        }else{
            $fields = $field;
        }



        //$where = array('条件字段1','条件值1','条件字段2','条件值2','条件字段3');

        if(is_array($where)){
            //组合条件--计算数量
            $count_where = count($where);

            //当条件少于1个
            if($count_where < 1){

                $wheres = '';
            //当条件大于1个
            }else if($count_where >= 2){
                //取余,舍去多余的条件
                if($count_where % 2 == 1){
                    unset($where[$count_where - 1]);
                }

                    $i = 0;
                    foreach ($where as $k2 => $v2){
                        $i ++;
                        //当条件少于1
                        if($i == 1){
                            $v2="$v2=";
                        }
                        if($i == 2){
                            $v2="'$v2' AND ";
                            $i = 0;
                        }
                        $wherez[] = $v2;
                    }
                    //连接条件
                    $j = 0;
                    foreach ($wherez as $k3 => $v3){
                        $j ++;
                        $wheres .= $v3;


                    }
                    //删掉最后的 AND
                    $wheres = substr($wheres,0,-5);

            }
        }else{
            $wheres = $where;
        }


        //组合排序
        //$order = array('排序1','排序2');
        if(is_array($order)){
            $h = 0;
            //计算数组数量
            $count_order = count($order);
            if($count_order > 1){
                    foreach ($order as $k4 => $v4){
                    $orders .= $v4.',';
                }
                $orders = substr($fields,0,-1);
            }else if($count_order == 1){
                $orders = $order[0];
            }else{
                $orders = '';
            }
        }else{
            $orders = $order;
        }


        // 获取总数
        $count_sum  = $model->where($wheres)->count();

        //默认为10,
        if($pages > 1){
            // 实例化分页类 
            $Page       = getpage($count_sum,$pages);
            // 分页显示输出
            $show       = $Page->show();
        }


        //按照上面的条件进行查询
        $data = $model
        -> where($wheres)
        -> field($fields)
        -> order($orders)
        -> limit($Page->firstRow.','.$Page->listRows)
        -> select();

        $datas['data'] = $data;
        $datas['page'] = $show;
        $datas['count'] = $count_sum;
        return $datas;
    }


    /**
 * 基础分页的相同代码封装,使前台的代码更少
 * @param int       $count      要分页的总记录数
 * @param int       $pagesize   每页查询条数
 * @param object    $Page
 * @return \Think\Page 实例化的Page类 
 */
function getpage($count, $pagesize = 10) {

    $Page = new \Think\Page($count,$pagesize);
        $Page->setConfig('header',
        '
        <span class="scott"><span class="current">%LINK_PAGE%</span><span class="current">%END%</span><span class="cc">共<b>%TOTAL_PAGE%</b>页</span><span class="cc" style="color:#708090">转到</span>
        <form action="" method="get"><input type="text" name="p" class="ca"><input type="submit" value="GO" class="cs"></form>
        </span>
        ');
    $Page->setConfig('theme',' %HEADER%');
    return $Page;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值