<! DOCTYPE html PUBLIC "-// W3C // dtd xhtml 1.0 Transitional // EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
The final completion diagram:
4. Paging Query
The query keyword is displayed on the page!
First, form:
<Form action = "fenyechaxun. php "method =" get "> // submit it to the current page and use get to pass <div> enter the region name for fuzzy search: <input type = "text" name = "area"/> <input type = "submit" value = ""/> </div> </form>
Paging query Conditions
$ Tj = "1 = 1"; // conditional constant variable if (! Empty ($ _ GET ["area"]) // checks whether the passed data is null {$ r = $ _ GET ["area"]; // to prevent the double quotation marks from being conflicted, the variable $ tj = "areaname like '% {$ r} %'"; // The condition is changed}
The query statement also needs to be changed:
$ Aall = "select count (*) from chinastates WHERE {$ tj}"; // query all data $ SQL = "select * from chinastates WHERE {$ tj }". $ page-> limit; // query by page. The page class calls limit.
Output:
<Div> <? Php echo $ page-> fpage (); // directly output the fpage () in the page class (output page information)?> </Div>
:
The queried data is also in the form of pagination:
Code:
<! DOCTYPE html PUBLIC "-// W3C // dtd xhtml 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<Html xmlns = "http://www.w3.org/1999/xhtml">
<Head>
<Title> untitled document </title>
</Head>
<Body>
<H1> paging query <Form action = "fenyechaxun. php" method = "get">
<! -- // Submit it to the current page and pass it with get. Otherwise, the keyword cannot be obtained. -->
<Div>
Enter a region name for fuzzy search:
<Input type = "text" name = "area" value = ""/>
<Input type = "submit" value = ""/>
</Div>
</Form>
<Table border = "1" cellpadding = "0" cellspacing = "0">
<Tr>
<Td> Region Code </td>
<Td> region name </td>
<Td> parent Code </td>
</Tr>
<? Php
Include ("DBDA. class. php ");
// Reference encapsulation class
$ Db = new db ();
// Create object
Include "page. class. php ";
// Reference the page Tool
$ Tj = "1 = 1 ";
// Conditional constant variable
If (! Empty ($ _ GET ["area"])
// Determine whether the passed data is empty
{
$ R = $ _ GET ["area"];
// To prevent the double quotation marks from being conflicted, give the variable
$ Tj = "areaname like '% {$ r} % '";
// Condition change
}
$ Aall = "select count (*) from chinastates WHERE {$ tj }";
// Query all data
$ Arr = $ db-> Query ($ aall );
// Call SQL and return an array,
$ Page = new page ($ arr [0] [0], 10 );
// Page Object, 10 entries per page
$ SQL = "select * from chinastates WHERE {$ tj}". $ page-> limit;
// Query by page. The page class calls limit.
$ Ar = $ db-> Query ($ SQL );
// Execute and return an array (data)
Foreach ($ ar as $ v)
// Traverse
{
Echo "<tr>
<Td >{$ v [0]} </td>
<Td >{$ v [1]} </td>
<Td >{$ v [2]} </td>
</Tr>
";
}
// Display
?>
</Table>
<Div>
<? Php
Echo $ page-> fpage ();
// Directly output the fpage () in the page class (output page Information)
?>
</Div>
</Body>
</Html>
Page. class. php paging Tool
<? Php
/**
File: page. class. php
Perfect paging Page
*/
Class Page {
Private $ total; // The total number of records in the data table
Private $ listRows; // number of lines displayed per page
Private $ limit; // use the limit clause in SQL statements to limit the number of records to be retrieved and check which records to query. Use limit (0th) to skip records and retrieve 10 records.
Private $ uri; // automatically obtain the url request address
Private $ pageNum; // the total number of pages.
Private $ page; // current page
Private $ config = array (
'Head' => "records ",
'Prev' => "Previous Page ",
'Next' => "next page ",
'First' => "Homepage ",
'Last' => "last page"
);
// Modifiable Information
// Display the content in the page information. You can set it by using the set () method.
Private $ listNum = 10; // The number of entries displayed on the default page list. The number of entries to be displayed in the following list is 10.
/**
Constructor. You can set the attributes of the paging class.
@ Param int $ total calculate the total number of records on the page
@ Param int $ listRows (optional) sets the number of records to be displayed on each page. The default value is 25.
@ Param mixed $ query: Optional. It can be an array or a query string format to pass parameters to the target page.
@ Param bool $ ord: Optional. The default value is true. The page is displayed from the first page, and false indicates the last page.
*/
Public function _ construct ($ total, $ listRows = 25, $ query = "", $ ord = true ){
$ This-> total = $ total;
$ This-> listRows = $ listRows;
$ This-> uri = $ this-> getUri ($ query );
// Automatically obtain the browser address
$ This-> pageNum = ceil ($ this-> total/$ this-> listRows); // (total number of data records/several entries per page) ceil: rounded up
// Get the member variable, $ ord = ture Homepage
/* The following judgment is used to set the current plane */
// Go to the current page
If (! Empty ($ _ GET ["page"]) {
$ Page = $ _ GET ["page"];
} Else {
If ($ ord)
$ Page = 1;
Else
$ Page = $ this-> pageNum;
}
If ($ total> 0 ){
If (preg_match ('/\ D/', $ page )){
$ This-> page = 1;
} Else {
$ This-> page = $ page;
}
} Else {
$ This-> page = 0;
}
$ This-> limit = "LIMIT". $ this-> setLimit ();
// LIMIT 10, 10
}
/**
Used to set display page information for consistent operations
@ Param string $ param is the subscript of the member attribute array config.
@ Param string $ value is used to set the element value corresponding to the config subscript.
@ Return object returns the current object $ this, which is used for connection operations.
*/
Function set ($ param, $ value ){
If (array_key_exists ($ param, $ this-> config )){
$ This-> config [$ param] = $ value;
}
Return $ this;
}
/* This method is not called directly. You can use this method to directly obtain the limit and page values of Private member attributes outside the object */
Function _ get ($ args ){
If ($ args = "limit" | $ args = "page ")
Return $ this-> $ args;
Else
Return null;
}
/**
Output pagination in the specified format
@ Param int 0-7 numbers are used as parameters to customize the output pagination structure and adjust the structure order. By default, all structures are output.
@ Return string pagination content
*/
Function fpage (){
$ Arr = func_get_args (); // USER Parameters
$ Html [0] = "<span class = 'p1'> & nbsp; <B >{$ this-> total }</B >{$ this-> config ["head"]} & nbsp; </span> ";
$ Html [1] = "& nbsp; <B>". $ this-> disnum (). "</B> & nbsp ;";
$ Html [2] = "& nbsp; this page is from <B >{$ this-> start ()}-{$ this-> end ()} </B> & nbsp ;";
$ Html [3] = "& nbsp; <B >{$ this-> page}/{$ this-> pageNum} </B> page & nbsp ;";
$ Html [4] = $ this-> firstprev ();
$ Html [5] = $ this-> pageList ();
$ Html [6] = $ this-> nextlast ();
$ Html [7] = $ this-> goPage ();
$ Fpage = '<div style = "font: 12px \' \ 5B8B \ 4F53 \ ', san-serif;"> ';
If (count ($ arr) <1)
$ Arr = array (0, 1, 2, 3, 4, 5, 6, 7 );
For ($ I = 0; $ I <count ($ arr); $ I ++)
$ Fpage. = $ html [$ arr [$ I];
$ Fpage. = '</div> ';
Return $ fpage;
}
/* Private methods used inside the object ,*/
Private function setLimit (){
If ($ this-> page> 0)
Return ($ this-> page-1) * $ this-> listRows. ", {$ this-> listRows }";
Else
Return 0;
}
/* Private method used inside the object, used to automatically obtain the current URL for access */
Private function getUri ($ query ){
$ Request_uri = $ _ SERVER ["REQUEST_URI"];
$ Url = strstr ($ request_uri ,'? ')? $ Request_uri: $ request_uri .'? ';
If (is_array ($ query ))
$ Url. = http_build_query ($ query );
Else if ($ query! = "")
$ Url. = "&". trim ($ query ,"? &");
$ Arr = parse_url ($ url );
If (isset ($ arr ["query"]) {
Parse_str ($ arr ["query"], $ arrs );
Unset ($ arrs ["page"]);
$ Url = $ arr ["path"]. '? '. Http_build_query ($ arrs );
}
If (strstr ($ url ,'? ')){
If (substr ($ url,-1 )! = '? ')
$ Url = $ url .'&';
} Else {
$ Url = $ url .'? ';
}
Return $ url;
}
/* Private method used inside the object to obtain the number of records starting from the current page */
Private function start (){
If ($ this-> total = 0)
Return 0;
Else
Return ($ this-> page-1) * $ this-> listRows + 1;
}
/* Private method used inside the object to obtain the number of records ending on the current page */
Private function end (){
Return min ($ this-> page * $ this-> listRows, $ this-> total );
}
/* Private method used inside the object to obtain operation information of the previous page and homepage */
Private function firstprev (){
If ($ this-> page> 1 ){
$ Str = "& nbsp; <a href = '{$ this-> uri} page = 1' >{$ this-> config ["first"]} </a> & nbsp ;";
$ Str. = "<a href = '{$ this-> uri} page = ". ($ this-> page-1 ). "'>{$ this-> config [" prev "]} </a> & nbsp ;";
Return $ str;
}
}
/* Private method used inside the object to obtain page list information */
Private function pageList (){
$ LinkPage = "& nbsp; <B> ";
$ Inum = floor ($ this-> listNum/2 );
/* List at the front of the current page */
For ($ I = $ inum; $ I >=1; $ I --){
$ Page = $ this-> page-$ I;
If ($ page> = 1)
$ LinkPage. = "<a href = '{$ this-> uri} page = {$ page}'> {$ page} </a> & nbsp ;";
}
/* Information on the current page */
If ($ this-> pageNum> 1)
$ LinkPage. = "<span style = 'padding: 1px 2px; background: # BBB; color: white' >{$ this-> page} </span> & nbsp ;";
/* List after the current page */
For ($ I = 1; $ I <= $ inum; $ I ++ ){
$ Page = $ this-> page + $ I;
If ($ page <= $ this-> pageNum)
$ LinkPage. = "<a href = '{$ this-> uri} page = {$ page}'> {$ page} </a> & nbsp ;";
Else
Break;
}
$ LinkPage. = '</B> ';
Return $ linkPage;
}
/* Private methods used inside the object to obtain operation information on the next and last pages */
Private function nextlast (){
If ($ this-> page! = $ This-> pageNum ){
$ Str = "& nbsp; <a href = '{$ this-> uri} page = ". ($ this-> page + 1 ). "'>{$ this-> config [" next "]} </a> & nbsp ;";
$ Str. = "& nbsp; <a href = '{$ this-> uri} page = ". ($ this-> pageNum ). "'>{$ this-> config [" last "]} </a> & nbsp ;";
Return $ str;
}
}
/* Private method used inside the object for displaying and processing the form jump page */
Private function goPage (){
If ($ this-> pageNum> 1 ){
Return '& nbsp; <input style = "width: 20px; height: 17px! Important; height: 18px; border: 1px solid # CCCCCC; "type =" text "onkeydown =" javascript: if (event. keyCode = 13) {var page = (this. value> '. $ this-> pageNum. ')? '. $ This-> pageNum. ': this. value; location = \''. $ this-> uri. 'page = \ '+ page + \'} "value = "'. $ this-> page. '"> <input style =" cursor: pointer; width: 25px; height: 18px; border: 1px solid # CCCCCC; "type =" button "value =" GO "onclick =" javascript: var page = (this. previussibling. value> '. $ this-> pageNum. ')? '. $ This-> pageNum. ': this. previussibling. value; location = \''. $ this-> uri. 'page = \ '+ page + \' "> & nbsp ;';
}
}
/* Private method used inside the object to obtain the number of records displayed on this page */
Private function disnum (){
If ($ this-> total> 0 ){
Return $ this-> end ()-$ this-> start () + 1;
} Else {
Return 0;
}
}
}