ciao Filippo

ecco il codice della funzione paging, anche se io ero propenso a toglierla del tutto in quanto in questo caso non ho necessità di fare paginazione in quanto dovrebbe apparire una sola news:



<?php


/**
* Funzione per la paginazione automatica delle query, con propagazione delle querystring
*
*
* @version 1.1 (11/11/2005)
* @param string $query La query sql con cui intendiamo estrarre i nostri dati
* @param integer $x_pag Il numero di record che vogliamo visualizzare in una singola pagina (default: 10)
* @param integer $num_links Il numero di link alle pagine precedenti e successive da stampare nel menu' (default: 5)
* @return array Il primo valore è il risultato della query, il secondo il menu' stampabile
*/


function paging($query,$x_pag=4,$num_links=5)
{

//conteggio i record presenti
$resource = mysql_query($query); //grazie a piero.mac per la compatibilità con mysql 5
if(!$resource) { echo 'Si è verificato un errore con la query inserita.
L\'errore restituito è: ', mysql_error(),''; exit; }
$righe = mysql_num_rows($resource);
if ($righe == 0){ return false; }
//calcolo il numero di pagine necessarie per visualizzare i dati
$numpages = ceil($righe/$x_pag);

//ottengo il numero di pagina, 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
$querystring = '';
foreach($_GET as $k => $v)
{
if ($k != 'pag')
{
$querystring .= "&".$k."=".$v;
}
}

//inizializzo una stringa vuota in cui appenderò l'output del menu'
$menu = '';

//serie di condizionali in cascata per costruire il menu'
if($numpages <= $num_links)
{
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> ";
}
$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)))
{
$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 dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
else
{
$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> ";
}
$menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
}

//restituisco il risultato della query, e l'output del menu'
return array(mysql_query($query),$menu);
}


################################################## #################
# esempio d'uso #
################################################## #################
/*
mysql_connect('localhost','','');
mysql_select_db('databas');

$res = paging('SELECT * FROM boh');

if (!$res[0]) { echo "non ci sono dati";}
else
{
while($dati = mysql_fetch_array($res[0]))
{
echo "
".$dati['campo'];
}
}
echo "
".$res[1];

*/

?>