Sun 21 Jan 2007
Daca aveti un website care foloseste baze de date, probabil ca aveti nevoie si de afisarea informatiilor pe mai multe pagini printr-o modalitate simpla si care sa poata fi usor implementata pentru orice caz.
De ce avem nevoie de paginare?
Sa ne inchipuim ca in site-ul nostru avem o sectiune care afiseaza produse din baza de date sub forma unui listing. Din motive de estetica si ergonomie insa, nu vom putea afisa toate produsele pe aceeasi pagina. De aceea, este o idee buna sa impartim rezultatul in mai multe pagini.
Descrierea sistemului
Paginarea reprezinta, de fapt, impartirea unui mare numar de date in mai multe pagini. Navigarea in aceste pagini se va face prin intermediul unor linkuri afisate sub forma:
Pima pag Precedenta 1 2 3 4 5 Urmatoarea Ultima pag
In scop didactic, vom considera ca sistemul nostru trebuie sa genereze paginarea pentru afisarea unui numar foarte mare de produse dintr-o baza de date.
Ganditi-va ca numarul total de pagini este mai mare decat 20. Pentru estetica in afisare, ar fi o idee buna sa afisam doar un numar din acestea in functie de pagina curenta. Astfel, in partea stanga si dreapta de pagina curenta vom avea, sa zicem, maxim 5 linkuri.
Sistemul pe care il voi prezenta in continuare are urmatoarele particularitati:
- poate fi folosit pentru orice caz de paginare
- utilizeaza o functie care poate fi portata pentru orice alta aplicatie
- functia va returna un array pe care il vom putea prelucra ulterior
- poate fi folosita in cazul in care utilizam un sistem “template engine” (gen Smarty)
Algorim
Pentru inceput sa evidentiem variabilele care intervin in paginare:
- pagina curenta (de obicei preluata prin $_GET)
- numarul de produse afisate pe o pagina
- numarul total de produse
- numarul total de pagini
- numarul maxim pe linkuri afisate in stanga/dreapta paginii curente
Ne conectam la BD
Efectuam o interogare asupra BD pentru a afla numarul total de produse
Calculam numarul total de pagini in functie de numarul total de produse si numarul de produse care se afiseaza pe pagina.
Construim functia care se va ocupa de generarea propriu zisa a paginarii. Aceasta functie va returna un array care va contine textul si url-ul fiecarui element din paginare.