ThinkPHP使用getlist方法实现数据搜索功能示例

5年以前  |  阅读数:994 次  |  编程语言:PHP 

本文实例讲述了ThinkPHP使用getlist方法实现数据搜索功能。分享给大家供大家参考,具体如下:

自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中;

HTML之中:


    <form action="" method="get">
        <table class="account_table" width="100%" cellpadding="0" cellspacing="0">
          <tr>
            <td style="text-align:right">订单号:</td>
            <td>
              <input id="Orderid" name="order_sn" class="inp_wid3" type="text" value="{$_GET['order_sn']}"/>
            </td>
            <td style="text-align:right">
              下单日期:
            </td>
            <td colspan="5">
              <input type="text" class="inp_wid2" id="BeginTime" name="begintime" value="{$_GET['begintime']}" />
              至
              <input type="text" class="inp_wid2" id="EndTime" name="endtime" value="{$_GET['endtime']}" />
               交易完成日期
              <input type="text" class="inp_wid2" id="txtFinishedBeginTime" name="finishbegintime" value="{$_GET['finishbegintime']}" />
              至
              <input type="text" class="inp_wid2" id="txtFinishedEndTime" name="finishendtime" value="{$_GET['finishendtime']}" />
               订单金额:
              <input type="text" class="inp_wid2" id="txtMoneyMin" name="count_price_min" value="{$_GET['count_price_min']}"/>
              至
              <input type="text" class="inp_wid2" id="txtMoneyMax" name="count_price_max" value="{$_GET['count_price_max']}" />
            </td>
          </tr>
          <tr>
            <td style="text-align:right; width:80px">采购商名称:</td>
            <td style="width:140px">
              <input id="SupermarketName" name="user_nick_name" class="inp_wid3" type="text" value="{$_GET['user_nick_name']}" />
            </td>
            <td style="text-align:right; width:80px">采购商账号:</td>
            <td style="width:140px">
              <input id="SupermarketZh" name="user_name" class="inp_wid3" type="text" value="{$_GET['user_name']}" />
            </td>
          </tr>
          <tr>
            <td colspan="2">
              <input class="search_btn1" type="submit" value="搜索" id="Search" />
              </td>
          </tr>
        </table>
    </form>

看到没GET方法提交表单,这个是查询条件填入选项;

控制器之中:


    $order_msg=$order->getList();
    $this->assign('info',$order_msg);//这个获取订单的详细信息

