码迷,mamicode.com
首页 > Web开发 > 详细

thinkphp 分页

时间:2015-08-17 11:35:21      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
<?php
/**
 * InterFaceService
 * @author yhd
 */
namespace Red;
interface ServiceInterFace {
    /**
     * 实例化当前类
     */
    public static function getInstance();
}
interface ServiceInterFace
技术分享
<?php
/**
 * 静态服务类
 * StaticService
 * @author yhd
 */
namespace Red;
class StaticService{
    protected static $data;

    /**
     * 设置静态数据
     * @param string $key key
     * @param mixed $data data
     * @return mixed
     */
    public static function setData($key,$data){
        self::$data[$key] = $data;
        return self::$data[$key];
    }
    
    /**
     * 通过引用使用静态数据
     * @param string $key key
     * @return mixed
     */
    public static function & getData($key){
        if(!isset(self::$data[$key])){
            self::$data[$key] = null;
        }
        return self::$data[$key];
    }
    
    /**
     * 缓存实例化过的对象
     * @param string $name 类名
     * @return 对象
     */
    public static function getInstance($name){
        $key = ‘service_@_‘.$name;
        $model = &self::getData($key);
        if($model === null){
            $model = new $name();
        }
        return $model;
    }
    
    /**
     * html转义过滤
     * @param mixed $input 输入
     * @return mixed
     */
    public static function htmlFilter($input){
        if(is_array($input)) {
            foreach($input as & $row) {
                $row = self::htmlFilter($row);
            }
        } else {
            if(!get_magic_quotes_gpc()) {
                $input = addslashes($input);
            } 
            $input = htmlspecialchars($input);
        }
        return $input;
    }
}
StaticService 静态服务类
技术分享
<?php
/** 
* 抽象商品管理类
* AbProduct.class.php
* @lastmodify 2015-8-17
* @author yhd
*/
namespace Red\Product;
abstract class AbProduct{
    public $errorNum;
    /*
    *返回错误信息
    *@param $errorNum  错误代码
    */
    public function GetStatus(){
        $errorNum = $this->errorNum;
        switch($errorNum){
                case 0:
                        $data[‘status‘]  = 0;
                        $data[‘message‘] = ‘收藏成功‘;
                        break;
                case 1:
                        $data[‘status‘]  = 1;
                        $data[‘message‘] = ‘收藏失败‘;
                        break;
                case 2:
                        $data[‘status‘]  = 2;
                        $data[‘message‘] =  ‘已收藏‘;
                        break;
                case 3:
                        $data[‘status‘]  = 3;
                        $data[‘message‘] =  ‘未登陆‘;
                        break;
                case 4:
                        $data[‘status‘]  = 4;
                        $data[‘message‘] =  ‘缺少参数‘;
                        break;
                default:
                        $data[‘status‘]  = 200;
                        $data[‘message‘] =  ‘未知错误‘;
        }
        return $data;
    }
    
abstract AbProduct  抽象商品管理类
技术分享
<?php
/** 
* 会员模型
* MemberModel.class.php
* @copyright (C) 2014-2015 red
* @license http://www.red.com/
* @lastmodify 2015-8-17
* @author yhd
*/
namespace Red\Passport\Models;
use Think\Model;
use Red\ServiceInterFace;
use Red\StaticService;
class MemberModel extends Model implements ServiceInterFace{
    protected $userId;
    protected $error;
    protected function _initialize(){
        $this->userId = getUserInfo(0);
    }
    
     /**
     * 实例化本类
     * @return MemberModel
     */
    public static function getInstance() {
        return StaticService::getInstance(__CLASS__);
    }
    
    
     /**
     *    获取登录用户信息
     *  @param  string   $data  查询条件
      * @return array    
     */
    public function getUser($data = ‘‘) {
        if(empty($data)){
            return $this->where("id=".$this->userId)->find();
        }else{
            return $this->field($data)->where("id=".$this->userId)->find();
        }
           
    }
    
    /**
     *  修改用户信息
     *  @param array $data
     *  @param array $where 查询条件
     */
    public function editUserInfo($data, $where = ‘‘) {
        if( $this->_before_check($data) === false ){
            return $this->error[‘msg‘];
        }
        
        if(!empty($where) && is_array($where)){
            $condition[ $where[0] ] = array(‘eq‘, $where[1]); 
            return $this->where($condition)->save($data);
        }
        
        return $this->where("id=".$this->userId)->save($data);
    }
    
   
    /**
     * 获取用户信息
     * @param string $data 用户名
     * return array()
     */
    public function checkUserInfo($str, $field = ‘‘){
        //注册类型
        $info = CheckType($str);
        $condition[$info] = array(‘eq‘,$str);
        
        if(!empty($field)){
            return $this->field($field)->where($condition)->find();
        }
        
        return $this->where($condition)->find();
    }
    
