PHP efficient page-type code (1/2)

Source: Internet
Author: User
Tags mysql tutorial

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-&GT;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]

Home 1 2 last page

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.