Model之中:


    public function getList($pagesize=25){
         $tableName = $this->getTableName();
       $where = $tableName.'.service_id = '.$_SESSION['service_site']['service_id'];
       if(!empty($_GET['order_sn'])){//查询订单号
           $where.= " and $tableName.`order_sn` like '%".$_GET['order_sn']."%'";
         }
       if(!empty($_GET['count_price_min'])){//查询订单最小金额
           $where.= " and $tableName.count_price >=".$_GET['count_price_min']."";
         }
       if(!empty($_GET['begintime'])){//下单开始日期搜索
        $_GET['begintime']=strtotime($_GET['begintime']);//将日期转为时间戳
        $where.= " and $tableName.add_time >=".$_GET['begintime']."";
        $_GET['begintime']=date('Y-m-d',$_GET['begintime']);//将日期转为时间戳
       }
       if(!empty($_GET['endtime'])){//下单结束日期搜索
         $_GET['endtime']=strtotime($_GET['endtime']);//将日期转为时间戳
        $where.= " and $tableName.add_time <=".$_GET['endtime']."";
        $_GET['endtime']=date('Y-m-d',$_GET['endtime']);//将时间戳转换成日期,方便刷新页面后前台显示
       }
       if(!empty($_GET['finishbegintime'])){//交易完成开始日期搜索
        $_GET['finishbegintime']=strtotime($_GET['finishbegintime']);//将日期转为时间戳
        $where.= " and $tableName.ok_time >=".$_GET['finishbegintime']."";
        $_GET['finishbegintime']=date('Y-m-d',$_GET['finishbegintime']);//将日期转为时间戳
       }
       if(!empty($_GET['finishendtime'])){//交易完成结束日期搜索
         $_GET['finishendtime']=strtotime($_GET['finishendtime']);//将日期转为时间戳
        $where.= " and $tableName.ok_time <=".$_GET['finishendtime']."";
        $_GET['finishendtime']=date('Y-m-d',$_GET['finishendtime']);//将时间戳转换成日期,方便刷新页面后前台显示
       }
       if(!empty($_GET['send'])){//查询已发货预警订单,发货时间距离此刻超过五天
        $where.= " and $tableName.send_time < '".(time()-60*60*24*5)."'";
       }
       if(!empty($_GET['doingorder'])){//查询处理中的订单
        $where.= " and $tableName.status in (0,1)";
       }
       if(!empty($_GET['warningorder'])){//查询预警的订单:已经付款且时间超过24小时未发货
        $where.= " and $tableName.pay_time < '".(time()-60*60*24)."'";
       }
       if(!empty($_GET['warningorder'])){//查询预警的订单:已经付款且时间超过24小时未发货
        $where.= " and $tableName.is_pay = 1 ";
       }
       if(!empty($_GET['warningorder'])){//查询预警的订单:已经付款且时间超过24小时未发货
       $where.= " and $tableName.status in (0,1)";
       }
       if(!empty($_GET['count_price_max'])){//查询订单最大金额
        $where.= " and $tableName.count_price <=".$_GET['count_price_max']."";
       }
       if(!empty($_GET['user_nick_name'])){//查询采购商名称
        $where.= " and fab_user.nick_name like '".$_GET['user_nick_name']."%'";
       }
       if(!empty($_GET['user_name'])){//查询采购商账号
        $where.= " and fab_user.user_name like '".$_GET['user_name']."%'";
       }
       if(!empty($_GET['supplier_nick_name'])){//查询供应商商名称
        $where.= " and fab_supplier.nick_name like '".$_GET['supplier_nick_name']."%'";
       }
       if(!empty($_GET['supplier_name'])){//查询供应商账号
        $where.= " and fab_supplier.supplier_name like '".$_GET['supplier_name']."%'";
       }
       if($_GET['history'] == 1){
         $where .= " and {$tableName}.status in (2,3,4) ";
       }
       if(($_GET['pay_type'])!=""&&($_GET['pay_type'])!=-1){//查询支付方式
        $where.= " and fab_order_info.pay_type = ".$_GET['pay_type']."";
       }
       if(($_GET['status'])!=""&&($_GET['status'])!=-1){//查询订单状态
        $where.= " and fab_order_info.status = ".$_GET['status']."";
       }
         if(!empty($_GET['stime']) && !empty($_GET['etime'])){
           $stime = strtotime($_GET['stime']);
           $etime = strtotime($_GET['etime']) + 24*60*60;
           $where.= " and ($tableName.`inputtime` between '$stime' and '$etime')";
         }
         $count = $this->where($where)->count();
         $this->countNum = $count;
         $Page = new \Think\Page($count,$pagesize);
         $this->page = $Page->show();
         $limit = $Page->firstRow.','.$Page->listRows;
        $sql="select $tableName.*,fab_supplier.nick_name as supplier_nick_name,fab_user.nick_name as user_nick_name
        from ($tableName left join fab_supplier on fab_order_info.supplier_id=fab_supplier.supplier_id)
        left join fab_user on fab_order_info.user_id=fab_user.user_id where $where order by $tableName.`order_id` desc limit $limit";
        $sqls="select sum(fab_order_info.count_price) as order_price,count(fab_order_info.count_price) as order_count
        from $tableName where $where order by $tableName.`order_id` desc limit $limit";
        $this->sql_msg=$this->query($sqls);
        return $this->query($sql);//订单详细信息
    }

你只需要留意那个GET数据获取,然后进行拼接SQL语句;你为何总是拼接错误呢!!!


    <?php
    namespace Admin\Model;
    use Think\Model;
    class KuaidicompanyModel extends Model {
      private $page = "";
      public function getList($pagesize=25){
        $where = '1';
        $tableName = $this->getTableName();
        $count = $this->where($where)->count();
        $Page = new \Think\Page($count,$pagesize);
        $this->page = $Page->show();
        $limit = $Page->firstRow.','.$Page->listRows;
        return $this->query("select * from $tableName where $where order by $tableName.`id` asc limit $limit ");
      }
      public function getPage(){
        return $this->page;
      }
    }

精简通用版getlist,实用于分页。


    <?php
    namespace Admin\Model;
    use Think\Model;
    class KuaidicompanyModel extends Model {
      private $page = "";
      public function getList($pagesize=25){
        $where = '1';
        $tableName = $this->getTableName();
        $count = $this->where($where)->count();
        $Page = new \Think\Page($count,$pagesize);
        $this->page = $Page->show();
        $limit = $Page->firstRow.','.$Page->listRows;
        return $this->query("select * from $tableName where $where order by $tableName.`id` asc limit $limit ");
      }
      public function getPage(){
        return $this->page;
      }
    }

精简版MODEL用于数据自动验证

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例