    /**
     * 获取用户信息
     * @param array $data 用户名
     * return array()
     */
    public function getAccount($data){
        //注册类型
        $info = CheckType($data);
        $condition[‘id‘] = array(‘eq‘,$this->userId);
        $condition[$info] = array(‘eq‘,$data);
        return $this->where($condition)->find();
    }
    
    
    /**
     * 修改用户密码
     * @param array $data[‘id‘]用户ID
     * @param $data[‘passWord‘]用户密码
     * return true or false
     */
    public  function upUserPassById($data){
        $condition[‘id‘] = array(‘eq‘,$data[‘id‘]);                                                                        
        $status = $this->where($condition)->save(array("password"=>md5($data[‘password‘])));
        if($status){
                return TRUE;
        }else {
                return FALSE;
        }
    }
    
    
    /**
     * 校验用户的账号或者密码是否正确
     * @param $data[‘username‘] 用户名
     * @param $data[‘password‘] 密码
     * return true or false
     */
    public function checkUserPasswd($data= array()){
            $type = CheckType($data[‘username‘]);
            $condition[$type] = array(‘eq‘,$data[‘username‘]);
            $condition[‘password‘] = array(‘eq‘,md5($data[‘password‘]));
             return $this->where($condition)->find();
    }
    
    /**
     *  网页登录校验token
     *  @param token string 
     *  return bool
     */
    public function checkToken($token){
           return $this->autoCheckToken($token);
    }
    /**
     * 后台封号/解封
     * param int $user_id
     */
    public function changeStatus($data){
        if($this->save($data)){
            return true;
        }else{
            return false;
        }
    }
    
    
    protected function _before_check(&$data){
        if(isset($data[‘username‘]) && empty($data[‘username‘])){
            $this->error[‘msg‘] = ‘请输入用户名‘;
            return false;
        }
        if(isset($data[‘nickname‘]) && empty($data[‘nickname‘])){
            $this->error[‘msg‘] = ‘请输入昵称‘;
            return false;
        }  
        if(isset($data[‘realname‘]) && empty($data[‘realname‘])){
            $this->error[‘msg‘] = ‘请输入真名‘;
            return false;
        }
        if(isset($data[‘email‘]) && empty($data[‘email‘])){
            $this->error[‘msg‘] = ‘请输入邮箱‘;
            return false;
        }
        if(isset($data[‘mobile‘]) && empty($data[‘mobile‘])){
            $this->error[‘msg‘] = ‘请输入手机号码‘;
            return false;
        }
        if(isset($data[‘password‘]) && empty($data[‘password‘])){
            $this->error[‘msg‘] = ‘请输入密码‘;
            return false;
        }
        if(isset($data[‘headimg‘]) && empty($data[‘headimg‘])){
            $this->error[‘msg‘] = ‘请上传头像‘;
            return false;
        }
        return true;
    }



}   
MemberModel 会员模型
技术分享
<?php
/** 
* 商品模型
* ProductModel.class.php
* @lastmodify 2015-8-17
* @author yhd
*/
namespace Red\Product\Models;
use Think\Model;
use Red\ServiceInterFace;
use Red\StaticService;
class ProductModel extends Model implements ServiceInterFace{
    /**
     * 实例化本类
     * @return ProductModel
     */
    public static function getInstance() {
        return StaticService::getInstance(__CLASS__);
    }
    
    /**
     * 单个商品
     * @param string $id 
     * @param integer $status  状态 1:有效 2:无效
     * @param integer $onsale  是否上架 1:是  2:否
     * @return array 一维数组
     */
    public function getProOne($id, $status = 1 , $onsale = 1){   
        $condition[‘onsale‘] = array(‘eq‘, $onsale);  //是否上架
        $condition[‘status‘] = array(‘eq‘, $status);  //状态
        $condition[‘id‘] = array(‘eq‘,$id);
        return $this->where($condition)->find();
    }
    
    /**
     * 商品列表
     * @param string $limit 查询条数
     * @param array $data 查询条件
     * @return array 二维数组
     */
    public function getProList($data = ‘‘){
        
        $condition[‘onsale‘] = array(‘eq‘, $data[‘onsale‘]);  //是否上架
        $condition[‘status‘] = array(‘eq‘, $data[‘status‘]);  //状态
        $condition[‘type‘] = array(‘eq‘, $data[‘type‘]);   //分类
        
        if(isset($data[‘limit‘]) && isset($data[‘order‘]) ){
            $return =$this->where($condition)->limit($data[‘limit‘])->order($data[‘order‘])->select();
        }else{
            $return =$this->where($condition)->select();
        }
        
        return $return;
    }
    
    /**
     * 添加商品
     * @param array $data
     * @return int  
     */
    public function addProduct($data){
        return $this->add($data);
    }
    
