- Home
- Categorie
- Coding e Sistemistica
- PHP
- paginazione 10x10
-
paginazione 10x10
ciao a tutti...ho trovato uno scripting di paginazione che ho capito e che sto usando...funziona tutto solo che ora in una tabella ho più di 100 records e usando questo scripting nella numerazione mi appaiono tutti e non è molto elegante a vedersi per cui vorrei cosapere cosa aggiungere in modo tale che nella numerazione appaiono 10 numeri per volta in questo modo:
<< < 1 2 3 4 5 6 7 8 9 10 > >>
quindi poi quando arrivo a alla pagina 9 la numerazione varia così:
<< < 2 3 4 5 6 7 8 9 10 11 > >> e così via...
qui sotto lo scripting che sto usando:
<?php
$x_pag = 1;// Righe per pagina
$pageNum = 1; // Pagina iniziale di default
// Recupero il numero di pagina corrente.
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
// Uso mysql_num_rows per contare le righe presenti
// all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM curioso"));
// Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $all_pages; $page++)
{
if ($page == $pageNum)
{
$nav .= " $page ";
}
else
{
$nav .= " <a href="$self?page=$page">$page</a> ";
}
}
// Calcolo da quale record iniziare
$first = ($pageNum - 1) * $x_pag;// Recupero i record per la pagina corrente...
// utilizzando LIMIT per partire da $first e contare fino a $x_pag
$rs = mysql_query("SELECT * FROM curioso c, immagini i WHERE c.id_img = i.id LIMIT $first, $x_pag");
$nr = mysql_num_rows($rs);
if ($nr != 0){
for($x = 0; $x < $nr; $x++){
$row = mysql_fetch_assoc($rs);
$immagini = $row['image'];// stampo i records
echo " //istruzioni "//creazione dei link next e prev
// e il link per andare direttamente in ultima pagina
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href="$self?page=$page">[Precedente]</a> ";$first = " <a href="$self?page=1">[Prima Pagina]</a> ";
}
else
{
$prev = ' ';
$first = ' ';
}if ($pageNum < $all_pages)
{
$page = $pageNum + 1;
$next = " <a href="$self?page=$page">[Prossima]</a> ";$last = " <a href="$self?page=$all_page">[Ultima Pagina]</a> ";
}
else
{
$next = ' ';
$last = ' ';
}
//Stampa i link di navigazione
echo "<table border='0' align='center' cellpadding='5' cellspacing='2' class='database'><tr>";
echo "<td>" . $first . "</td><td>" . $prev . "</td><td>" . $nav . "</td><td>" . $next . "</td><td>". $last . "</td>";
echo "</tr></table>";
?>grazie e buone feste!!!!!!!
-
ancora qui...ho trovato u secondo script per riuscire a far apparire nella paginazione un max di 10 link per volta e ho tentato di metterli insieme in questo modo:
<?php
$x_pag = 1;// Righe per pagina
$pageNum = 1; // Pagina iniziale di default
// Recupero il numero di pagina corrente.
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
// Uso mysql_num_rows per contare le righe presenti
// all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM venezia z, immagini i WHERE z.img_id = i.id LIMIT 1, 58"));
// Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $all_pages; $page++)
{
if ($page == $pageNum)
{
$nav .= " $page ";
}
else
{
$nav .= " <a href="$self?page=$page">$page</a> ";
}
}// Calcolo da quale record iniziare
$first = ($pageNum - 1) * $x_pag;
function pagination_3($all_pages,$pageNum,$webpage){
//imposto la mia $webpage come parametro formale$pagination = "";
if($all_pages!=1){
if($pageNum>'1')
{
$pagination.="<a href=".$webpage."?page=1><small>prima</small></a>
<a href=".$webpage."?page=".($page-1).">Prev</a>";
}//Impostiamo il massimo numero di links di partenza da visualizzare nella pagina. $maximum_links = 10; //Se sono necessarie meno pagine rispetto al numero massimo if($all_pages<=$maximum_links) { //Il numero massimo di links che occorreranno saranno pari al numero totale di pagine + 1 $maximum_links = $all_pages+1; } //Se ne sono necessarie di piu, allora: else{ //$maximum_links +1 $maximum_links=$maximum_links+1; if($pageNum>=$maximum_links){ $maximum_links=$pageNum+1; } } for ($i=1;$i<$maximum_links;$i++) { if($i==$pageNum){ $pagination.="<a>".$i."</a>"; } else{ $pagination.= "<a href=".$webpage."?page=".$i.">".$i."</a>"; } } //next e ultima pagina; if(($page >="1")&&($pageNum!=$all_pages)){ $pagination.= "<a href=".$webpage."?page=".($pageNum+1).">Next</a> <a href=".$webpage."?page=".$all_pages."><small>ultima</small></a>"; } } else{ $pagination.=""; } return($pagination);
}
//il risultato di questa paginazione è il seguente :
//prima PREV 1 2 3 4 5 6 7 8 9 10 Next ultima
echo $pagination . "<br /><br />";
?>ma nella riga di stampa echo $pagination . "<br /><br />"; mi dà questo errore
undefined variable: pagination in......
perchè non funziona????
grazie