Home >Backend Development >PHP Tutorial >PHP pagination code_PHP tutorial

PHP pagination code_PHP tutorial

WBOY
WBOYOriginal
2016-07-14 10:07:49771browse

[php]

/*
Thoughts
1. Get the URL from the address bar
2. Analyze the query part of the URL - that is, the part where parameters are passed later
3. The query part is analyzed into an array
4. Change the page unit in the array, +1, -1, to form 2 new arrays
5. Splice the new array into the query part to synthesize the previous page and next page connection address
*/
//Paging class
class Page {
public $total; //Total number of items, retrieved from the database
public $prePage = 10; //Number of items per page
protected $curr= 1; //default current page number
public function __construct($total,$prePage='') {
$this->total = $total; //Put the total entry information in the total attribute
if ($prePage > 0) {
$this->prePage = $prePage; //Put the number of each page in the perPage attribute
} }
//Calculate the current page number
if (isset($_GET['page']) && ($_GET['page'] + 0) > 0) {
$this->curr = $_GET['page'] + 0;
} }
}
//Main function
public function showPage() {
if ($this->total <=0) {
                                                                                                                                                                         
} }
$cnt = ceil($this->total / $this->prePage); //Calculate the total number of pages and round to the nearest whole number
//According to the current page, count the previous page and next page
/*
How many situations are there when analyzing url?
xx.php
xx.php?id=5
xx.php?page=3
xx.php?id=5&page=3
*/
//The final generated URL must contain page=N
$url = $_SERVER['REQUEST_URI'];
$parse = parse_url($url); //Put the URL analysis results in the array
//print_r($parse);
//Make sure there is page in the parameter
if (!isset($parse['query'])) {
$parse['query'] = 'page=' .$this->curr;
} }
//Analyze the query string into an array and make sure there is page option again
parse_str($parse['query'],$parms);
if (!array_key_exists('page', $parms)) {
$parms['page'] = $this->curr;
} }
//Test all four situations above and the page parameters can be generated
//print_r($parms);
//Determine whether there are any other parameters besides page
if (count($parms) == 1) {
$url = $parse['path'] . '?';
} else {
unset($parms['page']);
$url = $parse['path'] . '?' . http_build_query($parms) . '&';
} }
//echo $url
$prev = $this->curr - 1;
$next = $this->curr + 1;
//Homepage
$indexLink = 'Homepage';
//Previous page
if ($prev < 1) {
$prevLink = '';
}else {
$prevLink = 'Previous page';
} }
//Next page
if ($next > $cnt) {
$nextLink = '';
}else {
                  $nextLink = 'Next Page';
} }
//Last page
$lastLink = 'Last page';
//echo $indexLink.' '.$prevLink.' '.$nextLink .' '.$lastLink;
//Previous page, 1 2 3 4 5 next page
$start = $this->curr - (5-1)/2; //Calculate the page number starting from the left
$end = $this->curr + (5-1)/2; //Calculate the page number starting on the right
//If the page on the left is already less than 1, add the part less than 1 to the right
if ($start < 1) {
$end += (1 - $start);
$start = 1; //Modify start = 1
if ($end > $cnt) {
$end = $cnt;
      }  
} }
//Add the excess on the right side to the left side
if ($end > $cnt) {
$start -= ($end - $cnt);
$end = $cnt;
if ($start < 1) {
$start = 1;
      }  
} }
//Loop out the page number
$pageStr = '';
for ($i=$start; $i <= $end ; $i++) {
                                                       
if ($i == $this->curr) {
$pageStr .= $i;
continue;
      }  
$pageStr .= '' . $i . '';
} }
return $indexLink.$prevLink.$pageStr.$nextLink.$lastLink;
}
}
$page = new Page(30,3);
echo $page->showPage();
PHP pagination code_PHP tutorial

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477842.htmlTechArticle[php] /* Idea 1. Get the URL in the address bar 2. Analyze the query part in the URL-- That is? The part where parameters are passed later 3. The query part is analyzed into an array 4. The page units in the array, +1, -1, form 2...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:ColaPHP 2.0α released_PHP tutorialNext article:ColaPHP 2.0α released_PHP tutorial

Related articles

See more