E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

Cum sa paginezi date in PHP

08.03.2009
Cum sa paginezi date in PHP

O problema ce trebuie rezolvata destul de frecvent este redarea unui set de date de dimensiuni mari. Fie ca este vorba de lista de clienti a unei mari companii sau un playlist cu mp3-uri, afisarea tutoror inregistrarilor pe o singura pagina nu este de dorit. Ce iti ramane de facut? Pagineaza.

Total vizualizari: 8752 8752 afisari   |   Comentarii  1   |   Rating   |   (3 voturi)   |   Timp necesar: 40 min 40 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Sursa:  www.nettuts.com  
Autor:  Jason
Download
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 12 3
comenteaza printeaza

Utilizarea clasei Paginator

In acest punct, probabil ca te intrebi cum se utilizeaza clasa descrisa pana acum. Pasii pe care trebuie sa ii parcurgi sunt urmatorii:

  • mai intai, include clasa de paginatie in pagina in care vrei sa o folosesti. Poti utiliza require_once pentru ca te asigura ca aceasta clasa va fi inclusa o singura data si daca nu este gasita, va returna o eroare fatala.
  • Apoi trebuie sa te conectezi la baza de date.
  • In final, interogheaza baza de date pentru a afla numarul total de inregistrari pe care trebuie sa le afisezi.

Pasul trei este important pentru ca paginatorul sa stie cu cate inregistrari va lucra. Interogarea poate fi la fel de simpla ca SELECT COUNT(*) FROM table WHERE...

Aproape ca ai terminat. Acum trebuie sa creezi un nou obiect Paginator, sa apelezi cateva metode si sa setezi cateva optiuni. Odata ce ai obtinut numarul total de elemente la pasul trei, poti adauga urmatorul cod in fisierul tau php:

<?php
$pages = new Paginator;   
$pages->items_total = $num_rows[0];   
$pages->mid_range = 9;   
$pages->paginate();   
echo $pages->display_pages();  
?>

Dupa cum poti observa, scriptul de mai sus creeaza un obiect de tip Paginator si initializeaza proprietatile acestuia.

A doua linie preia numarul total de inregistrari si il atribuie proprietatii items_total. $num_rows este un array care contine rezultatul interogarii SQL ( un rezultat similar poti obtine si cu functia PHP mysql_num_rows).

A treia linie indica paginatorului numarul de linkuri pe care trebuie sa le afiseze. Acest numar ar trebui sa fie impar si mai mare decat trei pentru ca afisarea sa fie simetrica. Spre exemplu, daca variabila mid_range este setata la 7, avem 100 de pagini in total, iar pagina curenta este 50 si 100, valorile afisate vor fi 47, 48, 49, 50, 51, 52 si 53. Daca utilizatorul se afla la capetele intervalului de paginatie (pe primele pagini sau pe ultimele pagini), seria de linkuri se va muta in partea opusa. Spre exemplu, daca utilizatorul este la pagina 99 din 100, scriptul va genera linkuri pentru paginile 94, 95, 96, 97, 98, 99 si 100.

A patra linie apeleaza functia paginate, iar a cincea linie afiseaza codul HTML generat.

Daca vrei sa permiti utilizatorului sa schimbe numarul de inregistrari pe pagina sau sa treaca direct la o anumita pagina poti adauga acest cod in fisierul tau php:

<?php
echo "<span style="\"margin-left:25px\""> ". $pages->display_jump_menu()   
 $pages->display_items_per_page() . "</span>";  
?>

Daca te opresti aici si executi scriptul, vei vedea linkurile pentru pagini, dar nu si inregistrarile din baza de date, deoarece nu ai citit inca subsetul specific de inregistrari pe care il doresti. Pentru a face asta, trebuie sa creezi un query SQL utilizand limitele calculate de clasa Paginator. De exemplu, interogarea ar putea arata astfel:

SELECT title FROM articles 
    WHERE title != '' 
    ORDER BY title ASC $pages->limit

Variabila $pages->limit este foarte importanta pentru a limita numarul de inregistrari citite din baza de date. De exemplu, daca te afli pe pagina 7 si ai 25 de elemente pe pagina, atunci $pages->limit ar trebui sa aiba valoarea LIMIT 150,25.

Odata ce executi query-ul, poti afisa orice inregistrare doresti. Daca vei sa afisezi din nou linkurile de paginatie dupa setul de inregistrari, trebuie doar sa apelezi display_pages.

<?phpecho $pages->display_pages();  
?>

Mai multe caracteristici

Ca un bonus, clasa de paginatie adauga butoanele "Inapoi", "Inainte" si "Toate". Acestea sunt dezactivate atunci cand te afli pe ultima sau pe prima pagina. Daca vrei, le poti spune vizitatorilor ca vizualizeaza pagina x din y, introducand urmatorul cod:

<?php
echo "Pagina $pages->current_page din $pages->num_pages";  
?>

Stilizarea

In final esti liber sa prelucrezi aspectul butoanelor de paginatie. Cu exceptia butonului pentru pagina curenta, toate celelalte butoane pentru pagini au aplicata clasa CSS "paginate", in timp ce butonul pentru pagina curenta are aplicata clasa "current". Butoanele "Inapoi" si "Inainte" vor avea de asemenea aplicata in mod automat clasa "inactive" atunci cand nu sunt folosite, deci le poti stiliza cum doresti. Folosirea acestor trei clase impreuna cu altele de CSS iti ofera o gama variata de posibilitati de stilizare.

Stilizat:

Nestilizat:

Acoperirea

Dupa cum ai vazut, cu doar cateva linii de cod poti transforma seturi mari de inregistrari in liste usor de utilizat si navigat. Poti vizualiza cateva exemple precum exemplul 1 si exemplul 2. .

Acceseaza linkul Download pentru a descarca sursa pentru clasa Paginator.

Pagina:
« 12 3
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(3 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (1) spune-ti parerea
adrian , Duminica, 22 Martie 2009
#1

Este excelenta ideea ta .Chiar lucrez la o baza de date si aveam nevoie de asa ceva.Singura mea problema este ca nu-mi prea iese cu "pasul 3"(eu fiind de altfel incepator in php),nu stiu cum si unde sa introduc COUNT.Ti-as ramane indatorat daca ai putea sa imi dai ceva sfaturi in problema asta.Oricum,iti multumesc pentru codul postat.

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5190
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5145
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4995
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4975
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4735
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Illustrator CSS Javascript Bridge HTML COREL DRAW Java JSON Lightroom MySQL RoR Verilog Fireworks Outlook SEO Python Powerpoint Word Action Script Dreamweaver Ruby on Rails Gimp XHTML Swift 3D XML Flash SWF Photoshop PSD Vista Excel StyleSheet Fotografie Sony Vegas AJAX PHP
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software