modifica paginazione numerata

robycon

Utente Attivo
10 Feb 2010
43
0
0
un aiutino sulla paginazione numerata pleasee :(

salve grazie a voi ho risolto la questione paginazione numerata... però ora mi sn reso conto che manca qualcosa.. cioè
come numerazione è perfetta. vi posto il codice e dico cosa mi manca

<?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)."\"class=\"freccette\">◄</a> ";
}
for ($i=1; $i<=$pgg; $i++)
{
if ($i == $p_corrente)
{
$listapgg .= "<b><span class='nolink'>".$i."</span></b>";
}else{
$listapgg .= "<a href=\"".SELF."?p=".$i."\" class=\"numerazione\">".$i."</a>";
}
$listapgg .= " ";
}
if (($p_corrente+1) <= $pgg)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\"class=\"freccette\">►</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;
}
}
?>

con questo codice funziona tutto. ma in questo modo mi conta tutte le pagine, io vorrei fare che per non creare centinaia di numeri a video.. mi visualizzasse le pagine ogni 10 per esempio

da questo codice qualcuno modificando mi può aiutare?
grazieee:fonzie:
 
Ultima modifica:
fatto

Sono riuscito a fare quello che volevo..
se qualcuno è interessato posso condividere..
da premettere.. nonostante funzioni bene, almeno per quello che serviva a me.. secondo me è un pò incasinato e nn si capisce molto.. sicuramente si farà in un altro modo molto + pulito xò funziona, testato
 
ciao

se qualcuno è interessato posso condividere..:fonzie:

PHP:
posta il codice, eventualmente si può vedere di migliorarlo:fonzie:

sarebbe ottima prassi di tutti i forumisti postare quello che hanno fatto
soprattutto se hanno avuto un aiutino dal forum
 
Modifica

Allora lo script è quello sopra ma ho modificato alcune cose per fargli fare quello che mi serviva... sono sicuro che non è questo il modo ma a me funziona :D e x adesso mi sta bene... se c'è un modo migliore meglio.

<?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&s=".(0)."\" class='nolink2'>Prima pag.</a> ";
}

/// //MODIFICA -- VISUALIZZA LE PAGINE A 5 A 5 E SCORRE AVANTI DA 5 IN POI X 1 ALLA VOLTA ////

$prova=@$_GET['s'];

if (($p_corrente-1) > 0)
{
if($prova>=1){

$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."&s=". ($prova-1)."\"class=\"freccette\">◄</a> ";

}else{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."&s=".($prova)."\"class=\"freccette\">◄</a> ";
}
}

if($pgg<=5){

$colonne=$pgg;

}else{
$colonne=5;
}

if($prova==""){

$prova=0;

}else{
$prova=@$_GET['s'];
}

if($prova==$pgg){
$prova=$prova;
}

/// VISUALIZZA il numero pagine corrente es. 1 di 10 /////////////////////////////////
echo "<br><span style='padding-left:5px;padding-right:5px;border-bottom:1px solid red;border-top:1px solid red;'>Pagina: ".$p_corrente." di ".$pgg."</span>";

/////////////////////////////////////////////////////////////////////////////////////

for ($i=(1+$prova); $i<=($colonne+$prova); $i++)
{
if ($i == $p_corrente)
{
$listapgg .= "<b><span class='nolink'>".$i."</span></b>";
}else{
$listapgg .= "<a href=\"".SELF."?p=".$i."&s=".($prova)."&categoria=".$categoria."&vani=".$vani."\" class=\"numerazione\">".$i."</a>";
}
$listapgg .= " ";
}

if($p_corrente>=$colonne){

if($prova<=($pgg-6)){

$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."&s=".($prova+1)."&categoria=".$categoria."&vani=".$vani."\"class=\"freccette\">►</a>";}}
else{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente)."&s=".($prova)."&categoria=".$categoria."&vani=".$vani."\"></a>";

if($p_corrente<=$pgg){

$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."&s=".($prova)."&categoria=".$categoria."&vani=".$vani."\"class=\"freccette\">►</a> ";
}}

if (($p_corrente != $pgg) && ($pgg != 0))
{
$listapgg .= "<a href=\"".SELF."?p=".($pgg)."&s=".($pgg-$colonne)."&categoria=".$categoria."&vani=".$vani."\" class='nolink2'>Ultima pag.</a> ";
}


$listapgg .= "</td>\n";
return $listapgg;
}
//fine modifica ///////////////////////////////////////////////////////////////////////////


// 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)."&categoria=".$categoria."&vani=".$vani."\">Prossima pag.</a>";
}
return $impaginazione;
}
}
?>

Come si vede non è una grossa modifica, ho provato a testarlo variando sia numero di record ecc e cmq funziona sempre.
 
so che non lo dovrei dire io che sono l'autore della classe, ma sarebbe bene aggiungere anche un controllo di validazione sul valore GET della pagina.
 
qualkuno ha provato la modifica? c'è un modo migliore? cmq si deve togliere :if($prova==$pgg){
$prova=$prova
}
perchè non ha senso, non serve a niente
 
probleminooooo :(

Ciao Eliox scusa volevo chiederti una cosa, visto che sei l'autore di quella classe della paginazione.
allora, il problemino che ho incontrato è che se per esempio la ricerca dal database nn va a buon fine ovvero nn ci sono record, praticamente mi sparisce tutto, l'intera pagina perchè? grazie
 

Discussioni simili