[PHP] limitare counter paginazione

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
51
Ciao a tutti,
uso da anni questa paginazione che ho trovato su mrwebmaster, e che dire mi trovo benissimo :) ora però avrei l'esigenza visto che i listati aumentano di limitare il numero delle pagine a 5, per evitare che se ci sono 100 pagine in un listato si vedano 100 i numeri da 1 a 100 perché anche esteticamente non è molto bello da vedere :(

c'è qualcuno che l'ha già modificato e mi sa dire che devo fare ??

Grazie mille

Paginazione.php

PHP:
// definiamo la classe 
class Paging 
{ 
// definiamo la pagina di partenza 
function paginaIniziale($max_row) 
{ 
if ((!isset($_GET['p'])) || ($_GET['p'] == "1")) 
{ 
$parti_da = 0; 
$_GET['p'] = 1; 
}else{ 
$parti_da = ($_GET['p']-1) * $max_row; 
} 
return $parti_da; 
} 

// contiamo le pagine e stabiliamo quanti records devono essere impaginati  
function contaPagine($conta, $max_row) 
{ 
$pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1; 
return $pgg; 
} 

// mostriamo l'elenco delle pagine 
function listaPagine($p_corrente, $pgg) 
{ 
$listapgg = ""; 
if (($p_corrente != 1) && ($p_corrente)) 
{ 
$listapgg .= " <a href=\"".SELF."?p=1\">Prima pag.</a> "; 
} 
if (($p_corrente-1) > 0) 
{ 
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."\"><</a> "; 
} 
for ($i=1; $i<=$pgg; $i++) 
{ 
if ($i == $p_corrente) 
{ 
$listapgg .= "<b>".$i."</b>"; 
}else{ 
$listapgg .= "<a href=\"".SELF."?p=".$i."\">".$i."</a>"; 
} 
$listapgg .= " "; 
} 
if (($p_corrente+1) <= $pgg) 
{ 
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">></a> "; 
} 
if (($p_corrente != $pgg) && ($pgg != 0)) 
{ 
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</a> "; 
} 
$listapgg .= "</td>\n"; 
return $listapgg; 
} 

// permettiamo la navigazione per pagine precedenti e successive 
function precedenteSuccessiva($p_corrente, $pgg) 
{ 
$impaginazione = ""; 
if (($p_corrente-1) <= 0) 
{ 
$impaginazione .= "Precedente"; 
}else{ 
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente-1)."\">Pag. precedente</a>"; 
} 
$impaginazione .= " | "; 
if (($p_corrente+1) > $pgg) 
{ 
$impaginazione .= "Prossima"; 
}else{ 
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">Prossima pag.</a>"; 
} 
return $impaginazione; 
} 
} 
?>
 
Ciao prova modificando cosi il ciclo for nella funzione listaPagine()
Codice:
    if($p_corrente>$pgg){
        header("location: index.php?p=1");
    }
    elseif($p_corrente==1){
        $inizio = $p_corrente;
    }
    elseif($p_corrente==2){
        $inizio = $p_corrente-1;
    }
    elseif($p_corrente==$pgg-1){
        $inizio = $p_corrente-3;
    }
    elseif($p_corrente==$pgg){
        $inizio = $p_corrente-4;
    }
    else{
        $inizio=$p_corrente-2;
    }
    for ($i=1; $i<=5; $i++){
        if ($inizio == $p_corrente){
            $listapgg .= "<b>".$inizio."</b>";
            $inizio++;
        }
        else{
            $listapgg .= "<a href=\"".SELF."?p=".$inizio."\">".$inizio."</a>";
            $inizio++;
        }
        $listapgg .= " ";
    }
 
