Îmi amintesc de ani în urmă când am început să codificăm în PHP și MySQL, cât de emoționată am fost prima dată când am primit informații dintr-o bază de date pentru a apărea într-un browser web.
Pentru cineva care avea puține cunoștințe de bază de date și de programare, văzând acele rânduri de tabelă care apar pe ecran pe baza codului pe care l-am scris (bine, așa că am copiat un exemplu dintr-o carte - să nu împărțim firele de păr) mi-a dat un maxim triumfător. Poate că nu am înțeles pe deplin toată magia la lucru, dar acest prim succes mi-a impulsionat proiecte mai mari și mai bune.
În timp ce nivelul meu de exuberanță asupra bazelor de date poate să nu fie același ca și când a fost,
încă de la prima mea întâlnire "hello world" cu PHP și MySQL am fost încurcată
cu privire la puterea de a face lucrurile simple și ușor de utilizat.
Ca dezvoltator, o problemă cu care mă confrunt constant este să iau o mulțime de informații și să fie ușor de digerat. Fie că este vorba de o listă a clienților mari sau de un catalog personal, trebuie să fie descurajată dacă trebuie să stați și să priviți la rânduri pe rânduri pe rânduri de date
și frustrant. Ce poate face un bun dezvoltator? Pagina!
Dacă sunteți în căutarea unei soluții rapide, există o mare colecție de scripturi de paginare și de ajutoare de la Envato Market.
Această clasă de paginare PHP este foarte utilă. Poate fi implementat cu orice motor bazat pe baze de date PHP, este foarte ușor de personalizat și implementat, suportă în mod implicit două afișaje, are scheme de proiectare multicolore și multe altele.
Pagination este, în esență, procesul de a lua un set de rezultate și de a răspândi
le pe pagini pentru a le face mai ușor de văzut.
Mi-am dat seama de timpuriu că dacă aș avea 5000 de rânduri de informații pentru a afișa nu numai
ar fi o durere de cap pentru cineva să încerce și să citească, dar majoritatea browserelor ar lua
o eternitate pe internet (adică mai mult de aproximativ cinci secunde) pentru ao afișa.
Pentru a rezolva aceasta, aș codifica diverse instrucțiuni SQL pentru a scoate bucăți de date și dacă aș fi fost
într-o bună dispoziție, aș putea să arunc câteva butoane "viitoare" și "anterioare".
După un timp, trebuie să renunți la acest cod în orice proiect similar și să personalizați
pentru a se potrivi vechi. Rapid. Și, după cum știe fiecare dezvoltator bun, lenea reproduce inventivitatea
sau ceva de genul ăsta. Deci, într-o zi m-am așezat și am decis să vină cu un simplu,
flexibilă și ușor de folosit clasa PHP care ar face automat munca murdară
pe mine.
Un cuvânt rapid despre mine și clasele PHP. Eu nu sunt un obiect orientat pe obiect. De fapt, cu greu
utilizați vreodată lucrurile. Dar după ce am citit câteva exemple și tutoriale ale OOP, și altele
exemple simple de încercare și eroare, am decis să-i dau un vârtej și tu știi ce?
Funcționează perfect pentru paginare. Codul folosit aici este scris în PHP 4, dar va fi
lucrează în PHP 5.
Trebuie să iubiți MySQL. Nu există o ofensă pentru celelalte sisteme de baze de date de acolo, ci pentru
eu, tot ce am nevoie este MySQL. Și o caracteristică extraordinară a MySQL este că vă dau câteva
libere de baze de date pentru a putea juca la http://dev.mysql.com/doc/#sampledb.
Pentru exemplele mele, voi folosi baza de date mondială (~ 90k zip) care conține peste
4000 de înregistrări de jucat, dar frumusețea scriptului PHP pe care o vom crea este
că poate fi folosit cu orice bază de date. Acum cred că toți suntem de acord că dacă am fi decis
nu pentru a paginiza rezultatele noastre că vom ajunge cu unele foarte lungi și greoaie
rezultate ca următoarele:
(click pentru dimensiune completă, imagine ridicol de lungă ~ 338k)
Deci, vă permite să ajungeți la ruperea datelor noastre pentru a digera usor astfel:
Frumoasă nu-i așa? Odată ce renunțați la clasa de paginare în codul dvs., puteți
rapid și ușor transforma un set imens de date în pagini ușor de navigat cu
doar câteva linii de cod. Într-adevăr.
Acest exemplu va fi compusă din două scripturi, clasa paginator refolosibile și fișierul index care va afișa elementele de tabelă și comenzile.
Clasa paginator va avea doar două metode, iar constructorul, vom construi explicând treptat fiecare pas în timp ce mergem înainte.
Această definiție este doar setarea variabilelor membranare cerute de paginator, deoarece aceasta este o clasă helper și este destinată paginării numai că se va baza pe o conexiune validă la serverul MySQL și o interogare deja definită pe care vom adăuga parametrii necesari pentru paginarea rezultatelor. Vom începe cu metoda constructorului.
_conn = $ conn; $ this -> _ interogare = $ interogare; $ rs = $ this -> _ conn-> interogare ($ this -> _ interogare); $ acest -> _ total = $ rs-> num_rows;
Destul de simplu? Această metodă stabilește doar conexiunea bazei de date a obiectului și interogarea necesară, după care calculează numărul total de rânduri extras de acea interogare fără nici o limită sau să ignore parametrii, acest total fiind necesar pentru a crea legăturile pentru paginator.
Rețineți că pentru simplitate nu facem verificări de eroare sau orice altă validare a parametrilor, dar într-o aplicație din lumea reală aceste verificări vor fi necesare.
Recuperarea rezultatelor
Acum, să creăm metoda care va paginiza datele și va returna rezultatele.
_limit = $ limit; $ this -> _ page = $ pagina; dacă ($ this -> _limit == 'toate')) $ query = $ this -> _ interogare; altceva $ query = $ this -> _ interogare. "LIMIT". (($ această -> _ pagină - 1) * $ this -> _ limită). ", $ this -> _ limit"; $ rs = $ this -> _ conn-> interogare ($ interogare); în timp ce ($ row = $ rs-> fetch_assoc ()) $ results [] = $ rând; $ result = noua stdClass (); $ result-> page = $ this -> _ pagina; $ result-> limit = $ this -> _ limit; $ rezultat-> total = $ acest -> _ total; $ result-> data = $ results; returneaza rezultatul $;Să analizăm acest pas la un moment dat, mai întâi setăm parametrii de limită și de pagină, care în mod prestabilit sunt setați 10 și respectiv 1. Apoi, verificăm dacă utilizatorul cere un număr dat de rânduri sau toate, bazându-se pe acesta și parametrul de pagină pe care l-am setat
LIMITĂ
parametrul interogării, "- 1" a paginii ia în considerare faptul că pornim paginile în 1 în loc de 0.După aceasta, pur și simplu evaluăm interogarea și obținem rezultatele, în final creăm un obiect de rezultate noi care conține limita, pagina și parametrii totali ai interogării executate, precum și datele pentru fiecare dintre rândurile extrase.
Afișarea legăturilor de paginare
Acum, să scriem metoda folosită pentru a obține legăturile de paginare.
_limit == 'tot') return "; $ last = ceil ($ this -> _ total / $ this -> _ limit); $ start = ($ this -> _ page - $ links) -> _ pagină - $ link: 1; $ end = (($ this -> _ page + $ links) < $last ) ? $this->_page + $ links: $ last; $ html = '
Aceasta este o metodă destul de lungă, ceva de genul 34 de linii de cod, deci acum să explicăm ce se întâmplă în această metodă.
Asta e tot ce este la Paginator.class, desigur, am putea adăuga setteri și getters pentru conexiunea bazei de date, limită, pagină, interogare și parametri totali, dar pentru simplitate o vom păstra așa.
Acum vom crea fișierul responsabil cu utilizarea clasei Paginator și afișarea datelor, așa că mai întâi să vă arăt că HTML-ul de bază.
PHP Pagination PHP Pagination
Oraș Țară Continent Regiune