问答详情
源自:1-1 PHP+MySQL分页原理实现课程介绍

求源码 最好有注释

老师 源码在哪里下载

提问者:肖薇 2017-07-10 00:17

个回答

  • qq_演艺人生_0
    2017-07-21 12:24:25

    class Page{
    	private $total;     // 总共有多少条记录
    	private $pagenum;   // 分成多少页
    	private $pagesize;  // 每页多少条记录
    	private $current;   // 当前所在的页数
    	private $url;       // url
    	private $first;	    // 首页
    	private $last;	    // 末页
    	private $prev;	    // 上一页
    	private $next;	    // 下一页
    	/**
    	 * 构造函数
    	 * @access public
    	 * @param $total number 总的记录数
    	 * @param $pagesize number 每页的记录数
    	 * @param $current number 当前所在页
    	 * @param $script string 当前请求的脚本名称,默认为空
    	 * @param $params array url所携带的参数,默认为空
    	 */
    	public function __construct($total,$pagesize,$current,$script = '',$params = array()){
    		$this->total = $total;
    		$this->pagesize = $pagesize;
    		$this->pagenum = $this->getNum();
    		$this->current = $current;
    		
    		//设置url
    		$p = array();
    		foreach ($params as $k => $v) {
    			$p[] = "$k=$v";
    		}
    		$this->url = $script . '?' . implode('&', $p) . '&page=';
    		$this->first = $this->getFirst();
    		$this->last = $this->getLast();
    		$this->prev = $this->getPrev();
    		$this->next = $this->getNext();
    	}
    	private function getNum(){
    		return ceil($this->total / $this->pagesize);
    	}
    	private function getFirst(){
    		if ($this->current == 1) {
    			return '[首页]';
    		} else {
    			return "<a href='{$this->url}1'>[首页]<a/>";
    		}
    		
    	}
    	private function getLast(){
    		if ($this->current == $this->pagenum) {
    			return  '末页';
    		} else {
    			return  "<a href='{$this->url}{$this->pagenum}'>[末页]</a>";
    		}
    		
    	}
    	private function getPrev(){
    		if ($this->current == 1) {
    			return  '[上一页]';
    		} else {
    			return  "<a href='{$this->url}".($this->current - 1)."'>[上一页]</a>";
    		}
    		
    	}
    	private function getNext(){
    		if ($this->current == $this->pagenum ){
    			return  '[下一页]';
    		} else {
    			return  "<a href='{$this->url}".($this->current+1)."'>[下一页]</a>";
    		}
    		
    	}
    	/**
    	 * getPage方法,得到分页信息
    	 * @access public
    	 * @return string 分页信息字符串
    	 */
    	public function showPage(){
    		if ($this->pagenum > 1){
    			return "共有 {$this->total} 条记录,每页显示 {$this->pagesize} 条记录, 当前为 {$this->current}/{$this->pagenum} {$this->first} {$this->prev} {$this->next} {$this->last}";
    		}else{
    			return "共有 {$this->total} 条记录";
    		}
    		
    	}
    }
    
    //使用:配合mysql操作类一起使用
    /*
    $total = $db->total();
    $pagesize = 3;
    $current = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
    $offset = ($current - 1) * $pagesize;
    $rows = $db->getAll("SELECT * FROM category limit $offset,$pagesize" );
    $page = new page($total,$pagesize,$current,'test.php',array('goods_id'=>2));
    $str = "<table width='400' border='1'>";
    $str .= "<tr><th>编号</th><th>名称</th><th>父编号</th></tr>";
    foreach ($rows as $v) {
    	$str .= '<tr>';
    	$str .= "<td>{$v['cat_id']}</td>";
    	$str .= "<td>{$v['cat_name']}</td>";
    	$str .= "<td>{$v['parent_id']}</td>";
    	$str .= '</tr>';
    }
    $str .= "</table>";
    echo $str;
    echo $page->showPage();
    */

    希望能帮助到你。