Klasse im eine Datenbank-Abfrage über mehrere Seiten ausgeben zu lassen
Script:
<?php
class Paging {
var $int_num_result; // Number of result to show per page (decided by user)
var $int_nbr_row; // Total number of items (SQL count from db)
var $int_cur_position;// Current position in recordset
var $str_ext_argv; // Extra argv of query string
// ------------------------------------------------------------------- getNumberOfPage()
// This function returns the total number of page to display.
function getNumberOfPage(){
$int_nbr_page = $this->int_nbr_row / $this->int_num_result;
return $int_nbr_page;
} // end function
// -------------------------------------------------------------------- getCurrentPage()
// This function returns the current page number.
function getCurrentPage(){
$int_cur_page = ( $this->int_cur_position * $this->getNumberOfPage() ) / $this->int_nbr_row;
return number_format( $int_cur_page, 0 );
} // end function
// ----------------------------------------------------------------------- getPagingArray()
// This function print the paging to the screen.
// This function returns an array:
// $array_paging[\'lower\'] lower limit of where we are in result set
// $array_paging[\'upper\'] upper limit of where we are in result set
// $array_paging[\'total\'] total number of result
// $array_paging[\'previous_link\'] href tag for previous link
// $array_paging[\'next_link\'] href tag for next link
function getPagingArray(){
global $PHP_SELF;
// ----------------------------------------------------------------------- getPagingRowArray()
// This function returns an array of string (href link with the page number)
function getPagingRowArray(){
global $PHP_SELF;
for( $i=0; $i<$this->getNumberOfPage(); $i++ ){
// if current page, do not make a link
if( $i == $this->getCurrentPage() ){
$array_all_page[$i] = \"<b>\". ($i+1) .\"</b>\";
}else{
$int_new_position = ( $i * $this->int_num_result );
$array_all_page[$i] = \"<a href=\\\"\". $PHP_SELF .\"?int_cur_position=$int_new_position$this->str_ext_argv\\\">\". ($i+1) .\"</a>\";
}
}
return $array_all_page;
} // end function
}; // End Class
// ==============================================================
// Exemple Usage
// Note: I make 2 query to the database for this exemple, it
// could (and should) be made with only one query...
// ==============================================================
include( \"db_mysql.php\" );
// New instance of database object, from phplib (http://phplib.sourceforge.net/)
$db = new db_data();
// If current position is not set, set it to zero
if( !isset( $int_cur_position ) || $int_cur_position == 0 ){
$int_cur_position = 0;
}
// Number of result to display on the page, will be in the LIMIT of the sql query also
$int_num_result = 20;
$extargv = \"&argv1=1&argv2=2\"; // extra argv here (could be anything depending on your page)
// Get the total number of result from db
$sql1 = \"Select count( key ) as nbr FROM table\";
// New instance of the Paging class, you can modify the color and the width of the html table
$p = new Paging( $result_from_sql1, $int_cur_position, $int_num_result, $extargv );
// Load up the 2 array in order to display result
$array_paging = $p->getPagingArray();
$array_row_paging = $p->getPagingRowArray();
// Display the result as you like...
print \"Results \". $array_paging[\'lower\'];
print \" to \". $array_paging[\'upper\'];
print \" of \". $array_paging[\'total\'];
print \" \". $array_paging[\'previous_link\'] .\"<<<</a> \" ;
for( $i=0; $i<sizeof($array_row_paging); $i++ ){
print $array_row_paging[$i] .\" \";
}
print $array_paging[\'next_link\'] .\">>></a>\";
// The above exemple print somethings like:
// Results 1 to 20 of 597 <<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>>
// Of course you can now play with array_row_paging in order to print
// only the results you would like...
// Now go on with the rest of you page...
// Select only fields needed according to paging
$sql2 = \"Select * FROM my_table ORDER BY id \"
.\"LIMIT $int_cur_position, $int_num_result\";
?>
Hinweis
: Das lesen des Artikels Pager Klasse
- listings ID: 646
auf Dreamcodes,
sowie Link Verweise auf Internetseiten
fremder Anbieter erfolgen auf eigene Gefahr. Dreamcodes
haftet nicht für Schäden, die aus der Verwendung des
Inhaltes der Artikel erfolgen könnten. Schadenersatzansprüche, aus welchem
Rechtsgrund auch immer, sind ausgeschlossen !
Live Statistik
Datum: 21.11.2024
Uhrzeit: 21:21 Uhr
Online: 22 User
User heute: 25058
User allgem.: 35307886