<? Php /** * Filename: ext_page.class.php * @ Package: phpbean * @ Author: feifengxlq <feifengxlq # gmail.com> * @ Copyright: Copyright 2006 feifengxlq * @ License: version 2.0 * @ Create: 2006-5-31 * @ Modify: 2006-6-1 * @ Modify: feifengxlq 2006-11-4 * Description: exclusive paging mode. Four paging modes are used by default, which are similar to baidu and google paging modes. * 2.0 added: supports custom styles and styles, and supports both PHP4 and PHP5, * To see detail, please visit http://www.111cn.net * example: * Mode: four paging modes: Require_once ('../libs/classes/page. class. Php '); $ Page = new page (array ('total' => 1000, 'perpage' => 20 )); Echo 'MoDe: 1 <br> '. $ page-> show (); Echo 'Echo 'Echo 'Enable AJAX: $ Ajaxpage = new page (array ('total' => 1000, 'perpage' => 20, 'Ajax '=> 'Ajax _ page ', 'page _ name' => 'test ')); Echo 'MoDe: 1 <br> '. $ ajaxpage-> show (); Use the inherited custom paging display mode: Demo: [url = http://www.phpobject.net/blog#http://www.phpobject.net/blog#/url] */ Class Page { /** * Config, public */ Var $ page_name = "p"; // page tag, used to control url pages. For example, xxx. php? PB_page = PB_page in 2 Var $ next_page = '>'; // Next page Var $ pre_page = '<'; // Previous Page Var $ first_page = 'first'; // home page Var $ last_page = 'Lala'; // The Last page. Var $ pre_bar = '<'; // The Last Page Var $ next_bar = '>'; // Next page Var $ format_left = ''; Var $ format_right = ''; Var $ is_ajax = false; // whether the AJAX paging mode is supported /** * Private * */ Var $ pagebarnum = 10; // control the number of records. Var $ totalpage = 0; // total number of pages Var $ ajax_action_name = ''; // AJAX action name Var $ nowindex = 1; // current page Var $ url = ""; // url header Var $ offset = 0; /** * Constructor * * @ Param array $ array ['total'], $ array ['perpage'], $ array ['nowindex '], $ array ['URL'], $ array ['Ajax ']... */ Function page ($ array) { If (is_array ($ array )){ // If (! Array_key_exists ('total', $ array) $ this-> error (_ FUNCTION __, 'need a param of total '); $ Total = intval ($ array ['total']); $ Perpage = (array_key_exists ('perpage', $ array ))? Intval ($ array ['perpage']): 10; $ Nowindex = (array_key_exists ('nowindex ', $ array ))? Intval ($ array ['nowindex ']): ''; $ Url = (array_key_exists ('URL', $ array ))? $ Array ['URL']: ''; } Else { $ Total = $ array; $ Perpage = 10; $ Nowindex = ''; $ Url = ''; } // If ((! Is_int ($ total) | ($ total <0) $ this-> error (_ FUNCTION __, $ total. 'is not a positive integer! '); If ((! Is_int ($ perpage) | ($ perpage <= 0) $ this-> error (_ FUNCTION __, $ perpage. 'is not a positive integer! '); If (! Empty ($ array ['page _ name']) $ this-> set ('page _ name', $ array ['page _ name']); // set pagename $ This-> _ set_nowindex ($ nowindex); // you can specify the current page. $ This-> _ set_url ($ url); // sets the link address. $ This-> totalpage = ceil ($ total/$ perpage ); $ This-> offset = ($ this-> nowindex-1) * $ perpage; If (! Empty ($ array ['Ajax ']) $ this-> open_ajax ($ array ['Ajax']); // enable the ajax mode } /** * Set the value of the variable name specified in the class. If the change volume does not belong to this class, throw an exception * * @ Param string $ var * @ Param string $ value */ Function set ($ var, $ value) { If (in_array ($ var, get_object_vars ($ this ))) $ This-> $ var = $ value; Else { $ This-> error (_ FUNCTION __, $ var. "does not belong to PB_Page! "); } } /** * Open the inverted AJAX mode. * * @ Param string $ action the default ajax-triggered action. */ Function open_ajax ($ action) { $ This-> is_ajax = true; $ This-> ajax_action_name = $ action; } /** * Get the code that displays the next page. * * @ Param string $ style * @ Return string */ Function next_page ($ style = '') { If ($ this-> nowindex <$ this-> totalpage ){ Return $ this-> _ get_link ($ this-> _ get_url ($ this-> nowindex + 1), $ this-> next_page, $ style ); } Return '<span class = "'. $ style. '">'. $ this-> next_page. '</span> '; } /** * Get the code for displaying the "previous page" * * @ Param string $ style * @ Return string */ Function pre_page ($ style = '') { If ($ this-> nowindex> 1 ){ Return $ this-> _ get_link ($ this-> _ get_url ($ this-> nowindex-1), $ this-> pre_page, $ style ); } Return '<span class = "'. $ style. '">'. $ this-> pre_page. '</span> '; } /** * Get the code for displaying the "homepage" * * @ Return string */ Function first_page ($ style = '') { If ($ this-> nowindex = 1 ){ Return '<span class = "'. $ style. '">'. $ this-> first_page. '</span> '; } Return $ this-> _ get_link ($ this-> _ get_url (1), $ this-> first_page, $ style ); } /** * Get the code for displaying the "last page" * * @ Return string */ Function last_page ($ style = '') { If ($ this-> nowindex ==$ this-> totalpage ){ Return '<span class = "'. $ style. '">'. $ this-> last_page. '</span> '; } Return $ this-> _ get_link ($ this-> _ get_url ($ this-> totalpage), $ this-> last_page, $ style ); } Function nowbar ($ style = '', $ nowindex_style = 'C ') { $ Plus = ceil ($ this-> pagebarnum/2 ); If ($ this-> pagebarnum-$ plus + $ this-> nowindex> $ this-> totalpage) $ plus = ($ this-> pagebarnum-$ this-> totalpage + $ this-> nowindex ); $ Begin = $ this-> nowindex-$ plus + 1; $ Begin = ($ begin> = 1 )? $ Begin: 1; $ Return = ''; For ($ I = $ begin; $ I <$ begin + $ this-> pagebarnum; $ I ++) { If ($ I <= $ this-> totalpage ){ If ($ I! = $ This-> nowindex) $ Return. = $ this-> _ get_text ($ this-> _ get_link ($ this-> _ get_url ($ I), $ I, $ style )); Else $ Return. = $ this-> _ get_text ('<span class = "'. $ nowindex_style. '">'. $ I. '</span> '); } Else { Break; } $ Return. = "n "; } Unset ($ begin ); Return $ return; } /** * Get the code for displaying the jump button * * @ Return string */ Function select () { $ Return = '<select name = "PB_Page_Select"> '; For ($ I = 1; $ I <= $ this-> totalpage; $ I ++) { If ($ I ==$ this-> nowindex ){ $ Return. = '<option value = "'. $ I. '" selected>'. $ I. '</option> '; } Else { $ Return. = '<option value = "'. $ I. '">'. $ I. '</option> '; } } Unset ($ I ); $ Return. = '</select> '; Return $ return; } /** * Obtain the limit value in the mysql statement. * * @ Return string */ Function offset () { Return $ this-> offset; } /** * Control the display style by page (you can add the corresponding style) * * @ Param int $ mode * @ Return string */ Function show ($ mode = 1) { Switch ($ mode) { Case '1 ': $ This-> next_page = 'next page '; $ This-> pre_page = 'previous page '; Return $ this-> pre_page (). $ this-> nowbar (). $ this-> next_page (). 'Di '. $ this-> select (). 'Page '; Break; Case '2 ': $ This-> next_page = 'next page '; $ This-> pre_page = 'previous page '; $ This-> first_page = 'homepage '; $ This-> last_page = 'Last page '; Return $ this-> first_page (). $ this-> pre_page (). '[nth '. $ this-> nowindex. 'page] '. $ this-> next_page (). $ this-> last_page (). 'Di '. $ this-> select (). 'Page '; Break; Case '3 ': $ This-> next_page = 'next page '; $ This-> pre_page = 'previous page '; $ This-> first_page = 'homepage '; $ This-> last_page = 'Last page '; Return $ this-> first_page (). $ this-> pre_page (). $ this-> next_page (). $ this-> last_page (); Break; Case '4 ': $ This-> next_page = '& gt ;'; $ This-> pre_page = '& lt ;'; $ This-> first_page = '& lt ;'; $ This-> last_page = '& gt ;'; Return $ this-> first_page (). $ this-> pre_page (). $ this-> nowbar (). $ this-> next_page (). $ this-> last_page (); Break; Case '5 ': Return $ this-> pre_bar (). $ this-> pre_page (). $ this-> nowbar (). $ this-> next_page (). $ this-> next_bar (); Break; } } /* ---------------- Private function (private method )-----------------------------------------------------------*/ /** * Set the url header address * @ Param: String $ url * @ Return boolean */ Function _ set_url ($ url = "") { If (! Empty ($ url )){ // Manually set $ This-> url = $ url; } Else { // Automatically obtain If (empty ($ _ SERVER ['query _ string']) { // When QUERY_STRING does not exist $ This-> url = $ _ SERVER ['request _ URI ']. "? ". $ This-> page_name." = "; } Else { // If (stristr ($ _ SERVER ['query _ string'], $ this-> page_name. '= ')){ // The address has page parameters. $ This-> url = str_replace ($ this-> page_name. '='. $ this-> nowindex, '', $ _ SERVER ['request _ URI ']); $ Last = $ this-> url [strlen ($ this-> url)-1]; If ($ last = '? '| $ Last = '&'){ $ This-> url. = $ this-> page_name. "= "; } Else { $ This-> url. = '&'. $ this-> page_name. "= "; } } Else { // $ This-> url = $ _ SERVER ['request _ URI '].' & '. $ this-> page_name.' = '; } // End if } // End if } // End if } /** * Set the current page * */ Function _ set_nowindex ($ nowindex) { If (empty ($ nowindex )){ // System retrieval If (isset ($ _ GET [$ this-> page_name]) { $ This-> nowindex = intval ($ _ GET [$ this-> page_name]); } } Else { // Manually set $ This-> nowindex = intval ($ nowindex ); } } /** * Return the address value for the specified page. * * @ Param int $ pageno * @ Return string $ url */ Function _ get_url ($ pageno = 1) { Return $ this-> url. $ pageno. '.html '; } /** * Get the text displayed by page. For example, by default, _ get_text ('<a href = ""> 1 </a> ') [<a href = ""> 1 </a>] * * @ Param String $ str * @ Return string $ url */ Function _ get_text ($ str) { Return $ this-> format_left. $ str. $ this-> format_right; } /** * Obtain the link address */ Function _ get_link ($ url, $ text, $ style = ''){ $ Style = (empty ($ style ))? '': 'Class =" '. $ style .'"'; If ($ this-> is_ajax ){ // If the AJAX mode is used Return '<'. $ style. 'href = "javascript :'. $ this-> ajax_action_name. '(''. $ url. '')"> '. $ text. '</a> '; } Else { Return '<a'. $ style. 'Href = "'. $ url.'"> '. $ text.' </a> '; } } /** * Error handling method */ Function error ($ function, $ errormsg) { Die ('error in file <B> '. _ FILE __. '</B>, Function <B> '. $ function. '() </B> :'. $ errormsg ); } } ?> |