在ThinkPhp 中使用原生的 带条件查询 + 分页

      首先需要一个搜索的表单
        <!--添加 查询-->
        <form name="form" id="form" method="POST" action="U('action')" >//跳转到处理页面
        <div class="pub_line clearfix">

             <div class="floatr">
                 <div class="pub_search">

                //搜索的值
                    <input type="text" class="ui-input" placeholder="搜索" id="keyword" name="keyword">
                    <button type="submit" class="icon icon-search"></button>
                 </div>
             <div class="floatr">

            //搜索的类型
                <select name="typeid" id="typeid" class="form-control input-sm">
                        <option value="">全部类型</option>
                        <option value="1">条件1</option>
                        <option value="2">条件2</option>
                 </select>
             </div>
        </div>
        </form>

    
    //处理的页面

  //  获取到查询的条件

            $typeid =  I('post.typeid');

            $text = I('post.keyword');

   // 声明一个查询变量

            $where = '';

     //  根据获取到的值,再判断是什么查询

    if($typeid == '1'){

        $where = 'WHERE id='.$text;

  }elseif($typeid == '2'){

        $where = 'WHERE name='.$text;

}  



//统计符合条件的总数据

$total = M()->query("SELECT count(*) as total FROM User $where");

//上面这条语句查询出来的结果是二维数组

//总页码为           $maxtotal = $total[ 0 ][ 'total' ];

//设置展示的条数

$num = 5;

  //计算出最大页码(总条数除以分页数)     ceil 为 进一取整(如  2/3  时 结果是 1.5  则最大页码是 2);

$maxPage = ceil($maxtotal  /  $num);

//获取页码

$p = empty( I('get.p') ) ? '1' : I('get.p');

//设定开始值

$start = ($p -1) * $num;    

             /*由于limit(n,m) 意思为读取 从第n 条数据开始读取  到 只取m条

               第一页是 limit( (1-1),m);   意思是从第0条开始读取 m条 

               第二页 limit( (2-1) ,m );          意思是从第 1 * m 条读取 m条*/

 //然后判断传的页数是否正常

$p =max('1',$p);

$p = min($maxPage,$p);

  //执行原生的查询语句  ,拼接上查询语句,如果没有条件时$where 是空的所以不用担心查询语句出错

M()->query("SELECT * FROM User $where LIMIT $start,$num");



        

 

    

 

 

 

 

 

 

 

转载于:https://my.oschina.net/18y/blog/783752

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值