![]() |
|||||
Tutorial PHP | |||||
|
Home |
Tutorial PHP |
Art. # 83
Paginazione con PHP e MySQL
Il sistema della paginazione consiste nel mostrare un certo numero di risultati di una query per pagina a partire da "pagina 1", muovendosi poi verso "pagina 2", "pagina 3" e cosi via; il suo scopo è sia quello di risparmiare risorse del database (essendo una query su centinaia o migliaia di record molto dispendiosa da gestire), sia per diminuire i tempi di caricamento di una pagina, sia per generare un numero superiore di pagine viste. Affrontiamo dunque la paginazione con PHP e MySQL. Si crei un database con le seguenti caratteristiche: Server: nome_server Username: username Password: password Database: nome_database Tabella: nome_tabella Campo: nome_campo (Varchar 50)Naturalmente è possibile creare il database sul proprio server MySQL, sfruttando le proprie credenziali per l'accesso; si popoli poi la tabella con una serie di dati di prove, generando almeno una ventina di record in modo che, effettuando una paginazione per 5 record, compaiano almeno 4 o 5 pagine d navigare. Appena tutto pronto, creare il file paginazione.php e corredarlo del seguente codice PHP:
<?
$cn = mysql_connect("nome_server", "username", "password");
mysql_select_db("nome_database", $cn);
$pag = $_GET["pag"];
if (isset($pag) == false || is_numeric($pag) == false || $pag < 1)
{
$pag = 1;
}
$fine = 5;
$inizio = ($pag - 1) * $fine;
$sql = "SELECT * FROM nome_tabella LIMIT " . $inizio . ", " . $fine;
$query = mysql_query($sql, $cn);
$quanti = mysql_num_rows($query);
if ($quanti == 0)
{
echo "Nessun record!";
}
else
{
for($x=0; $x<$quanti; $x++)
{
$rs = mysql_fetch_row($query);
$nome_campo = $rs[0];
?>
<p><?echo $nome_campo;?></p>
<?
}
}
$query = mysql_query("SELECT * FROM nome_tabella", $cn);
$quanti = mysql_num_rows($query);
$intero = $quanti / $fine;
?>
<p>Pagina <?echo $pag;?> di <?echo $intero;?></p>
<p>
<?
for($x=1; $x<$intero+1; $x++)
{
if ($x == $pag)
{
?>
<b><?echo $x;?></b> |
<?
}
else
{
?>
<a href="paginazione.php?pag=<?echo $x;?>"><?echo $x;?></a> |
<?
}
}
?>
</p>
<?
mysql_close($cn);
?>
Il codice è apparentemente complesso ma in realtà è davvero semplice. Il cuore dello script nasce dall'utilizzo dell'istruzione LIMIT di MySQL, il cui scopo è quello di limitare il numero di record estratti dalla query, solo che, pagina per pagina, i valori da passare a LIMIT come inizio e fine della limitazione dobbiamo calcolarli dinamicamente. La prima cosa da fare è recuperare in querystring il numero di pagina e lo facciamo memorizzandolo in una variabile e controllando che sia numerico o comunque valorizzato, altrimenti lo valorizziamo per default come "pagina 1":
$pag = $_GET["pag"];
if (isset($pag) == false || is_numeric($pag) == false || $pag < 1)
{
$pag = 1;
}
A questo punto impostiamo l'inizio e la fine della limitazione della query: $fine = 5; // Numero di record da mostrare per pagina $inizio = ($pag - 1) * $fine; Non ci resta che scrivere la query: $sql = "SELECT * FROM nome_tabella LIMIT " . $inizio . ", " . $fine; La paginazione è fatta ma non finisce qui: dobbiamo creare il menu di navigazione tra le pagine, in modo da consentire all'utente di spostarsi tra le varie pagine e visualizzare gli altri record. Dopo aver rieseguito la query ed aver ricontato il numero totale di record, stavolta per intero senza il LIMIT, eseguiamo un semplice calcolo per individuare il numero totale di pagine entro cui navigare i record e lo facciamo con un semplicissimo calcolo: $intero = $quanti / $fine; A questo punto eseguiamo un ciclo e, sulla scorta del contatore del ciclo stesso, creiamo dinamicamente i link verso tutte le pagine, controllando il numero di pagina corrente onde non linkarla. Scritto in data 22/04/2008
|
Appunti PHP per categoriaGuida PHP Guida MySQL Tutorial PHP Tutorial MySQL Tips and Tricks Referenze Download Libreria ExtraNovità
Importare dati da CSV a MySQL
Interazione tra PHP ed Oracle
Differenza tra apici e doppi apici in PHP
Paginazione a colonne in PHP
Elenco delle variabili server del PHP
FCKeditor
MySQL Administrator
Backup di un database MySQL con phpMyAdmin
Paginazione con PHP e MySQL
MySQL LIMIT: Limitare il numero di record di una query
TagAJAX, Email, LAMP, Login, MS Access, MS Excel, MS Office, MS Word, PDF, phpMyAdmin, Statistiche, Upload, XML Corsi online
Corso PHP Altri corsi
Corso HTML Link utili
Contatore Gratis Siti amici
© 2008 Appunti PHP - A cura di Luca Ruggiero - Partita IVA 05564851219 -
Pubblicità |
Contatti
| | |||