ciao,
non sono riuscito ancora a risolvere il problema della paginazione che in locale funziona mentre sul server no...
in pratica cosa succede: quando uso una condizione nel motore di ricerca la funzione mi restituisce il numero di record trovati, ad esempio 20 su 50 e mi crea correttamente il numero di pagine. quando però clicco sulla pagina 2, mi perde il filtro e mi elenca tutti i 50 record presenti nel DB.
La cosa strana è che in locale mi funziona perfettamente!
le due differenze che ho notato tra localhost e il server è che sul server avevo register_globals in on.
Ho fatto modificare la configurazione all'hoster, ma il problema persiste.
la seconda differenza è che in locale php gira su windows, mentre sul server ho linux.
non so più cosa fare...illuminatemi vi prego
la funzione per la paginazione:
Codice PHP:
function paging($query,$x_pag=10,$num_links=5)
{
//conteggio i record presenti
$resource = mysql_query($query);
if(!$resource) { echo 'Si è verificato un errore con la query inserita.
L\'errore restituito è: [i]', mysql_error(),'[/i]'; exit; }
$righe = mysql_num_rows($resource);
if ($righe == 0){ return false; } //non ci sono record
echo "<div class=\"risultato\">\n
Sono stati trovati <span class=\"col_res\">".$righe."</span> risultati</p></div>\n<table class=\"tabella\">\n";
//calcolo il numero di pagine necessarie per visualizzare i dati
$numpages = ceil($righe/$x_pag);
//ottengo il numero della pagina corrente, se manca lo imposto ad 1
$pag = isset($_GET['pag'])? $_GET['pag'] : 1;
//imposto il primo estremo del limit
$da = ($pag-1) * $x_pag;
//appendo il limit alla query originaria
$query .= " LIMIT $da,$x_pag";
//gesisco la propagazione della query string ricopiandola tutta in una variabile che appenderò ai link
$querystring = '';
foreach($_GET as $k => $v)
{
if ($k != 'pag') //escludo la variabile usata dalla paginazione ^_^
$querystring .= "&".$k."=".$v;
}
//inizializzo una stringa vuota in cui appenderò l'output del menu'
$menu = '';
//SERIE DI CONDIZIONALI IN CASCATA PER COSTRUIRE IL MENU'
//se il numero di pagine necessarie è minore del massimo numerodi link richiesto, allora li stampo tutti senza problemi...
if($numpages <= $num_links)
{
if($numpages > 1 )//...a meno che non basti la sola pagina corrente
{
for ($pagina = 1; $pagina <= $numpages; $pagina++)
{
if ($pagina == $pag)
$menu .= "<span class=\"pag_selected\"> $pagina </span> ";
else
$menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
}
}
}
//se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
else if($pag <= ceil($num_links/2))
{
for ($pagina=1; $pagina<=$num_links; $pagina++)
{
if ($pagina == $pag)
$menu .= "<span class=\"pag_selected\"> $pagina </span> ";
else
$menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
}
//link diretto all'ultima pagina
$menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
}
//se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
else if($pag > ($numpages-ceil($num_links/2)))
{
//link diretto alla prima pagina
$menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
for ($pagina=$numpages-$num_links+1; $pagina<=$numpages; $pagina++)
{
if ($pagina == $pag)
$menu .= "<span class=\"pag_selected\"> $pagina </span> ";
else
$menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
}
}
//Altrimenti la pagina corrente è una delle pagine centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
else
{
//link diretto alla prima pagina
$menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
for ($pagina = $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
{
if ($pagina == $pag)
$menu .= "<span class=\"pag_selected\"> $pagina </span> ";
else
$menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
}
//link diretto all'ultima pagina
$menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
}
//restituisco il risultato della query, e l'output del menu'
return array(mysql_query($query),$menu);
}
vi ringrazio