/**
** General PHP paging class. (Imitate Google style)
** Only need to provide two parameters: the total number of records and the number of displays per page. (Detailed instructions are attached..)
** There is no need to specify the URL, the link is generated by the program. Convenient for paging search results.
** The form is submitted using the GET method, which ensures that URL parameters are not lost during operations such as querying and deleting.
**/
class Pager{
//IE address bar address
var $url;
//Total number of records
var $countall;
//Total number of pages
var $page;
//Paging number link
var $thestr;
// Home page, previous page link
var $backstr;
//Last page, next page link
var $nextstr;
//Current page number
var $pg;
/ /Display the number of records per page
var $countlist;
//Page turning style
var $style;
//Constructor, this function is automatically executed when instantiating this class
function Pager($countall,$countlist,$style="page"){
//When the number of records and the number displayed on each page cannot be integrated, the number of pages is taken as remainder and 1 is added
$this->countall = $ countall;
$this->countlist = $countlist;
$this->style=$style;
if ($this->countall%$this->countlist!=0) {
$this->page=sprintf("%d",$this->countall/$this->countlist)+1;
}else{
$this->page =$this->countall/$this->countlist;
}
$this->pg=$_GET["pg"];
//Guarantee that pg is not specified In the case of starting from page 1
if (!ereg("^[1-9][0-9]*$",$this->pg) || empty($this->pg )){
$this->pg=1;
}
//The page number exceeds the maximum range, take the maximum value
if ($this->pg>$this->page ){
$this->pg=$this->page;
}
//Get the current URL. For specific implementation, please see the function entity at the bottom
$this->url = Pager::getUrl();
//Replace the incorrectly formatted page number with the correct page number
if(isset($_GET[" pg"]) && $_GET["pg"]!=$this->pg){
$this->url=str_replace("?pg=".$_GET["pg"],"? pg=$this->pg",$this->url);
$this->url=str_replace("&pg=".$_GET["pg"],"&pg=$this-> ;pg",$this->url);
}
//Generate pagination in the form of numbers such as 12345.
if ($this->page<=10){
for ($i=1;$i<$this->page+1;$i++){
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
}
}else{
if ($this->pg<=5){
for ($i=1;$i<10;$i++){
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
}
}else{
if (6+$this->pg<=$this->page){
for ($i=$this->pg-4;$i<$this->pg+6;$i++){
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
}
}else{
for ($i=$this->pg-4;$i<$this->page+1;$i++){
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
}
}
}
}
//生成上页下页等文字链接
$this->backstr = Pager::gotoback($this->pg);
$this->nextstr = Pager::gotonext($this->pg,$this->page);
//echo (" 共".$this->countall." 条,每页".$this->countlist."条,共".$this->page."页".$this->backstr.$this->thestr.$this->nextstr);
}
//生成数字分页的辅助函数
function makepg($i,$pg){
if ($i==$pg){
return "
".$i."";
}else{
return "
".$i."";
}
}
//生成上一页等信息的函数
function gotoback($pg){
if ($pg-1>0){
return $this->gotoback="
首页 上一页";
}else{
return $this->gotoback="
首页 上一页 ";
}
}
//生成下一页等信息的函数
function gotonext($pg,$page){
if ($pg < $page){
return "
下一页 尾页";
}else{
return "
下一页 尾页";
}
}
//处理url中$pg的方法,用于自动生成pg=x
function replacepg($url,$flag,$i){
if ($flag == 1){
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".($this->pg+1),$url);
}else if($flag == 2) {
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".($this->pg-1),$url);
}else if($flag == 3) {
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=1",$url);
}else if($flag == 4){
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".$this->page,$url);
}else if($flag == 5){
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".$i,$url);
}else{
return $url;
}
}
//获得当前URL的方法
function getUrl(){
$url="http://".$_SERVER["HTTP_HOST"];
if(isset($_SERVER["REQUEST_URI"])){
$url.=$_SERVER["REQUEST_URI"];
}else{
$url.=$_SERVER["PHP_SELF"];
if(!empty($_SERVER["QUERY_STRING"])){
$url.="?".$_SERVER["QUERY_STRING"];
}
}
//在当前的URL里加入pg=x字样
if (!ereg("(pg=|PG=|pG=|Pg=)", $url)){
if (!strpos($url,"?")){
$url = $url."?pg=1";
}else{
$url = $url."&pg=1";
}
}
return $url;
}
}
?>