Gabriele Fabbri :: Programmatore, Web designer <freelance/>
ARTICOLI e APPUNTI
Annotazioni di studio su strumenti interessanti...
"Imparare è un'esperienza; tutto il resto è solo informazione."
(Albert Eistein)
Curriculum Vitae

Scarica il mio Curriculum Vitae.
(PDF, ∼50Kb)
Classe PHP per il paging di liste di record

Ho realizzato questa classe per ottenere in modo versatile la paginazione di liste di record ricavate da interrogazioni su database.


Salvalo su Del.icio.us Del.icio.us   Raccomandalo su StumbleUpon Stumble   Cinguettalo su Twitter Retweet   Condividilo su Facebook Facebook   


Potete scaricare l'archivio contenente la classe ed il css dal seguente link: PagerClass.tar

Vediamo rapidamente come implementare questa funzionalità nella pagina.
Va detto subito che la classe si occupa esclusivamente di gestire la paginazione dei record, quindi le relative query devono essere eseguite dalla model class (in questo esempio model_news.php).

Pagina newslist.php:

<h2>Lista delle news recenti:</h2>
<?php
require_once("model_news.php");
require_once("pager.php");
$pager = new Pager(120, 10, $_REQUEST['page']);
$totalPages = $pager->getTotalPages();
$limitFrom = $pager->getLimitFrom();
$limitTo = $pager->getLimitTo();
$news = new News();
$newslist = $news->getPagedList($limitFrom, $limitTo);

foreach($newslist as $item) {
    echo "<div>$item->titolo</div>";
}

for($i=1; $i<=$totalPages; $i++) {
    if($_REQUEST['page']==$i || ($i==1 && $_REQUEST['page']==null))
        echo "<span class='paging_current'>$i</span>";
    else {
        $linkuri = $_SERVER['PHP_SELF']."?page=$i";
        $linkstring = "<a href='$linkuri' class='link_paging'>$i</a>";
        echo $linkstring;
    }
}
?>

Il costruttore della classe Pager necessita di tre parametri:

<?php
$pager = new Pager(120, 10, $_REQUEST['page']);
?>
  1. Il numero totale di record restituiti dalla query e quindi da impaginare
    Questo valore è ottenibile con una query del tipo SELECT COUNT(*) FROM tablename ...
    Oppure usando la funzione mysql_num_rows su un result set esistente
  2. Il numero di record che si desidera visualizzare per ciascuna pagina
  3. Il numero della pagina che si sta visualizzando

Una volta ottenuti i valori $limitFrom e $limitTo dalla classe Pager possiamo eseguire la query sul db utilizzando queste variabili come valori per la clausola LIMIT.
Come già detto è meglio che la query sia posizionata nella model class.
Il secondo ciclo (for) nella pagina genera i numeri delle pagine linkate correttamente, passando sempre la variabile $page.
Naturalmente se nel proprio progetto si applica il modello MVC (Model View Controller) è bene che la classe Pager venga istanziata nel controller; alla view verranno così passati solo i record necessari.


« Utilissimo! Torna agli articoli!
Articoli più recenti
Php (3)
Yii Framework (1)
Apache (1)
Configurare FCKEditor in modo che non generi tag "p" nel codice inserito.

Come configurare i VirtualHosts di Apache su sistemi Windows.

Una classe PHP per la paginazione delle liste dei record estratti da database.


Tecnologie usate
Spesso ...
Apache Server
(x)Html, Html DOM, CSS
JavaScript, DHTML
JQuery JS Framework
PHP OOP
Yii MVC Application Framework
SQL, MySQL, SQLite
XML, XML DOM, XSL

... a volte ...
Symfony Application Framework
Zend Application Framework
CodeIgniter Framework

... raramente
Tomcat
Java, Jsp, Servlets
Stripes Framework
Hibernate ORM
C#, .NET Framework
Alcune realizzazioni (portfolio completo)
Armagni Restauri
Categoria progetto: Siti Web
Consulenza per: Corrado Armagni
Cliente: Corrado Armagni

Sito web per il laboratorio di restauro del legno Armagni Restauri di Parma. Il Cliente ha espressamente richiesto un sito monopagina con sviluppo verticale in cui far convivere la presentazione dell'attività e le principali lavorazioni.
Newtron CMS
Categoria progetto: Applicazioni
Consulenza per: TeamTronic Srl
Cliente: TeamTronic Srl

Sviluppo del CMS (Content Management System) per la gestione dei progetti di TeamTronic Srl.

Mappamondo GIS WebMaps
Categoria progetto: Applicazioni
Consulenza per: Mappamondo GIS
Cliente: Mappamondo GIS

Componente web per la selezione dinamica ed il download di mappe GIS (Geographic Information Systems).

Sistema Graduatorie ISEE
Categoria progetto: Applicazioni
Consulenza per: Fondazione Bertocchi
Cliente: Fondazione Bertocchi

Software per la gestione delle graduatorie ISEE per l'assegnazione di microcrediti famigliari, per la Fondazione Innocenzo Bertocchi di Bologna.

TeamTronic Srl
Categoria progetto: Siti Web
Consulenza per: TeamTronic Srl
Cliente: TeamTronic Srl

Sito istituzionale per la Web Agency TeamTronic, realizzato durante la mia permanenza alle loro dipendenze. Database e CMS.
Twitter
Using HTML5 today (sitepoint) http://bit.ly/927nEX