PHP世纪论坛

 找回密码
 立即注册
搜索
查看: 199|回复: 0

thinkphp 搜索加分页 (搜索时点击下一页 数据失效问题)

[复制链接]

12

主题

12

帖子

108

积分

版主

Rank: 7Rank: 7Rank: 7

积分
108
发表于 2016-9-23 18:52:40 | 显示全部楼层 |阅读模式
html 代码

<form id="searchForm" name="searchform" class="well form-search" action="" method="POST" onSubmit="check();">
    <div class="search">
        <h1>VIP用户信息 </h1>
        <div class="opt">
            <a class="btn btn-info" href="{:U('Home/Vipone/vipadd')}">添加</a>
        </div>
        <select style="width:90px" name="brand_id">
            <if condition="$data['brand_id'] eq 姓名">
                <option value="姓名" selected="selected">姓名</option>
                <option value="电话">电话</option>
                <option value="角色名称">角色名称</option>
                <elseif condition="$data['brand_id'] eq 电话"/>
                <option value="姓名">姓名</option>
                <option value="电话" selected="selected">电话</option>
                <option value="角色名称">角色名称</option>
                <else/>
                <option value="姓名">姓名</option>
                <option value="电话">电话</option>
                <option value="角色名称" selected="selected">角色名称</option>
            </if>
        </select>
        <if condition="$data['brand_id'] eq 姓名">
            <input type="text" value="{$data['content']}" name="content">
            <elseif condition="$brand_id eq 电话"/>
            <input type="text" value="{$data['content']}" name="content">
            <else/>
            <input type="text" value="{$data['content']}" name="content">
        </if>
        <input type="submit" class="btn" value="搜索" onclick="checkaction(1);"/>
        <input type="submit" class="btn" value="导出" onclick="checkaction(0);"/>
        <a href="{:U('Vipone/import')}" target="_blank" class="btn">导入</a>
    </div>
</form>

js代码

<script>
    function checkaction(v) {
        if (v == 0) {
            document.searchform.action = "{:U('Home/Vipone/export')}";
        } else {
            document.searchform.action = "{:U('Home/Vipone/index')}";
        }
        searchform.submit();
    }
</script>

php代码
public function index($action = 'index')
{
    header("Content-Type:text/html;charset=utf-8");
    $details = M('details');
    //搜索条件
    //var_dump($_REQUEST);exit;
    $filter['n.status'] = 1;
    $brand_id = $_REQUEST['brand_id'];
    $content = $_REQUEST['content'];
    $data['brand_id'] = $brand_id;
    $data['content'] = $content;
    if ($brand_id == '姓名') {
        $search['n.username'] = $content;
    } else if ($brand_id == '电话') {
        $search['n.mobile'] = $content;
    } else if ($brand_id == '角色名称') {
        $search['c.nickname'] = $content;
    }

    if (isset($search['n.username'])) {
        $map['n.username'] = array('like', "%{$search['n.username']}%");
    }
    if (isset($search['n.mobile'])) {
        $map['n.mobile'] = $search['n.mobile'];
    }
    if (isset($search['c.nickname'])) {
        $map['c.nickname'] = array('like', "%{$search['c.nickname']}%");
    }
    $game = M('game');
    $count = $details->table($details->getTableName() . ' n')->join($game->getTableName() . ' c on c.uid=n.id')->where($map)->count();
    if ($count) {
        $perNum = 1;
        // 导入分页类
        import("ORG.Util.Page");
        $Page = new \Think\Page($count, $perNum, $data);
        $Page->setConfig('prev', "上一页");//上一页
        $Page->setConfig('next', '下一页');//下一页
        $Page->setConfig('first', '首页');//第一页
        $Page->setConfig('last', "末页");//最后一页
        $Page->setConfig('theme', '%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');
        foreach ($map as $key => $val) {
            $Page->parameter[$key] = urlencode($val);//赋值给Page
        }
        $show = $Page->show();
        $this->assign('page', $show);
    }
    $vip_list = $game->table($details->getTableName() . ' n')->join($game->getTableName() . ' c on c.uid=n.id')->where($map)->order('n.id desc')->limit($Page->firstRow . ',' . $Page->listRows)->select();
    if ($action == 'export') {
        if (!$vip_list) {
            $this->error('没有搜索结果,无法导出数据');
        }
        $this->goods_export($vip_list);
    }

    $this->assign('data', $data);
    $this->assign('vip_list', $vip_list);
    //$this->display('goods_list');
    $this->display();
}

解决搜索失效问题
1、修改config.php

'URL_MODEL'   =>0,//修改URL为1
参考地址:
http://document.thinkphp.cn/manual_3_2.html#config_format
2、php后台接收通过$_REQUEST接收(如果是$_POST)
然后组成数组,用来对搜索数据与全部数据的区分;
$brand_id = $_REQUEST['brand_id'];
$content = $_REQUEST['content'];
$data['brand_id'] = $brand_id;
$data['content'] = $content;
3、搜索条件设置
if (isset($search['n.username'])) {
    $map['n.username'] = array('like', "%{$search['n.username']}%");
}
if (isset($search['n.mobile'])) {
    $map['n.mobile'] = $search['n.mobile'];
}
if (isset($search['c.nickname'])) {
    $map['c.nickname'] = array('like', "%{$search['c.nickname']}%");
}

4、把搜索的唯一标示传给Page类;

$Page = new \Think\Page($count, $perNum, $data);

5、给parameter 赋值
foreach ($map as $key => $val) {
    $Page->parameter[$key] = urlencode($val);//赋值给Page
}
$show = $Page->show();

6、把传过来的值在返回给html页面
$this->assign('data', $data);
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|PHP世纪论坛 ( 豫ICP备15004666号-2

GMT+8, 2018-8-17 01:43

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表