sto elaborando una classe per la paginazione
vedi se ti è utile
paging.inc.php
codice:
<?
#-----------------------#
# made in bb69 world #
# version 1.0 #
# don't remove #
#-----------------------#
<?
class paging {
var $_max_links;
var $_per_page;
var $_page_field = "page";
var $_tot_records_field = "total_records";
var $_page = 1;
var $_tot_records = false;
var $_num_pages;
var $_url;
var $_url_sep = "?";
var $_flds_sep = "&";
var $_flds_eq = "=";
var $_my_menu;
var $_my_limit;
var $_get_values = array();
function paging($tot_records = false, $per_page = 10, $max_links = 5) {
$this->_per_page = $per_page;
$this->_max_links = $max_links;
$this->set_get_fields();
$this->_tot_records = $tot_records !== false ? $tot_records : ($this->_tot_records === false || $this->_tot_records <= 0 ? 1 : $this->_tot_records);
$this->_get_values[] = $this->_tot_records_field.$this->_flds_eq.$this->_tot_records;
$this->_num_pages = ceil($this->_tot_records/($this->_per_page > 0 ? $this->_per_page : 1));
$this->_page = $this->_page > $this->_num_pages ? $this->_num_pages : $this->_page;
$this->_my_limit = "LIMIT ".($this->_page-1)*$this->_per_page.",".$this->_per_page;
$this->_url .= $this->_url_sep.implode($this->flds_sep, $this->_get_values);
$this->build_menu();
}
function set_get_fields() {
list($this->_url, $querystring) = explode($this->_url_sep, $_SERVER['REQUEST_URI']);
$_get_values = explode($this->_flds_sep, $querystring);
foreach($_get_values as $_get_value) {
list($key, $val) = explode($this->_flds_eq, $_get_value);
if($key == $this->_tot_records_field) {
$this->_tot_records = intval($val) > 0 && $this->_tot_records === false ? intval($val) : $this->_tot_records;
} else if($key == $this->_page_field) {
$this->_page = intval($val) > 0 ? intval($val) : $this->_page;
} else {
if($key != $this->_page_field && $key != $this->_tot_records_field && trim($key) != '') {
$this->_get_values[] = $key.$this->_flds_eq.$val;
}
}
}
}
function build_menu() {
$this->_my_menu = "Pagina:";
$this->_my_menu .= " ".($this->_page > 1 ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=1"."\" title=\"Vai alla prima pagina\">||<</a>" : "||<");
$this->_my_menu .= " ".($this->_page > $this->_max_links ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".($this->_page-$this->_max_links)."\" title=\"Vai alle {$this->_max_links} pagine precedenti\">|<</a>" : "|<");
$this->_my_menu .= " ".($this->_page > 1 ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".($this->_page-1)."\" title=\"Vai alla pagina precedente\"><</a>" : "<");
$start = 1 + floor(($this->_page-1)/$this->_per_page)*$this->_per_page;
$end = $start + $this->_max_links;
for($page_val = $start; $page_val < $end; ++$page_val) {
if($page_val > $this->_num_pages) {
break;
}
$this->_my_menu .= " "."[ ".($page_val == $this->_page ? "" : "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".$page_val."\" title=\"Vai a pagina $page_val\">");
$this->_my_menu .= $page_val;
$this->_my_menu .= ($page_val == $this->_page ? "" : "</a>")." ]";
}
$this->_my_menu .= " ".($this->_page < $this->_num_pages ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".($this->_page+1)."\" title=\"Vai alla pagina successiva\">></a>" : ">");
$this->_my_menu .= " ".($this->_page <= ($this->_num_pages-$this->_max_links) ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".($this->_page+$this->_max_links)."\" title=\"Vai alle {$this->_max_links} pagine successive\">>|</a>" : ">|");
$this->_my_menu .= " ".($this->_page < $this->_num_pages ? "<a href=\"".$this->_url.$this->_flds_sep.$this->_page_field."=".$this->_num_pages."\" title=\"Vai all'ultima pagina\">>||</a>" : ">||");
}
}
?>
codice:
include "paging.inc.php";
// connessione db
// selezione db
if(isset($_GET['total_records'])) {
$tot = intval($_GET['total_records']);
} else {
$result = mysql_query("SELECT COUNT(1) FROM $tabella");
list($tot) = mysql_fetch_row($result);
}
$p = new paging($tot);
$result = mysql_query("SELECT campo1, campo2 FROM $tabella {$p->_my_limit}") or die(mysql_error());
echo $p->_my_menu."
";
while(list($campo1, $campo2) = mysql_fetch_row($result)) {
echo $campo1." ".$campo2."
\n";
}
mysql_close();
total_records e page sono parametri $_GET riservati