做项目过程中对于搜索框的实现

1、在后台的时候,做多条件或单条件搜索的时候,一定要用get方法,因为涉及到分页问题

    具体实现:

     前端html的form表单页面:

           <div class="form-group">
         <form action="/dswiliu/admin.php" method="get"> //一定要用get方法,涉及到分页问题,如果post,点击下一页就不好使
            <div class="col-md-offset-6 col-sm-2">
                <select class="form-control" name="handle">
                    <option value="">状态</option>
                    <option value="0"
                    <eq name="search.handle" value="0">selected="selected"</eq>
                    >未处理</option>
                    <option value="2"
                    <eq name="search.handle" value="2">selected="selected"</eq>
                    >已处理</option>
                    <option value="-1"
                    <eq name="search.handle" value="-1">selected="selected"</eq>
                    >已提交</option>
                    <option value="1"
                    <eq name="search.handle" value="1">selected="selected"</eq>
                    >已结款</option>
                </select>
            </div>
            <div class="col-sm-3">
                <input type="text" name="plateNo" class="form-control" placeholder="请输入车号"
                       value="{$search.plateNo}">//回调显示的数据
            </div>
            <input type="hidden" name="c" value="LogisticsOrder">
            <input type="hidden" name="a" value="index">
            <div class="col-sm-1">
                <button id="button-search" type="submit" class="btn btn-sm btn-info col-sm-12">搜索</button>
            </div>
        </form>
    </div> 

 后台控制器中的写法:

     $data = array();//$data是查询的条件,组装成数组

        $search = array();//$search是查询的回调的数据
        if(isset($_REQUEST['handle']) && $_REQUEST['handle']!=""){
            $data['handle'] = intval($_REQUEST['handle']);//
            $search['handle'] = $data['handle'];
        if($data['handle'] == 0){
            $data['handleBusiness'] = $data['handle'];
        }
        if($data['handle'] == 2){
            $data['handle'] = 0;
            $data['handleBusiness'] = 1;
        }
        }
        if(isset($_REQUEST['plateNo']) && $_REQUEST['plateNo']!=""){
            $data['plateNo'] = array('LIKE','%'.$_REQUEST['plateNo'].'%');//模糊查询
            $search['plateNo'] = $_REQUEST['plateNo'];
        }
        $adminUser = session('adminUser');
        if(empty($data['handle'])  && $data['handle'] !=0 ){
            if($adminUser['admin_type'] == 1){
                $data['handle'] = array('in','0,-1,1');//in操作,在某个范围里的
            }elseif ($adminUser['admin_type'] == 2){
                $data['handle'] = array('NEQ',0);//不等于操作
            }
        }
        $this->assign('adminUser', $adminUser);
        $this->assign('search',$search);

2、对于前台的单搜索框,搜索多个字段的

    //or操作

        if ($_GET['title']) {
            // $title['release']= array('LIKE','%'.$_GET['title'].'%');
            $title['loadingAddr']= array('LIKE','%'.$_GET['title'].'%');
            $title['unloadingAddr']= array('LIKE','%'.$_GET['title'].'%');
            $title['goodsName']= array('LIKE','%'.$_GET['title'].'%');
            $title['_logic'] = 'or';
            $data['_complex'] = $title;
        }

1 Thinkphp 复合 where 的查询方法:or+and操作
例如:
$where['name']  = array('like','%thinkphp%');
$where['title']  = array('like','%thinkphp%');
$where['_logic'] = 'or';//用or连接
$map['_complex'] = $where;//复合起来
$map['id']  = array('gt',1);//查询的条件
查询条件是
( id > 1) AND ( ( name like '%thinkphp%') OR ( title like '%thinkphp%'))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值