-
-
/** - ** General PHP paging class. (Imitating Google style)
- ** Just 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 query and deletion.
- **/
- 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;
- //Homepage, previous page link
- var $backstr;
- //Last page, next page link
- var $ nextstr;
- //Current page number
- var $pg;
- //Number of records displayed on each page
- var $countlist;
- //Page turning style
- var $style;
- //Constructor, automatically executed when instantiating this class This function
- 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 will be remaindered by adding 1
- $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 pg starts from page 1 if not specified
- 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. Please see the function entity at the bottom for the specific implementation
- $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 " 下一页 尾页";
- }
- } bbs.it-home.org
- //处理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;
- }
- }
- ?>
-
复制代码
|