Ciao

Ragazzi sto impazzendo. Ho usato lo stesso metodo di paginazione in 2 funzioni differenti.
la prima paginazione funziona la seconda no:

La prima funzione è questa:

Codice PHP:

function lista(){
// Creo una variabile dove imposto il numero di record 
// da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente.
// Generalmente si utilizza una querystring
$pag = $_GET['pag'];

// Controllo se $pag è valorizzato...
// ...in caso contrario gli assegno valore 1
if (!$pag) $pag = 1; 

$query = "SELECT * FROM primanota ORDER BY giorno DESC, id DESC";
$risultato = mysql_query($query); 
$num_righe = mysql_num_rows($risultato);

// Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($num_righe / $x_pag);
// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;
 ?>    
 
  <div id ="mezzo2">
  <table align="center"  width="85%" height="400"  id="table5">
  <tr>
  <td id="row5" valign="top">
  
  <?
if ($num_righe != 0)
 {    
?>
  
  <table border="1" width="100%" height="47" id="table55">
    <tr>
        <td height="47" width="10%" align="center" id="row6" rowspan="2">DATA</td>
        <td height="47" width="30%" align="center" id="row6" rowspan="2">DESCRIZIONE</td>
        <td height="25" width="26%" align="center" id="row6" colspan="2">CASSA</td>
        <td height="25" width="26%" align="center" id="row6" colspan="2">BANCA</td>
        <td height="47" width="5%" align="center" id="row6" rowspan="2">CANC</td>
    </tr>
    <tr>
        <td height="22" width="13%" align="center" id="row6"><font color="#00FF00">ENTRATA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#FF5050">USCITA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#00FF00">ENTRATA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#FF5050">USCITA</font></td>
    </tr>
    
    <?
// Recupero i record per la pagina corrente...
// utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM primanota ORDER BY giorno DESC, id DESC LIMIT $first$x_pag";
$risultato mysql_query($query); 

$i 0;
while (
$record mysql_fetch_array($risultato)) {
$id $record["id"];
$data $record["data_it"];
$desc =   $record["descrizione"];
$cassain =  $record["cassa_in"];
$cassaout $record["cassa_out"];
$bancain =  $record["banca_in"];
$bancaout $record["banca_out"];

if (
$cassain != 0.00
{
$cassainvis number_format($cassain2',''.');
}
else {
$cassainvis "";}

if (
$cassaout != 0.00
{
$cassaoutvis number_format($cassaout2',''.');
}
else {
$cassaoutvis "";}

if (
$bancain != 0.00
{
$bancainvis number_format($bancain2',''.');
}
else {
$bancainvis "";}

if (
$bancaout != 0.00
{
$bancaoutvis number_format($bancaout2',''.');
}
else {
$bancaoutvis "";}

 
$i = (++$i 2);
    echo 
"<tr class=alternate".$i.">
        <td height=\"54\" width=\"10%\" align=\"center\" id=\"row7\">
$data</td>
        <td height=\"54\" width=\"30%\" align=\"left\" id=\"row7\">
$desc</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$cassainvis</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$cassaoutvis</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$bancainvis</td>
        <td height=\"54\" width=\"10%\" align=\"center\" id=\"row7\">
$bancaoutvis</td>
        <td height=\"54\" width=\"5%\" align=\"center\" id=\"row7\"><a href=\"nota.php?task=dom_delete&id=
$id\">
        <img border=\"0\" alt=\"Elimina Record\" src=\"stili/delete.gif\"/></a></td>        
        </tr>"
;    
    }    
    
?>
    
    <tr>
<td height="30" colspan="2" align="left" id="row9">Tot. Primenote: <?echo $num_righe?>
</td>
<td height="30" colspan="2" align="center" id="row8">
<?
echo $num_righe;
// Se le pagine totali sono più di 1...
// stampo i link per andare avanti e indietro tra le diverse pagine!
if ($all_pages 1){
  if (
$pag 1){
    echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" . ($pag 1) . "\">Pag. Indietro</a>";
    echo
"";
  } 
  if (
$all_pages $pag){
    echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" . ($pag 1) . "\">Pag. Avanti</a>";   
  } 
}
?>
</td>
<td height="30" colspan="3" align="right" id="row9">Pagina <? echo $pag."di".$all_pages?>
</td>
</tr>
    </table>

 <?
}
else { echo 
"<center>[b]Non ci sono registrazioni[/b]</center>";}

?>   
  
  </td>
  </tr>
  </table>
  </div>

<?
}
La seconda ricerca e stampa i dati in base alle date inserite:

Codice PHP:

function ricerca($inizio, $fine){
    
    // Creo una variabile dove imposto il numero di record 
// da mostrare in ogni pagina
$x_pag = 5;

// Recupero il numero di pagina corrente.
// Generalmente si utilizza una querystring
$pag = $_GET['pag'];

// Controllo se $pag è valorizzato...
// ...in caso contrario gli assegno valore 1
if (!$pag) $pag = 1;          
 
   function checkData($date)
  {  
    list($dd,$mm,$yy)=explode("/",$date);
    if ($dd!="" && $mm!="" && $yy!="")
    {
    if (is_numeric($yy) && is_numeric($mm) && is_numeric($dd))
        {
            return checkdate($mm,$dd,$yy);
        }
    }  
    return false;
}

 //Primo imput si secondo no
if (($inizio != '')&&($fine =='')){
    $controlloin = checkData($inizio);
    if ($controlloin != 1)
    { 
     echo "<center>[b]la data d'inizio inserita non è valida.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";    
    }
    else {
         $tutto = "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM primanota where giorno >= str_to_date('$inizio', '%d/%m/%Y') ORDER BY giorno, id";         
    }            
   }
   
   elseif (($inizio=='')&&($fine != '')){
       
       $controllofin = checkData($fine);
    if ($controllofin != 1)
    { 
     echo "<center>[b]la data finale inserita non è valida.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";    
    }
    else {
          $tutto = "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM primanota where giorno <= str_to_date('$fine', '%d/%m/%Y') ORDER BY giorno, id ";    
    }        
}
   //le date non sono state inserite
   elseif (($inizio=='')&&($fine==''))
   { 
       echo "<center>[b]Non hai inserito date.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
        }
   
   //entrambe le date sono state inserite
   elseif (($inizio!='')&&($fine!=''))
       { 
            $controlloin = checkData($inizio);
         $controllofin = checkData($fine);
         
         //entrambe sbagliate
        if (($controlloin != 1 )&& ($controllofin != 1))    
    { 
     echo "<center>[b]Le date inserite non sono valide[/b] 
        

<a href=\"ricercanote.php\">
        <img border=\"0\" src=\"stili/indietro.jpeg\"></a></p></center>";    
    }
        //entrambe esatte
       elseif (($controlloin == 1 )&& ($controllofin == 1))
          {
              
        list($giorno,$mese,$anno) = split("/",$inizio);
        $datain = mktime(0,0,0,$mese,$giorno,$anno);
     
        list($giorno,$mese,$anno) = split("/",$fine);
        $datafin = mktime(0,0,0,$mese,$giorno,$anno);
     
     //se la prima è posteriore alla seconda
     if ($datain>$datafin)
     {
        echo "<center>[b]la data d'inizio ricerca non può essere posteriore alla data di fine ricerca.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
    }
    
    //ok!
else {
    
    $tutto = "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM primanota where giorno >= str_to_date('$inizio', '%d/%m/%Y') and giorno <= str_to_date('$fine', '%d/%m/%Y') ORDER BY giorno, id";
}        
        }
        
        //la prima data sbagliata
        elseif ($controlloin != 1)
    { 
     echo "<center>[b]la data d'inizio inserita non è valida.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";    
    }
      //la seconda data sbagliata
     elseif ($controllofin != 1)
     { 
     echo "<center>[b]la data finale inserita non è valida.[/b] 
        <input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";    
    }            
   }
   
   if (isset($tutto)){
       

  
   $risultato = mysql_query($tutto); 
   $num_righe = mysql_num_rows($risultato);
  
  // Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($num_righe / $x_pag);
// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;
 ?>    
 
  <div id ="mezzo2">
  <table align="center"  width="85%" height="400"  id="table5">
  <tr>
  <td id="row5" valign="top">
  
  <?
if ($num_righe != 0)
 {    
?>

  <table border="1" width="100%" height="47" id="table55">
    <tr>
        <td height="47" width="10%" align="center" id="row6" rowspan="2">DATA</td>
        <td height="47" width="30%" align="center" id="row6" rowspan="2">DESCRIZIONE</td>
        <td height="25" width="26%" align="center" id="row6" colspan="2">CASSA</td>
        <td height="25" width="26%" align="center" id="row6" colspan="2">BANCA</td>
        <td height="47" width="5%" align="center" id="row6" rowspan="2">CANC</td>
    </tr>
    <tr>
        <td height="22" width="13%" align="center" id="row6"><font color="#00FF00">ENTRATA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#FF5050">USCITA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#00FF00">ENTRATA</font></td>
        <td height="22" width="13%" align="center" id="row6"><font color="#FF5050">USCITA</font></td>
    </tr>
    
    <?
// Recupero i record per la pagina corrente...
// utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM primanota ORDER BY giorno, id  LIMIT $first$x_pag";
$risultato mysql_query($query); 

$i 0;
while (
$record mysql_fetch_array($risultato)) {
$id $record["id"];
$data $record["data_it"];
$desc =   $record["descrizione"];
$cassain =  $record["cassa_in"];
$cassaout $record["cassa_out"];
$bancain =  $record["banca_in"];
$bancaout $record["banca_out"];

if (
$cassain != 0.00
{
$cassainvis number_format($cassain2',''.');
}
else {
$cassainvis "";}

if (
$cassaout != 0.00
{
$cassaoutvis number_format($cassaout2',''.');
}
else {
$cassaoutvis "";}

if (
$bancain != 0.00
{
$bancainvis number_format($bancain2',''.');
}
else {
$bancainvis "";}

if (
$bancaout != 0.00
{
$bancaoutvis number_format($bancaout2',''.');
}
else {
$bancaoutvis "";}

 
$i = (++$i 2);
    echo 
"<tr class=alternate".$i.">
        <td height=\"54\" width=\"10%\" align=\"center\" id=\"row7\">
$data</td>
        <td height=\"54\" width=\"30%\" align=\"left\" id=\"row7\">
$desc</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$cassainvis</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$cassaoutvis</td>
        <td height=\"54\" width=\"13%\" align=\"center\" id=\"row7\">
$bancainvis</td>
        <td height=\"54\" width=\"10%\" align=\"center\" id=\"row7\">
$bancaoutvis</td>
        <td height=\"54\" width=\"5%\" align=\"center\" id=\"row7\"><a href=\"nota.php?task=dom_delete&id=
$id\">
        <img border=\"0\" alt=\"Elimina Record\" src=\"stili/delete.gif\"/></a></td>        
        </tr>"
;    
    }    
    
?>
    
    <tr>
<td height="30" colspan="2" align="left" id="row9">Tot. Primenote: <?echo $num_righe?>
</td>
<td height="30" colspan="2" align="center" id="row8">
<?
echo $num_righe;
// Se le pagine totali sono più di 1...
// stampo i link per andare avanti e indietro tra le diverse pagine!
if ($all_pages 1){
  if (
$pag 1){
    echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" . ($pag 1) ."&task=ricerca&inizio=$inizio&fine=$fine""\">Pag. Indietro</a>";
    echo
"";
  } 
  if (
$all_pages $pag){
    echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" . ($pag 1) . "&task=ricerca&inizio=$inizio&fine=$fine"."\">Pag. Avanti</a>";   
  } 
}
?>
</td>
<td height="30" colspan="3" align="right" id="row9">Pagina <? echo $pag."di".$all_pages?>
</td>
</tr>
    </table>

 <?
}else { echo "<center>[b]Non ci sono registrazioni[/b]</center>";}

?>   
  
  </td>
  </tr>
  </table>
  </div>
  <?
}
  

  
 
 }



?>





<?
switch($_REQUEST['task']) {
case 
'ricerca':
        
ricerca($_REQUEST['inizio'], $_REQUEST['fine']);
        break; 
        
}
?>

La prima di cui sopra va bene,
la seconda ha problemi di paginazione.
Mii stampa risultati sballati, poi non funziona i link avanti che porta ad una pagina bianca.

Potete aiutarmi?

Grazie