Ricordo anni fa quando ho iniziato a scrivere codice PHP e MySQL, quanto ero eccitato quando ho ricevuto le informazioni da un database per essere visualizzato in un browser web.
Per qualcuno che ha poche conoscenze di database e programmazione, vedere quelle righe della tabella che appaiono sullo schermo in base al codice che ho scritto (okay, quindi ho copiato un esempio da un libro - non dividiamo i capelli) mi ha dato un high trionfante. Forse non ho compreso appieno tutta la magia al lavoro, ma quel primo successo mi ha spronato a progetti più grandi e migliori.
Mentre il mio livello di esuberanza sui database potrebbe non essere lo stesso di una volta,
fin dal mio primo incontro "ciao mondo" con PHP e MySQL mi sono appassionato
sul potere di rendere le cose semplici e facili da usare.
Come sviluppatore, un problema che sto affrontando costantemente è quello di prendere una grande quantità di informazioni e renderla facile da digerire. Sia che si tratti di una lista di clienti di una grande azienda o di un catalogo personale di mp3, doversi sedere e fissare file su file su file di dati può essere scoraggiante
e frustrante. Cosa può fare un buon sviluppatore? paginare!
Se stai cercando una soluzione rapida, c'è una grande collezione di script di impaginazione e di aiuti su Envato Market.
Questa classe di impaginazione PHP è davvero utile. Può essere implementato con qualsiasi motore di database supportato da PHP, è molto facile da personalizzare e implementare, supporta due display di default, ha schemi di progettazione multicolor e altro.
L'impaginazione è essenzialmente il processo di prendere una serie di risultati e di diffusione
loro fuori dalle pagine per renderli più facili da vedere.
Ho capito subito che se avessi avuto 5000 righe di informazioni da mostrare non solo
sarebbe un mal di testa per qualcuno a cercare di leggere, ma la maggior parte dei browser avrebbe preso
un'eternità di Internet (cioè più di circa cinque secondi) per visualizzarla.
Per risolvere ciò, codificherei varie istruzioni SQL per estrarre blocchi di dati, e se lo fossi
di buon umore potrei anche inserire un paio di pulsanti "successivo" e "precedente".
Dopo un po ', dovendo rilasciare questo codice in ogni progetto simile e personalizzare
per adattarsi è diventato vecchio. Veloce. E come ogni bravo sviluppatore sa, la pigrizia genera inventiva
o qualcosa di simile. Così un giorno mi sono seduto e ho deciso di inventare un semplice,
classe PHP flessibile e facile da usare che farebbe automaticamente il lavoro sporco
me.
Una breve parola su di me e sulle lezioni di PHP. Non sono un mago orientato agli oggetti. In effetti, a malapena
mai usare la roba Ma dopo aver letto alcuni esempi di OOP e tutorial, e alcuni
semplici esempi di prove ed errori, ho deciso di dargli un vortice e tu sai cosa?
Funziona perfettamente per l'impaginazione. Il codice usato qui è scritto in PHP 4 ma lo farà
lavoro in PHP 5.
Devo amare MySQL. Senza offesa per gli altri sistemi di database là fuori, ma per
io, tutto ciò di cui ho bisogno è MySQL. E una grande caratteristica di MySQL è che ti danno un po '
database di esempio gratuiti con cui giocare su http://dev.mysql.com/doc/#sampledb.
Per i miei esempi, userò il database del mondo (~ 90k zippato) che contiene oltre
4000 dischi con cui giocare, ma la bellezza dello script PHP che creeremo è
che può essere utilizzato con qualsiasi database. Ora penso che possiamo essere tutti d'accordo sul fatto che se decidessimo
per non impaginare i nostri risultati ci ritroveremmo con qualcosa di molto lungo e poco maneggevole
risultati come il seguente:
(clicca per ingrandire, immagine ridicolmente lunga ~ 338k)
Quindi passiamo a suddividere i nostri dati in morsi facili da digerire come questo:
Bello non è? Una volta rilasciata la classe di impaginazione nel tuo codice, puoi farlo
trasforma rapidamente e facilmente un enorme insieme di dati in pagine di facile navigazione
solo poche righe di codice. Veramente.
Questo esempio sarà composto da due script, la classe di impaginatore riutilizzabile e il file di indice che visualizzerà gli elementi della tabella e i controlli.
La classe di impaginatore avrà solo due metodi e il costruttore, lo costruiremo gradualmente spiegando ogni passo mentre andiamo avanti.
Questa definizione imposta solo le variabili membro richieste dall'impaginatore, poiché questa è una classe helper ed è destinata solo all'impaginazione, si baserà su una connessione valida al server MySQL e una query già definita che aggiungeremo i parametri necessari per impaginare i risultati. Inizieremo con il metodo del costruttore.
_conn = $ conn; $ this -> _ query = $ query; $ rs = $ this -> _ conn-> query ($ this -> _ query); $ this -> _ total = $ rs-> num_rows;
Abbastanza semplice, vero? Questo metodo imposta solo la connessione al database dell'oggetto e la query necessaria, dopo di che calcola il numero totale di righe recuperate da quella query senza limiti né salta parametri, questo totale è necessario per creare i collegamenti per l'impaginatore.
Si noti che per semplicità non stiamo eseguendo il controllo degli errori o qualsiasi altra convalida dei parametri dati, ma in un'applicazione reale i controlli saranno necessari.
Recupero dei risultati
Ora creiamo il metodo che impaginerà effettivamente i dati e restituirà i risultati.
_limit = $ limit; $ this -> _ page = $ page; if ($ this -> _ limit == 'all') $ query = $ this -> _ query; else $ query = $ this -> _ query. "LIMITE". (($ this -> _ page - 1) * $ this -> _ limit). ", $ this -> _ limit"; $ rs = $ this -> _ conn-> query ($ query); while ($ row = $ rs-> fetch_assoc ()) $ results [] = $ row; $ result = new stdClass (); $ result-> page = $ this -> _ page; $ result-> limit = $ this -> _ limit; $ result-> total = $ this -> _ total; $ result-> data = $ results; ritorno $ risultato;Analizziamo questo passo alla volta, prima impostiamo i parametri limite e di pagina, che per impostazione predefinita sono impostati rispettivamente su 10 e 1. Quindi controlliamo se l'utente richiede un dato numero di righe o tutte, basandoci su questo e sul parametro della pagina che impostiamo
LIMITE
parametro della query, il "- 1" della pagina tiene conto del fatto che stiamo avviando le pagine in 1 anziché in 0.Dopo questo, valutiamo semplicemente la query e otteniamo i risultati, infine creiamo un nuovo oggetto risultati che contiene il limite, la pagina e i parametri totali della query eseguita, nonché i dati per ciascuna delle righe recuperate.
Visualizzazione dei collegamenti di impaginazione
Ora scriviamo il metodo usato per ottenere i collegamenti di paginazione.
_limit == 'all') return "; $ last = ceil ($ this -> _ total / $ this -> _ limit); $ start = (($ this -> _ page - $ links)> 0)? $ this -> _ pagina - $ link: 1; $ end = (($ this -> _ pagina + $ link) < $last ) ? $this->_page + $ links: $ last; $ html = '
Questo è un metodo piuttosto lungo, qualcosa come 34 linee di codice, quindi ora spieghiamo cosa sta succedendo in questo metodo.
Questo è tutto ciò che c'è in Paginator.class, ovviamente potremmo aggiungere setter e getter per la connessione al database, il limite, la pagina, la query e i parametri totali, ma per semplicità lo manterremo in questo modo.
Ora creeremo il file responsabile dell'uso della classe Paginator e della visualizzazione dei dati, quindi prima lascia che ti mostri l'HTML di base.
Impaginazione PHP Impaginazione PHP
Città Nazione Continente Regione