Meniu Blog
Detalii vizitator
Dacă am dreptate dă-mi un like pe Facebook!
Caută cod poștal
Articole pe blog
Recomand
Creearea unui script de paginare în PHP
Oricine a făcut un website cu adăugare de conținut dinamic, cu siguranță s-a lovit de problema paginării datelor. Paginarea reprezintă împărțirea conținutului afișat, pe mai multe pagini. De ce vrem să facem asta? Răspunsul este simplu: Să ne imaginăm un blog cu 1000 de articole care trebuie să le afișăm. Dacă toate ar fi afișate pe o singură pagină, nu numai că ar fi dificil de vizualizat, dar majoritatea browserelor le-ar afișa cu o întârziere sesizabil de mare.
Pentru a întelege cât mai bine script-ul de mai jos, am adăugat comentarii pentru fiecare secțiune sau linie de cod folosită. Pentru a adapta script-ul la nevoile website-ului tău va trebui să modifici câteva date precum: user-ul, parola și numele bazei de date, numele tabelei, numărul de elemente afișate pe pagină.
Înainte de toate va trebui să facem conectarea și selectarea bazei de date pe care o folosim:
<?php
@mysql_connect("localhost","user_bd","parola_bd" ) or die();
@mysql_select_db("nume_bd" ) or die();
@mysql_set_charset("utf8" );
?>
Script-ul pentru paginare:
<?php
// selectăm articolele din baza de date
$query=mysql_query("SELECT COUNT(*) AS `num` FROM `nume_tabela_bd`" );
$result=mysql_fetch_assoc($query);
$nr_total_de_articole=$result['num']; // numărul total de articole care le-am găsit în baza de date
$nr_articole_pe_pagina=10; // aici definim numărul de articole afișate pe o pagină
$nr_de_pagini=ceil($nr_total_de_articole/$nr_articole_pe_pagina); // calculăm câte pagini vor fi în total
// dacă variabila p este setată și este de tip numeric atunci pagina curentă va lua valoarea variabilei p, altfel va lua valoarea 1
if(isset($_GET['p']) && is_numeric($_GET['p'])){
$pagina_curenta=(int)$_GET['p'];
}
else{
$pagina_curenta=1;
}
// dacă pagina curentă are valoarea mai mare decât numărul de pagini atunci o setăm la valoarea ultimei pagini
if($pagina_curenta > $nr_de_pagini){
$pagina_curenta=$nr_de_pagini;
}
// dacă pagina curentă este mai mică decât 1 atunci o resetăm la valoarea 1
elseif($pagina_curenta < 1){
$pagina_curenta=1;
}
// definim variabila paginare prin afișarea paginii curente și a numărului total de pagini existente
$paginare='<a class="paginare">Pagina '.$pagina_curenta.' din '.$nr_de_pagini.'</a>';
$interval=3; // setăm numărul de pagini din jurul paginii curente pentru care afișăm link-uri
// dacă pagina curentă este mai mare decât intervalul setat atunci afișăm link-uri pentru prima pagină și pentru pagină înapoi
if($pagina_curenta > (1+$interval)){
$paginare.='<a class="paginare" href="index.php?p=1">Prima</a>';
$pagina_inapoi=$pagina_curenta-1;
$paginare.='<a class="paginare" href="index.php?p='.$pagina_inapoi.'">«</a>';
}
// dacă pagina curentă este mai mare decât 1 și mai mică sau egală decât intervalul setat atunci afișăm link doar pentru pagină înapoi
elseif(($pagina_curenta > 1) && ($pagina_curenta <= (1+$interval))){
$pagina_inapoi=$pagina_curenta-1;
$paginare.='<a class="paginare" href="index.php?p='.$pagina_inapoi.'">«</a>';
}
// calculăm link-urile pentru paginile care trebuie afișate
for($x=($pagina_curenta - $interval); $x < (($pagina_curenta + $interval) + 1); $x++){
if(($x > 0) && ($x <= $nr_de_pagini)){
if($pagina_curenta != $x){
$paginare.='<a class="paginare" href="index.php?p='.$x.'">'.$x.'</a>';
}
else{
$paginare.='<a class="paginare" style="background-color:#ffffff; color:#000000;">'.$x.'</a>'; // link-ul pentru pagina curentă îl afișăm cu altă culoare
}
}
}
// dacă pagina curentă nu este ultima și este mai mică decât intervalul setat atunci afișăm link-uri pentru ultima pagină și pentru pagină înainte
if(($pagina_curenta != $nr_de_pagini) && ($pagina_curenta < ($nr_de_pagini - $interval))){
$pagina_inainte=$pagina_curenta+1;
$paginare.='<a class="paginare" href="index.php?p='.$pagina_inainte.'">»</a>';
$paginare.='<a class="paginare" href="index.php?p='.$nr_de_pagini.'">Ultima</a>';
}
// dacă pagina curentă nu este ultima și este mai mare sau egală decât intervalul setat atunci afișăm doar link-ul pentru pagină înainte
elseif(($pagina_curenta != $nr_de_pagini) && ($pagina_curenta >= ($nr_de_pagini - $interval))){
$pagina_inainte=$pagina_curenta+1;
$paginare.='<a class="paginare" href="index.php?p='.$pagina_inainte.'">»</a>';
}
$inceput=($pagina_curenta - 1) * $nr_articole_pe_pagina; // stabilim intrarea din baza de date de unde începe select-ul pentru pagina curentă
$query_afisare_articole="SELECT * FROM `nume_tabela_bd` ORDER BY `data` DESC LIMIT $inceput, $nr_articole_pe_pagina";
// aici se face afisarea articolelor
print $paginare; // afișăm link-urile paginării creeate mai sus
?>
Acum că am terminat cu partea de cod php putem stiliza puțin afișarea link-urilor de paginare cu ajutorul unei clase css:
.paginare{
color:#ffffff;
background-color:#000000;
border:1px solid #cccccc;
display:inline-block;
text-decoration:none;
padding:5px;
text-align:center;
}
.paginare:hover{
background-color:#ffffff;
color:#000000;
}
Sper că vă este de folos acest tutorial. Succes!
| 1. |
Foarte bravo baieti
|
| 2. |
Foarte util si usor de inteles! Multumesc mult!
|
| 3. |
Mă bucur că v-a fost de folos acest tutorial.
|
| 4. |
Bravo ! Foarte de folos tutorial-ul !
|
| 5. |
foarte de folos! dar daca are o selectare in baza de exemplu tabela upload si trebuie selectata categoria ex romania cum facem?
|
Vremea acum
| București, România | |
| Vineri, 07 Noi 2025, ora 08:57 | |
![]() |
8.1°C
Burniță de intensitate joasă
|
| Temperatură resimțită: | 4.3°C |
| Viteza vântului: | 28 km/h |
| Soarele răsare la ora: | 05:00 |
| Soarele apune la ora: | 14:57 |
| vremea detaliată în orașul tău | |
Info financiar
| Curs valutar BNR | |||
| actualizat Joi, 06 Noi 2025 | |||
| EUR: | 5.0845 RON | -0.0006 | |
| USD: | 4.4165 RON | -0.0125 | |
| GBP: | 5.7769 RON | +0.0079 | |
| CHF: | 5.4566 RON | -0.0042 | |
| XAU: | 568.9630 RON | +3.9514 | |
| Convertor valutar | |
| Din: | În: |
| Rezultat: | 0 |
| evoluție și grafice valute | |
