[PHP] limitare counter paginazione

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
46
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; 
} 
} 
?>
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
BZ
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:

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
46
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; 
} 
} 
?>
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
BZ
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@

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
46
Ciao mi sa di si :)

Funzionaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

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