Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Come impaginare dati con PHP

by
Difficulty:IntermediateLength:LongLanguages:

Italian (Italiano) translation by Francesco (you can also view the original English article)

Mi ricordo anni fa quando ho iniziato a scrivere codice in PHP e MySQL, come è stato bello la prima volta che ho recuperato informazioni da un database per presentarle in un browser web.

Per qualcuno che aveva poche conoscenze di database e di programmazione, vedere quelle righe di tabella presentarsi sullo schermo grazie al codice che avevo scritto (ok ho copiato un esempio da un libro--non guardiamo il pelo nell'uovoi) mi ha dato una sensazione di trionfo. Posso non avere pienamente compreso tutta la magia al lavoro allora, ma quel primo successo mi spinse a progetti più grandi e migliori.

Mentre il mio livello di esuberanza sui database non può essere lo stesso che era una volta,
sin da quando il mio primo incontro 'hello world' con PHP e MySQL sono stato rapito
dal potere di fare le cose in modo semplice e facile da usare.

Da sviluppatore un problema che costantemente devo affrontare è prendere un ampio dataset di informazioni e renderlo facile da digerire. Che si tratti di lista di clienti di una grande azienda o un catalogo mp3 personale, stare a sedere e fissare le righe su righedi dati può essere scoraggiare 
e frustrante. Cosa può fare un buon sviluppatore? Impaginare!


1. Pagination

L'impaginazione è essenzialmente il processo di prenderedi un set di risultati e distribuirlo
su più pagine per facilitarne la visualizzazione.

example 1

Mi sono reso conto presto che se avessi 5000 righe di informazioni da visualizzare non solo
verrebbe un mal di testa a qualcuno per cercare di leggere, ma la maggior parte dei browser avrebbe bisogno
di un'eternità di Internet (cioè più di cinque secondi) per visualizzarla.

Per risolvere questo codice avrei potuto usare varie istruzioni SQL per estrarre blocchi di dati, e se fossi
di buon umore potrei anche gettare in un paio di pulsanti "avanti" e "indietro".
Dopo un po', dover rilasciare questo codice in ogni progetto simile e personalizzarlo
per farlo andare bene stava invecchiando. Veloce. E come ogni buon sviluppatore sa, la pigrizia genera inventiva
o qualcosa di simile. Così un giorno mi sono seduto e ho deciso di realizzare una semplice,
flessibile e facile da usare classe PHP che automaticamente faceva il lavoro sporco
per me.

Una parola veloce su di me e classi PHP. Io non sono un tipo orientato agli oggetti. In realtà, ho appena
usato qualche volta questa roba. Ma dopo aver letto alcuni esempi OOP e tutorial e alcuni
esempi di semplici tentativi ed errori, ho deciso di provarlo e sai una cosa?
Funziona perfettamente per l'impaginazione. Il codice utilizzato qui è scritto in PHP 4, ma 
funzionerà anche in PHP 5.


2. Il database

Devi amare MySQL. Senza offesa per gli altri sistemi di database là fuori, ma per
me, tutto quello che serve è MySQL. E una grande funzionalità di MySQL è che vi daranno alcuni
database di esempio gratuito per giocarci http://dev.mysql.com/doc/#sampledb.

Per i miei esempi, utilizzerò il database mondo (~90k zippato) che contiene oltre
4.000 record con cui giocare, ma la bellezza dello script PHP che creeremo è
che può essere utilizzato con qualsiasi database. Ora penso che possiamo tutti convenire che se abbiamo deciso
di non impaginare i risultati ci ritroveremmo con alcuni molto lunghi e ingombranti
risultati simili al seguente:

example 2

(Clicca per la completa, assurdamente lunga immagine ~ 338k)

Allora rspezzettiamo i nostri dati in modo che sia facile da digerire come questo:

example 3

Bello non è vero? Una volta che si sviluppa la classe di paginazione nel codice è possibile
rapidamente e facilmente trasformare un enorme insieme di dati in pagine facili da navigare con
solo poche righe di codice. Davvero.


3. Paginator

Questo esempio sarà composto da due script, la classe paginator riutilizzabile e il file di indice che visualizzerà la tabella degli elementi e i controlli.

Paginator.Class.php

La classe paginator avrà solo due metodi e il costruttore, la costruiremo gradualmente spiegando ogni passo man mano che andiamo avanti.

Questa definizione imposta solo delle variabili di classe richieste di paginator, poiché si tratta di una classe di supporto ed è destinato per l'impaginazione solo si baserà su una connessione valida al server MySQL e una query già definita a cui accoderemo i parametri necessari per impaginare i risultati. Inizieremo con il metodo del costruttore.


Abbastanza semplice giusto? Questo metodo imposta solo la connessione al database dell'oggetto e la necessaria query, dopodichè calcola il numero totale di righe recuperate dalla query senza alcun limite né parametri, questo totale è necessario per creare i collegamenti per l'impaginazione.

Si noti che per semplicità non stiamo facendo il controllo degli errori o qualsiasi altra convalida dei parametri specificati, ma in un'applicazione reale questi controlli saranno necessari.

Recupero dei risultati

Ora creiamo il metodo che andrà effettivamente ad impaginare i dati e restituire i risultati.

Analizziamo un passo alla volta, in primo luogo abbiamo impostato i parametri limit e page, che per impostazione predefinita sono impostati rispettivamente a 10 e 1. Poi controlliamo se l'utente sta richiedendo un determinato numero di righe o tutte, in base a questo e al parametro page abbiamo impostato il parametro LIMIT della query, il "- 1" della pagina sta prendendo in considerazione il fatto che stiamo iniziando dalle pagine a partire da 1 invece di 0.

Dopo questo dobbiamo semplicemente valutare la query e ottenere i risultati, infine creiamo un nuovo oggetto di risultati che contengono i parametri limit, page e total della query eseguita, nonché i dati per ciascuna delle righe recuperate.

Visualizzazione dei collegamenti di paginazione

Ora scriviamo il metodo utilizzato per ottenere i link di paginazione.

Questo è un metodo piuttosto lungo, qualcosa come 34 linee di codice, quindi ora andiamo a spiegare cosa sta succedendo in questo metodo.

  1. In primo luogo valuteremo se l'utente sta richiedendo un determinato numero di collegamenti o tutti, nel secondo caso dobbiamo semplicemente restituire una stringa vuota, poiché nessuna impaginazione è necessaria.
  2. Dopo questo calcoliamo l'ultima pagina in base al numero totale di righe disponibili e gli elementi richiesti per pagina.
  3. Poi prendiamo il parametro links che rappresenta il numero di collegamenti da visualizzare sotto e sopra la pagina corrente e calcoliamo il collegamento iniziale e finale da creare.
  4. Ora creiamo il tag di apertura per l'elenco e impostiamo la classe con il parametro di classe della lista e aggiungiamo il collegamento "pagina precedente", notate che per questo link controlliamo se la pagina corrente è la prima, e in questo caso, impostiamo la proprietà disabled del collegamento.
  5. A questo punto visualizziamo un collegamento alla prima pagina e un simbolo di puntini di sospensione nel caso che il collegamento di inizio non è il primo.
  6. Poi aggiungiamo il link avanti e indietro la pagina corrente in base ai parametri precedentemente calcolati di inizio e di fine, in ogni fase valutiamo la pagina corrente con il link alla pagina visualizzata e impostiamo di conseguenza la classe attiva.
  7. Dopo questo visualizziamo un altro simbolo di puntini di sospensione e il collegamento all'ultima pagina nel caso che il collegamento di fine non è l'ultimo.
  8. Infine visualizziamo il collegamento "pagina successiva" e impostiamo lo stato disattivato quando l'utente sta visualizzando l'ultima pagina, chiudiamo l'elenco e restituiamo la stringa HTML generata.

Questo è tutto il Paginator.class, naturalmente potremmo aggiungere setters e getters per la connessione al database, i parametri limit , page, query e total ma per semplicità lo terremo così.

4. Index.php

Ora creeremo il file responsabile dell'utilizzo della classe Paginator e visualizzeremo i dati, quindi, prima ti faccio vedere il codice HTML di base.

Abbastanza semplice, questo file mostra solo una tabella che verrà popolata con le informazioni recuperate dal database, si noti che questo esempio sto usando bootstrap per uno stile di pagina base.

Utilizzare l'impaginatore

Ora per fare uso della nostra classe Paginator aggiungiamo il seguente codice php nella parte superiore del documento.

Questo script è molto semplice, abbiamo appena richiesto la nostra classe Paginator, si noti che questo codice presuppone che questo file sia nella stessa directory del file index.php, se questo non è il caso si dovrebbe aggiornare il percorso di conseguenza.

Poi abbiamo creato la connessione al nostro database utilizzando la libreria MySQLi, recuperiamo i parametri di impaginazione dalla richiesta GET e impostiamo la query, poiché non si tratta di un articolo su MySQL o altro database non voglio entrare nei dettagli circa la connessione o la query utilizzata qui.

Infine creiamo l'oggetto Paginator e recuperiamo i risultati della pagina corrente.

Visualizzazione dei risultati

Ora per visualizzare i risultati ottenuti aggiungiamo il seguente codice nel body della tabella.

Qui stiamo semplicemente scorrendo i dati contenenti i record delle città e creando una riga di tabella per ciascuno di essi.

Link di paginazione

Ora per visualizzare i link di paginazione aggiungiamo il seguente codice sotto la tabella.

Al metodo createLinks di Paginator passiamo il parametro links ottenuto e la classe css per i link di paginazione utilizzati da bootstrap. Ecco il risultato della pagina creata.

Conclusione

Questo dovrebbe fornirvi tutto ciò che è necessario da sapere per ottenere una paginazione installata e funzionante nell'applicazione.

Non esitate a lasciare commenti, domande o commenti generali nel feed qui sotto!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.