您的位置:首页 > 编程语言 > PHP开发

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

2017-01-19 12:17 567 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