ciao ragazzi,non ho molta dimestichezza con le classi in Javascript,ho creato una classe di paginazione in PHP e ora avrei necessità di trasformarla in Javascript in quanto poi la dovrò richiamare da altri moduli presenti nella stessa pagina quindi volevo sapere come potevo fare..
La paginazione che ho creato creerà una paginazione di record e di pagine,ossia se il numero di pagine visualizzate supera il numero massimo impostato apparirà un +x che mi visualizzerà le successive...
La mia classe di paginazione è la seguente,partiamo dal file che la richiama:
Codice PHP:
<?php
$per_page = $_GET['pPage']; // risultati per pagina(secondo parametro di LIMIT)
$maxPages = $_GET['mxPage']; // numero di pagine da mostrare oltre il quale inserire il +X
$current_page =(!isset($_GET['page'])) ? $pag = 1 : $pag = $_GET['page']; // pagina corrente
$myFunction = $_GET['fTr']; // ricevo la funzione dove rimandare la paginazione effettuata(fTr=functionToRemand)
$tot_records = $res_count[0]; // numero totale di records (contati con una query)
$p = new Paging; // Creo un'istanza della classe Paging
$primo = $p -> firstLimit($current_page, $per_page); // richiamo la funzione che mi recupera il primo LIMIT per la query
//### ESTRAZIONE E STAMPA DEI RECORD ###
include_once("_queryPaginateExtract.php");
//######################################
$tot_pages = $p -> totalPages($tot_records, $per_page); // recupero il numero totale di pagine
$numPaginazioni = $p -> numPaginazioni($tot_pages, $maxPages); // recupero il numero di paginazioni delle pagine
if($numPaginazioni <= 1){
$paginazione = $p -> singlePagination($tot_pages, $current_page, $myFunction);
}
else{
$ricezionePgg = $_GET['rpg'];
if($ricezionePgg == '' ){
$ricezionePgg = 1;
}
$paginazione = $p -> multiplePagination($ricezionePgg, $maxPages, $tot_pages, $current_page, $myFunction);
}
$output.=" <tr>
<td align=\"left\">Pagina $current_page / $tot_pages</td>
<td valign=\"bottom\" align=\"right\">$paginazione</td>
</tr>";
echo"$output";
?>
è tutto commentato,si dovrebbe capire abbastanza bene.... Ora passo alla classe di paginazione:
Codice PHP:
<?php
class Paging
{
//recupero il LIMIT iniziale da cui partire per la query
function firstLimit($current_page, $per_page){
$primo = ($current_page - 1) * $per_page;
return $primo;
}
// conto il numero totale di pagine che mi si creano avendo in ingresso
// il numero totale dei record e il numero di record da visualizzare ogni volta
function totalPages($tot_records, $per_page){
$tot_pages = ceil($tot_records / $per_page);
return $tot_pages;
}
//recupero il numero di paginazioni che escono fuori dove andare avanti
function numPaginazioni($tot_pages, $maxPages){
// numero di paginazioni dove inserire il +10
$numPaginazioni = ceil($tot_pages / $maxPages);
return $numPaginazioni;
}
// se la paginazionerisulta essere singola richiamo questa funzione senza che si crei il +x -x
function singlePagination($tot_pages, $current_page, $myFunction){
$paginazione = ' | ';
// cicliamo le pagine
for($i=1; $i<=$tot_pages; $i++){
if($i==$current_page)
$paginazione .="$i";
else
$paginazione .= "<a href=\"#x\" onclick=\"$myFunction($i,1);\">$i</a> ";
//$paginazione .= "<a href=\"?page=$i\" >$i</a> ";
$paginazione .=' | ';
}
return $paginazione;
}
// se la paginazione delle pagine risulta essere maggiore di quelle visualizzabili in una volta
// richiamo questa funzione che mi crea i limiti del for
function multiplePagination($ricezionePgg, $maxPages, $tot_pages, $current_page, $myFunction){
$inizio = (($ricezionePgg * $maxPages) - ($maxPages-1));
$fine = ($ricezionePgg * $maxPages);
if($fine >= $tot_pages)
$fine = $tot_pages;
$paginazione = ' | ';
// cicliamo le pagine
for($i=$inizio; $i<=$fine; $i++){
if($i==$current_page)
$paginazione .="$i";
else
$paginazione .= "<a href=\"#\" onclick=\"$myFunction($i, $ricezionePgg);\" >$i</a> ";
$paginazione .=' | ';
}
// se non sono ancora arrivato alla pagina finale allora metto il +10
if($i < $tot_pages){
$newRicezionePgg = $ricezionePgg +1;
$paginazione .= "<a href=\"#\" onclick=\"$myFunction($i, $newRicezionePgg); \" >+$maxPages |</a> ";
}
if(($inizio - $maxPages)>= 0){
$newRicezionePgg = $ricezionePgg -1;
$pageToRemand = (($newRicezionePgg * $maxPages) - ($maxPages-1));
$paginazione .= "<a href=\"#\" onclick=\"$myFunction($pageToRemand, $newRicezionePgg); \">-$maxPages |</a> ";
}
return $paginazione;
}
}
?>