Ultima modifica:
ciao non so se ho capito bene, ho fatto cosi ma mi da errore :(

PHP:
// definiamo la classe 
class Paging 
{ 
// definiamo la pagina di partenza 
function paginaIniziale($max_row) 
{ 
if ((!isset($_GET['p'])) || ($_GET['p'] == "1")) 
{ 
$parti_da = 0; 
$_GET['p'] = 1; 
}else{ 
$parti_da = ($_GET['p']-1) * $max_row; 
} 
return $parti_da; 
} 

// contiamo le pagine e stabiliamo quanti records devono essere impaginati  
function contaPagine($conta, $max_row) 
{ 
$pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1; 
return $pgg; 
} 

// mostriamo l'elenco delle pagine 
function listaPagine($p_corrente, $pgg) 
{ 
 if($p_corrente>$pgg){
        header("location: index.php?p=1");
    }
    elseif($p_corrente==1){
        $inizio = $p_corrente;
    }
    elseif($p_corrente==2){
        $inizio = $p_corrente-1;
    }
    elseif($p_corrente==$pgg-1){
        $inizio = $p_corrente-3;
    }
    elseif($p_corrente==$pgg){
        $inizio = $p_corrente-4;
    }
    else{
        $inizio=$p_corrente-2;
    }
    for ($i=1; $i<=5; $i++){
        if ($inizio == $p_corrente){
            $listapgg .= "<b>".$inizio."</b>";
            $inizio++;
        }
        else{
            $listapgg .= "<a href=\"".SELF."?p=".$inizio."\">".$inizio."</a>";
            $inizio++;
        }
        $listapgg .= " ";
    }
} 
if (($p_corrente+1) <= $pgg) 
{ 
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">></a> "; 
} 
if (($p_corrente != $pgg) && ($pgg != 0)) 
{ 
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</a> "; 
} 
$listapgg .= "</td>\n"; 
return $listapgg; 
} 

// permettiamo la navigazione per pagine precedenti e successive 
function precedenteSuccessiva($p_corrente, $pgg) 
{ 
$impaginazione = ""; 
if (($p_corrente-1) <= 0) 
{ 
$impaginazione .= "Precedente"; 
}else{ 
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente-1)."\">Pag. precedente</a>"; 
} 
$impaginazione .= " | "; 
if (($p_corrente+1) > $pgg) 
{ 
$impaginazione .= "Prossima"; 
}else{ 
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">Prossima pag.</a>"; 
} 
return $impaginazione; 
} 
} 
?>
 
Ciao,
Io ho testato dallo script di base che hai trovato qua sul forum. Per caso hai effettuato qualche modifica al codice? variabili o funzioni?

Magari hai inserito male cancellando una chiusura ; o }.

Comunque questa è tutta la pagina completa:
PHP:
<?php
// definiamo una costante per la pagina corrente
define("SELF", $_SERVER['PHP_SELF']);

// definiamo la classe
class Paging
{
// definiamo la pagina di partenza
function paginaIniziale($max_row)
{
if ((!isset($_GET['p'])) || ($_GET['p'] == "1"))
{
$parti_da = 0;
$_GET['p'] = 1;
}else{
$parti_da = ($_GET['p']-1) * $max_row;
}
return $parti_da;
}

// contiamo le pagine e stabiliamo quanti records devono essere impaginati
function contaPagine($conta, $max_row)
{
$pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1;
return $pgg;
}

// mostriamo l'elenco delle pagine
function listaPagine($p_corrente, $pgg)
{
$listapgg = "";
if (($p_corrente != 1) && ($p_corrente))
{
$listapgg .= " <a href=\"".SELF."?p=1\">Prima pag.</a> ";
}
if (($p_corrente-1) > 0)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."\"><</a> ";
}
if($p_corrente>$pgg){
        header("location: index.php?p=1");
    }
    elseif($p_corrente==1){
        $inizio = $p_corrente;
    }
    elseif($p_corrente==2){
        $inizio = $p_corrente-1;
    }
    elseif($p_corrente==$pgg-1){
        $inizio = $p_corrente-3;
    }
    elseif($p_corrente==$pgg){
        $inizio = $p_corrente-4;
    }
    else{
        $inizio=$p_corrente-2;
    }
    for ($i=1; $i<=5; $i++){
        if ($inizio == $p_corrente){
            $listapgg .= "<b>".$inizio."</b>";
            $inizio++;
        }
        else{
            $listapgg .= "<a href=\"".SELF."?p=".$inizio."\">".$inizio."</a>";
            $inizio++;
        }
        $listapgg .= " ";
    }
if (($p_corrente+1) <= $pgg)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">></a> ";
}
if (($p_corrente != $pgg) && ($pgg != 0))
{
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</a> ";
}
$listapgg .= "</td>\n";
return $listapgg;
}

// permettiamo la navigazione per pagine precedenti e successive
function precedenteSuccessiva($p_corrente, $pgg)
{
$impaginazione = "";
if (($p_corrente-1) <= 0)
{
$impaginazione .= "Precedente";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente-1)."\">Pag. precedente</a>";
}
$impaginazione .= " | ";
if (($p_corrente+1) > $pgg)
{
$impaginazione .= "Prossima";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">Prossima pag.</a>";
}
return $impaginazione;
}
}
?>


Se non dovesse ancora funzionare scrivi l'errore che visualizzi su browser.
 
  • Like
Reactions: Achille610@
Ciao mi sa di si :)

Funzionaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Grazie mille sempre gentilissimo e molto competente .........
 

Discussioni simili