    /**
     * 删除商品
     * 
     */
    public function delProduct($id){
        $condition[‘id‘] = array(‘eq‘, $id);
        return $this->where($condition)->delete();
    }
    
    /**
     * 修改商品
     * @param string|int $id
     * @param array $data
     * @return 
     */
    public function editProdcut($id, $data){
        $condition[‘id‘] = array(‘eq‘, $id);
        return $this->where($condition)->save($data);
    }
    public function getProductInfo($product){
        if(empty($product) || !isset($product[‘product_id‘])){
            return array();
        }
        $info = $this->getProOne($product[‘product_id‘]);
        $product[‘name‘] = $info[‘name‘];
        $product[‘store_id‘] = $info[‘store_id‘];
        $product[‘price‘] = $info[‘price‘];
        $product[‘m_price‘] = $info[‘m_price‘];
        return $product;
    }
    


}  
ProductModel 商品模型
技术分享
<?php
  namespace User\Controller;
  use Red\Product\ProductManage;
  class FavoriteController extends AuthController {

  public function index($page=1){
    $limit=1;
    $list = ProductManage::getInstance()->getCollectList($page,$limit);
    $showpage = create_pager_html($list[‘total‘],$page,$limit);
    $this->assign(get_defined_vars());
    $this->display();
  }
  public function cancelCollect(){
    $ids = field(‘ids‘);
    $return = ProductManage::getInstance()->cancelProductCollect($ids);
    exit(json_encode($return));
  }

}
ProductManage 商品管理类
技术分享
<?php

/**
 * 分页
 * @param $total 总条数
 * @param $page 第几页
 * @param $perpage 每页条数
 * @param $url  链接地址
 * @param $maxpage 最大页码
 * @return string 最多页数
*/
function create_pager_html($total, $page = 1, $perpage = 20, $url = ‘‘, $maxpage = null) {
    $totalcount = $total;
    if (empty($url) || !is_string($url)) {
        $url = array();
        foreach ($_GET as $k => $v) {
            if ($k != ‘page‘) {
                $url[] = urlencode($k) . ‘=‘ . urlencode($v);
            }
        }
        $url[] = ‘page={page}‘;
        $url = ‘?‘ . implode(‘&‘, $url);
    }
    if ($total <= $perpage)
        return ‘‘;
    $total = ceil($total / $perpage);
    $pagecount = $total;
    $total = ($maxpage && $total > $maxpage) ? $maxpage : $total;
    $page = intval($page);
    if ($page < 1 || $page > $total)
        $page = 1;
        $pages = ‘<div class="pages"><a href="‘ . str_replace(‘{page}‘, $page - 1 <= 0 ? 1 : $page - 1, $url) . ‘" title="上一页"  class="page_start">上一页</a>‘;
    if ($page > 4 && $page <= $total - 4) {
        $mini = $page - 3;
        $maxi = $page + 2;
    } elseif ($page <= 4) {
        $mini = 2;
        $maxi = $total - 2 < 7 ? $total - 2 : 7;
    } elseif ($page > $total - 4) {
        $mini = $total - 7 < 3 ? 2 : $total - 7;
        $maxi = $total - 2;
    }
    for ($i = 1; $i <= $total; $i++) {
        if ($i != $page) {
           $pages .= ‘<a class="page-num" href="‘ . str_replace(‘{page}‘, $i, $url) . ‘">‘ . $i . ‘</a>‘;
        } else {
            $pages .= ‘<span class="page_cur">‘ . $i . ‘</span>‘;
        }
        if ($maxi && $i >= $maxi) {
            $i = $total - 2;
            $maxi = 0;
        }
        if (($i == 2 or $total - 2 == $i) && $total > 10) {
            $pages .= ‘‘;
        }
        if ($mini && $i >= 2) {
            $i = $mini;
            $mini = 0;
        }
    }
    $pages .= ‘<a href="‘ . str_replace(‘{page}‘, $page + 1 >= $total ? $total : $page + 1, $url) . ‘" title="下一页" class="page_next">下一页</a><span class="pageOp"><span class="sum">共‘ . $totalcount .
            ‘条 </span><input type="text" class="pages_inp" id="pageno" value="‘ . $page . ‘" onkeydown="if(event.keyCode==13 &amp;&amp; this.value) {window.location.href=\‘‘ . $url . ‘\‘.replace(/\{page\}/, this.value);return false;}"><span class="page-sum">/ ‘ .
            $total . ‘页 </span><input type="button" class="pages_btn" value="GO" onclick="if(document.getElementById(\‘pageno\‘).value>0)window.location.href=\‘‘ . $url . ‘\‘.replace(/\{page\}/, document.getElementById(\‘pageno\‘).value);"></span></div>‘;
    
    return $pages;
}
functions.php 分页函数

 

thinkphp 分页

标签:

原文地址:http://www.cnblogs.com/yhdsir/p/4735812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!