Meniu Blog

Detalii vizitator

IP-ul tău public este 54.145.124.143, folosești sistemul de operare necunoscut, o rezoluție de pixeli și browser necunoscut !
Dacă am dreptate dă-mi un like pe Facebook!

Caută cod poștal

Județul:
Localitatea:
Strada:
CoduriPostale.ro

Articole noi pe blog

Calendar ortodox

Vineri, 24 Noi 2017
Sf. Sfintit Mc. Clement, Ep. Romei si Petru, Ep. Alexandriei

Recomand

Știri pe scurt

Creearea unui script de paginare în PHP

Creearea unui script de paginare in 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!

Postat de spooker Duminică, 26 Mai 2013 la ora 22:47 în categoria IT & C


Creearea unui script de paginare în PHP - 5 comentarii:
1. avatar
Foarte bravo baieti
2. avatar
Foarte util si usor de inteles! Multumesc mult!
3. avatar
spooker a scris pe 6 Februarie 2014, ora 13:46
Mă bucur că v-a fost de folos acest tutorial.
4. avatar
Bravo ! Foarte de folos tutorial-ul !
5. avatar
foarte de folos! dar daca are o selectare in baza de exemplu tabela upload si trebuie selectata categoria ex romania cum facem?
Ai ceva de spus?

*

*

*
caractere rămase din disponibile.

Când postezi un comentariu încearcă să ții cont de aceste reguli!

      

Vremea acum

Bucharest, România
Vineri, 24 Noi 2017, ora 20:04
conditii meteo
4.9°C
Cer acoperit
Temperatură resimțită: 5°C
Viteza vântului: 3 km/h
Soarele răsare la ora: 7:23
Soarele apune la ora: 16:40

Info financiar

Curs valutar BNR
actualizat Vineri, 24 Noi 2017
 EUR: 4.6536 RON -0.0010
 USD: 3.9215 RON -0.0091
 GBP: 5.2229 RON -0.0058
 CHF: 3.9971 RON -0.0112
 XAU: 162.5645 RON -0.7091
Convertor valutar
Din:  În: 
Rezultat: 0

Facebook, Google Plus



Abonare la noutăți

Abonează-te prin email pentru a fi la curent cu ultimele articole din blog, cele mai noi fotografii sau alte noutăți de pe site. Vei primi un email pentru a confirma abonarea.

Logare

Horoscop zilnic

Recomand