model 类的进化版
<?php
/**************************
* 获取信息
*
* @param object
* @date 2016/02/17
* @write zss
* @return array 从数据库查询的信息
****************************/
private function model ($model='', $pages='', $field='', $where='', $order=''){
//转换页数为整型
$pages = (int)$pages
//实例化
$model = M($model);
//组合字段
//$field = array('字段1','字段2','字段3');
//计算数量
if(is_array($field)){
$count_field = count($field);
//当字段大于1
if($count_field >1){
foreach ($field as $k1 => $v1){
$fields .= $v1.',';
}
//截取最后的逗号
$fields = substr($fields,0,-1);
//等于1
}else if($count_field == 1){
$fields = $field[0];
}else{
//没有设置字段时
$fields = '*';
}
}else{
$fields = $field;
}
//$where = array('条件字段1','条件值1','条件字段2','条件值2','条件字段3');
if(is_array($where)){
//组合条件--计算数量
$count_where = count($where);
//当条件少于1个
if($count_where < 1){
$wheres = '';
//当条件大于1个
}else if($count_where >= 2){
//取余,舍去多余的条件
if($count_where % 2 == 1){
unset($where[$count_where - 1]);
}
$i = 0;
foreach ($where as $k2 => $v2){
$i ++;
//当条件少于1
if($i == 1){
$v2="$v2=";
}
if($i == 2){
$v2="'$v2' AND ";
$i = 0;
}
$wherez[] = $v2;
}
//连接条件
$j = 0;
foreach ($wherez as $k3 => $v3){
$j ++;
$wheres .= $v3;
}
//删掉最后的 AND
$wheres = substr($wheres,0,-5);
}
}else{
$wheres = $where;
}
//组合排序
//$order = array('排序1','排序2');
if(is_array($order)){
$h = 0;
//计算数组数量
$count_order = count($order);
if($count_order > 1){
foreach ($order as $k4 => $v4){
$orders .= $v4.',';
}
$orders = substr($fields,0,-1);
}else if($count_order == 1){
$orders = $order[0];
}else{
$orders = '';
}
}else{
$orders = $order;
}
// 获取总数
$count_sum = $model->where($wheres)->count();
//默认为10,
if($pages > 1){
// 实例化分页类
$Page = getpage($count_sum,$pages);
// 分页显示输出
$show = $Page->show();
}
//按照上面的条件进行查询
$data = $model
-> where($wheres)
-> field($fields)
-> order($orders)
-> limit($Page->firstRow.','.$Page->listRows)
-> select();
$datas['data'] = $data;
$datas['page'] = $show;
$datas['count'] = $count_sum;
return $datas;
}
/**
* 基础分页的相同代码封装,使前台的代码更少
* @param int $count 要分页的总记录数
* @param int $pagesize 每页查询条数
* @param object $Page
* @return \Think\Page 实例化的Page类
*/
function getpage($count, $pagesize = 10) {
$Page = new \Think\Page($count,$pagesize);
$Page->setConfig('header',
'
<span class="scott"><span class="current">%LINK_PAGE%</span><span class="current">%END%</span><span class="cc">共<b>%TOTAL_PAGE%</b>页</span><span class="cc" style="color:#708090">转到</span>
<form action="" method="get"><input type="text" name="p" class="ca"><input type="submit" value="GO" class="cs"></form>
</span>
');
$Page->setConfig('theme',' %HEADER%');
return $Page;
}