phpcmsv9多表联合查询分页功能实现 可以自定义查询

phpcms v9里面自带的listinfo分页函数蛮好用的,可惜啊。不支持多表查询并分页。

看了一下前台模板层支持get标签,支持多表查询,支持分页。刚好可以把这个功能搬到后台来使用。

我们现在对get_model.class.php进行改造使他能支持多表查询并分页,分享给大家

一、打开phpcms\phpcms\model下 get_model.class.php
在32行添加 方法

 //自定义分页查询{支持多表}
    public function multi_listinfo($where = '', $page = 1, $pagesize = 12, $key='', $setpages = 10,$urlrule = '',$array = array()) {
            $sql = preg_replace('/select([^from].*)from/i', "SELECT COUNT(*) as count FROM ", $where);
           // echo $sql;
            $this->sql_query($sql);
            $c = $this->fetch_next();
            $this->number = $c['count'];
            $page = max(intval($page), 1);
            $offset = $pagesize*($page-1);
            $this->pages = pages($this->number, $page, $pagesize, $urlrule, $array, $setpages); //分页

            $r = $this->sql_query($where.' LIMIT '.$offset.','.$pagesize);
            while(($s = $this->fetch_next()) != false){
                $data[] = $s;
            }
            return $data;
    }

二、使用方法

$keyword = trim($_GET['keyword']);
$sql = "select e.*,d.* from phpcms_exhibit as e,phpcms_exhibit_data as d where e.id = d.id and e.catid in $catid ";
if($keyword){
    $where = "and (e.title like '%$keyword%' or d.expcon like '%$keyword%') ";
}
$sql= $sql.$where." order by e.id desc"; 
$search = pc_base::load_model('get_model');
$page = intval($_GET['page'])?intval($_GET['page']) :'1';
$infos = $search->multi_listinfo($sql,$page); //返回查询结果
$pages = $search->pages;//返回分页

三、模板调用


{loop $infos $r}
<li>
    <div class="pic"><img src="{thumb($r[thumb], 184, 138)}" alt=""></div>
    <div class="cont">
    <a href="{$r[url]}" target="_blank" title="{$r[title]}"><h2 class="tit">{$r[title]}</h2></a>
    <p class="dw"><strong>主办单位:</strong><span>{$r[expzbdw]}</span></p>
    <p class="date"><strong>展会时间:</strong><span>{$r[begintime]}至{$r[endtime]}</span></p>
    <p class="add"><strong>举办展馆:</strong><span>{get_linkage($r[expname],3387,' >> ',0)}</span></p>
    </div>
</li>
{/loop}

    <!--分页-->
<div class="pages">{$pages}</div>  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值