This class works with database tutorials for query paging, and several component pages. Here's how to use it.
[PHP Tutorials]
<?php
/*
* Name: Pagination class
* Introduction: Suitable for several component pages and matching SQL query paging
* Author: idlion | | Moonfly (id_lion@hotmail.com)
* Date Created: 2006-02-18
* Last modified: 2007-05-24
*/
Class PageBreak {
Private $mtotalrowsnum = 0; Total number of lines of information
Private $mcurpagenumber = 1; Current page
Private $mtotalpagesnum = 1; Total pages
Private $mquerystring; The data passed by the page (the string after the URL?)
Private $mpagerowsnum = 20; Show number of rows per page
Private $mindexbarlength = 5; Number of pages in the index bar
Private $mindexbar = '; Page Number Index Bar
Private $mpageinfo = '; Paging information
Page number index bar style
Private $mnextbutton = "<font style=" font-family:webdings ">8</font>";
Private $mprebutton = "<font style=" font-family:webdings ">7</font>";
Private $mfirstbutton = "<font style=" font-family:webdings ">9</font>";
Private $mlastbutton = "<font style=" font-family:webdings ">:</font>";
Private $MCSS Tutorial Indexbarcurpage = "Font-weight:bold;color: #ff0000";
Private $mcssindexbarpage = ';
Pagination Information Style
Private $mcsspageinfonumfont = ' color: #ff0000 ';
Private $mcsspageinfofont = ';
Construction method
Public function __construct (& $rsqlquery, $userpagerowsnum = ') {
if (!is_array ($rsqlquery)) {
$this->setdbpagebreak ($rsqlquery, $userpagerowsnum);
}
else {
$this->setarraypagebreak ($rsqlquery, $userpagerowsnum);
}
}
Set up a database-type paging
Private Function Setdbpagebreak (& $rsqlquery, $userpagerowsnum = ') {
$this->setdbtotalrowsnum ($rsqlquery);
$this->settotalpagesnum ($userpagerowsnum);
if ($this->mtotalpagesnum > 1) {
$this->setcurpagenumber ();
$this->setsqlquery ($rsqlquery);
$this->setquerystring ();
$this->setindexbar ();
$this->setpageinfo ();
}
}
Set up an array of pagination
Private Function Setarraypagebreak (& $rarray, $userpagerowsnum = ', $usertotalrowsnum = ') {
$this->setarraytotalrowsnum ($rarray, $usertotalrowsnum);
$this->settotalpagesnum ($userpagerowsnum);
if ($this->mtotalpagesnum > 1) {
$this->setcurpagenumber ();
$this->setarray ($rarray);
$this->setquerystring ();
$this->setindexbar ();
$this->setpageinfo ();
}
}
The database type calculates the total number of rows
Private Function Setdbtotalrowsnum ($rsqlquery) {
$this->mtotalrowsnum = mysql Tutorial _num_rows (mysql_query ($rsqlquery));
}
Array type to calculate total number of rows
Private Function Setarraytotalrowsnum ($array) {
$this->mtotalrowsnum = count ($array);
}
Calculate Total Pages
Private Function settotalpagesnum ($userpagerowsnum = ' ") {
if ($userpagerowsnum) {
$this->mpagerowsnum = $userpagerowsnum;
}
$this->mtotalpagesnum = (int) (Floor ($this->mtotalrowsnum-1)/$this->mpagerowsnum) +1);
}
Calculate Current Pages
Private Function Setcurpagenumber () {
if ($_get[' cur_page ']) {
$this->mcurpagenumber = $_get[' cur_page '];
}
}
Fix SQL Intercept statement
Private Function Setsqlquery (& $rsqlquery) {
$start _number = ($this->mcurpagenumber-1) * $this->mpagerowsnum;
$rsqlquery. = "Limit". $start _number ",". $this->mpagerowsnum;
}
Fixed the intercepted array
Private Function SetArray (& $rarray) {
$start _number = ($this->mcurpagenumber-1) * $this->mpagerowsnum;
$rarray = Array_slice ($rarray, $start _number, $this->mpagerowsnum);
}
Fixed $_get pass Data
Private Function setquerystring () {
$query _string = $_server[' query_string '];
if ($query _string = = ") {
$this->mquerystring = "cur_page=";
}
else {
$this->mquerystring = preg_replace ("/&?cur_page=d+/", "", $query _string);
$this->mquerystring = "?". $this->mquerystring. " &cur_page= ";
}
}
Set page number Index bar
Private Function Getpageindex () {
if ($this->mtotalpagesnum <= $this->mindexbarlength) {
$first _number = 1;
$last _number = $this->mtotalpagesnum;
}
else {
$offset = (int) floor ($this->MINDEXBARLENGTH/2);
if (($this->mcurpagenumber-$offset) <= 1) {
$first _number = 1;
}
ElseIf ($this->mcurpagenumber+ $offset) > $this->mtotalpagesnum) {
$first _number = $this->mtotalpagesnum-$this->mindexbarlength+1;
}
else {
$first _number = $this->mcurpagenumber-$offset;
}
$last _number = $first _number+ $this->mindexbarlength-1;
}
$last _number;
for ($i = $first _number; $i <= $last _number; $i + +) {
if ($this->mcurpagenumber = = $i) {
$page _index. = "<font style=". $this->mcssindexbarcurpage. "' > ". $i." </font> ";
}
else {
$page _index. = "<a href=". $this->mquerystring. $i. "' style= '. $this->mcssindexbarpage." ' > ". $i." </a> ";
}
}
return $page _index;
}
Set page number Index bar
Private Function Setindexbar () {
$this->mindexbar = $this->getnavfirstbutton ();
$this->mindexbar. = $this->getnavprebutton ();
$this->mindexbar. = $this->getpageindex ();
$this->mindexbar. = $this->getnavnextbutton ();
$this->mindexbar. = $this->getnavlastbutton ();
}
Get page number Index bar Home button
Private Function Getnavfirstbutton () {
Return "<a href= '". $this->mquerystring. " 1 ' > ' $this->mfirstbutton. " </a> ";
}
Get page number index bar prev button
Private Function Getnavprebutton () {
if ($this->mcurpagenumber>1) {
$pre _number = $this->mcurpagenumber-1;
}
else {
$pre _number = 1;
}
Return "<a href= '". $this->mquerystring. $pre _number. "' > ". $this->mprebutton." </a> ";
}
Get page number index bar next page button
Private Function Getnavnextbutton () {
if ($this->mcurpagenumber< $this->mtotalpagesnum) {
$next _number = $this->mcurpagenumber+1;
}
else {
$next _number = $this->mtotalpagesnum;
}
Return "<a href= '". $this->mquerystring. $next _number. "' > ". $this->mnextbutton." </a> ";
}
Get page number index bar last button
Private Function Getnavlastbutton () {
Return "<a href= '". $this->mquerystring. $this->mtotalpagesnum. "' > ". $this->mlastbutton." </a> ";
}
Set up paging information
Private Function Setpageinfo () {
$this->mpageinfo = "<font style=". $this->mcsspageinfofont. "' > ";
$this->mpageinfo. = "Altogether <font style= '". $this->mcsspageinfonumfont. "' > ". $this->mtotalrowsnum." </font> message | ";
$this->mpageinfo. = "<font style=". $this->mcsspageinfonumfont. "' > ". $this->mpagerowsnum." </font> article/page | ";
$this->mpageinfo. = "Altogether <font style= '". $this->mcsspageinfonumfont. "' > ". $this->mtotalpagesnum." </font> Page | ";
$this->mpageinfo. = "<font style= '". $this->mcsspageinfonumfont. "' > ". $this->mcurpagenumber." </font> page ";
$this->mpageinfo. = "</font>";
}
Take out the page number index bar
Public Function Getindexbar () {
return $this->mindexbar;
}
To remove the paging information
Public Function GetPageInfo () {
return $this->mpageinfo;
}
}
?>
[/php]