php mysql分頁操作

首先建立NewsModle類用於操作數據庫

在該類中有兩個操作第一個獲取 總記錄數

	
	//返回所有記錄數目
	public function getCount($tableName)
	{
		$sql = "select count(*) from {$tableName}";
		
		$result=$this->mysqli->query($sql);
		
		$row = $result->fetch_assoc();
		
		return $row["count(*)"];
		
	}

另外一個是得到分頁數據

//得到分頁
	public function selectLimitPage($pager)
	{
		$tableName = $pager->tablename;
		$offset = (($pager->CurrentPageID)-1)*($pager->PageSize);
		$pageSize = $pager->PageSize;
		
		$sql = "SELECT * FROM {$tableName} LIMIT {$offset},{$pageSize}";
		
		if($result=$this->mysqli->query($sql))
		{
			if($result->num_rows)
			{
				while($row=$result->fetch_assoc())
				$allNews[] = new NewsToUser($row["title"],$row["decription"],$row["pic_url"],$row["artcile_url"]);
				$result->close();
				return $allNews;
			}
			else{
				$result->close();
				$this->printError("沒有獲取到任何記錄");
				return FALSE;
			}
		}
		else{
			$this->printError("數據查詢失敗:".$this->mysqli->error);
			return FALSE;
		}
	}

然後建立一個用於操作分頁數據的page類

<?php

require_once 'NewsModle_class.php';


class Pager
{
	var $tablename;			   //數據來源
	var $PageSize;             //每頁的數量
	var $CurrentPageID = 1;        //當前的頁數
	
	var $db;
	
	var $NextPageID;           //下一頁
	var $PreviousPageID;       //上一頁
	var $numPages;             //總頁數
	var $numItems;             //總記錄數
	var $isFirstPage;          //是否第一頁
	var $isLastPage;           //是否最後一頁
	
	var $pageName;
	
	
	public function __construct($tablename,$PageSize)
	{
		$this->tablename = $tablename;
		
		//每個頁面的
		$this->PageSize = $PageSize;
		
		$this->db = new NewsModle();
		
		//得到條目數目
		$this->numItems = $this->db->getCount($tablename);
		$this->numPages = ceil($this->numItems/$PageSize);
		
		echo $this->numPages;
	}
	
	public function showInfo()
	{
		if(isset($_GET["CurrentPageID"]))
		{
			$this->CurrentPageID = $_GET["CurrentPageID"];
		}	
		
		if($this->CurrentPageID<=1)
		{
			echo "第{$this->CurrentPageID}頁 <a href='{$this->pageName}?CurrentPageID={$this->nex()}'>下一頁</a>";
		}
		else if($this->CurrentPageID>=$this->numPages)
		{
			echo "<a href='{$this->pageName}?CurrentPageID={$this->pre()}'>上一頁</a> 第{$this->CurrentPageID}頁";
		}
		else
		{
			echo "<a href='{$this->pageName}?CurrentPageID={$this->pre()}'>上一頁</a> 第{$this->CurrentPageID}頁 <a href='{$this->pageName}?CurrentPageID={$this->nex()}'>下一頁</a>";
		}
	}
	
	public function pre()
	{
		if($this->CurrentPageID <= 1)
		{
			return 1;
		}
		else
		{
			return $this->CurrentPageID-1;
		}
	}
	
	public function nex()
	{
		if($this->CurrentPageID >= $this->numPages )
		{
			return $this->CurrentPageID;
		}
		else 
		{
			return  $this->CurrentPageID +1;
		}
	}
	
	public function showData()
	{
		//得到數據
	     print_r($this->db->selectLimitPage($this) );
	}
	
	/**
	 * @return the $CurrentPageID
	 */
	public function getCurrentPageID()
	{
		return $this->CurrentPageID;
	}


}

?>

運行結果如下:



發佈了37 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章