Paginazione dei dati

Applicazione di esempio

L'applicazione di esempio realizzata, scaricabile a questo link, si occupa di mostrare l'elenco dei comuni italiani, ordinati per nome e codice ISTAT (codice numerico univoco). I dati vengono prelevati da un'unica tabella, che è possibile creare e popolare utilizzando lo script SQL contenuto nell'archivio ZIP dell'applicazione. Nel nostro esempio mostreremo tutti i dati presenti nella tabella dei comuni, pertanto non ci saranno clausole WHERE nelle SELECT.

Il programma è costituito da 3 file: il template HTML, lo script principale che estrae i dati dal database e uno script contenente tre funzioni utili alla creazione dei link di navigazione. Questi saranno nella forma:

« 1...n-2 n-1 [n] n+1 n+2 ... N »

ovvero conterranno sempre un link alla prima e all'ultima pagina (1 e N). Inoltre conterranno l'indicazione della pagina corrente racchiusa tra parentesi quadre [n] e dei link alle pagine che precedono e seguono la pagina corrente. Il numero di questi link a pagine limitrofe sarà configurabile. Infine ci saranno anche dei link alla pagina precedente e successiva, indicati dai simboli « e ».

Iniziamo ad analizzare il codice dell'applicazione, partendo dal template HTML, riportato di seguito:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Elenco Comuni Italiani</title>
</head>
<body>
<h1>Elenco Comuni Italiani</h1>
<p><?php echo $link_paginazione?></p>
<table border="1">
    <tr>
        <th>COMUNE</th>
        <th>PROVINCIA</th>
        <th>REGIONE</th>
        <th>CAP</th>
        <th>PREFISSO TEL.</th>
        <th>CODICE COMUNE</th>
        <th>CODICE ISTAT</th>
    </tr>
    <?php foreach($elenco_comuni as $riga):?>
    <tr>
        <td><?php echo htmlentities($riga['comune'])?></td>
        <td><?php echo $riga['provincia']?></td>
        <td><?php echo $riga['regione']?></td>
        <td><?php echo $riga['cap']?></td>
        <td><?php echo $riga['prefisso']?></td>
        <td><?php echo $riga['cod_comune']?></td>
        <td><?php echo $riga['cod_istat']?></td>
    </tr>
    <?php endforeach ?>
</table>
<p><?php echo $link_paginazione?></p>
</body>
</html>

Come si può notare, il template HTML impiegato è davvero molto semplice. Il riempimento della tabella dei dati è affidato ad un ciclo foreach mentre l'HTML che costituisce i link di paginazione, riportati al di sopra ed al disotto della tabella, viene incluso nel template leggendo la variabile $link_paginazione, creata nello script PHP principale, riportato nella pagina seguente.

Pagine: precedente 1 2 34 5 ... 7

3 commenti

1 Roberta Roberta mercoledì 12 maggio 2010, ore 08:27
Ciao sto usando il tuo codice per fare la paginazione in un mio sito però ho dei problemi, non segnala nessun errore ma non compaiono i numeri linkabili di conseguenza non posso navigare tra le vaie pagine è come se non funzionasse la funzione paginazione eppure io ho fatto copia incolla del codice e l'ho adattato al mio sito cosa sbaglio?
2 Roberta Roberta mercoledì 12 maggio 2010, ore 09:47
nn metevo l'echo alla fine scusa tutto ok il codice è perfetto
3 stefana stefana sabato 15 gennaio 2011, ore 20:13
magnifico...funziona...solo una questione....se voglio limitare la paginazione solo a 30 records su 60 per esempio e che quindi nella visualizzazione vengono conteggiati solo i 30 ( a partire dal primo records...o anche nel caso si debba partire dal 10...a seconda dei dati che ho bisogno di visualizzare nella pagina) come devo fare???? quali parametri sono da correggere?????
Effettua l'accesso o registrati per inserire un commento