Ciao a tutti.

Mi sono accorto che c'è un problema nella ricerca dei documenti relativa a un progetto che avevo sviluppato tempo fa

In pratica la prima pagina risulta esatta, ma se voglio visualizzare il resto dei risultati della stessa query mi ritrovo con tutti i dati del db.

Per capirci, in un altra pagina (quella con il modulo di selezione) seleziono un cliente (posso scegliere i documenti anche in base ad un certo intervallo di tempo..ma non è importante adesso) e visualizzo inviando le variabili al codice della pagina sotto i risultati che interessano; ad esempio per il cliente Tal dei tali ci sono 6 fatture, la pagina dovrebbe visualizzare un elenco con i dati dei primi 5 (ho impostato l'intervallo così per prova) e nella successiva seconda pagina (pag2) il rimanente documento. Ok?

Ecco se clicco su pagina 2 mi ritrovo con parte di tutti gli altri documenti di tutti i clienti ( come si avessi fatto una query che dovrebbe restituirmi tutto quello che c'è nel db).

Codice PHP:
....

else {

include("dati.php");
$link=mysql_connect("$db_host","$db_login","$db_pass")
or die ("Non riesco a connettermi a [b]$db_host");

mysql_select_db ($database, $link)
or die ("Non riesco a selezionare il db $database
");

if (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']==""))
   {
$tutto = "SELECT * FROM fatture ORDER BY data";
     }
     
      elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']==""))
     {
    $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' ORDER BY data";
     }
    
     elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']==""))
     {
     list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
     $datain = mktime(0,0,0,$mese,$giorno,$anno);
     $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' and data >= '".$datain."' ORDER BY data";
     }
    
      
  .........//ci sono altre condizioni qui               

$righe_per_pagina = 5;
if (!isset($_REQUEST['pagina'])) $pagina = 1;
else {
    if ($_REQUEST['pagina'] <= 0) $pagina = 1;
    else $pagina = $_REQUEST['pagina'];
    }
    
global $pagina, $righe_per_pagina;
    
$query = mysql_query ($tutto,$link)
or die ("Non riesco ad eseguire la richiesta $tutto");
$totr=mysql_num_rows($query);

// arrotonda al numero intero + alto
    $numero_pagine = ceil($totr/$righe_per_pagina);
    
// calcola il numero della pagina corrente
    $pagina_corrente= ceil($pagina-1/$righe_per_pagina);          

echo " <div align=center>[b]Pagina $pagina_corrente di $numero_pagine[/b]</div>

[b]Numero fatture trovate: <font color=\"#FF0000\" size=\"5\"> ".$totr." </font>[/b] <a href=\"ricerca.php\">Ritorna al modulo</a>



<table border=1 width=\"600\" cellspacing=\"0\" cellpadding=\"5\"><tr>
  <td width='80' align='center'>[b]Fattura N°[/b]</td>
  <td width='150' align='center'>[b]Data[/b]</td>
  <td width='250' align='center'>[b]Cliente[/b]</td>
  <td width='120'align='center'>[b]Dettagli[/b]</td></tr></table>
";

$tutto.=" LIMIT ".(($pagina-1)*$righe_per_pagina).", ".$righe_per_pagina;
$querylim = mysql_query ($tutto,$link)
or die ("Non riesco ad eseguire la richiesta $tutto");    
if (mysql_num_rows($querylim) > 0) {
while( $row = mysql_fetch_array($querylim) )
   {
   $cust = $row["id_fattura"];
   
   $querycust = mysql_query("SELECT * FROM clientidb JOIN fatture ON clientidb.id_user=fatture.id_cliente
   WHERE fatture.id_fattura = $cust",$link);
   
   while( $rowcust = mysql_fetch_array($querycust) )
{
   $cognome_cliente = $rowcust["cognome"];
   $nome_cliente    = $rowcust["nome"];
  }
?>
<html>
<script type="text/javascript">
function PopupCentrata(dest_url) {
    var w = 600;
    var h = 800;
    var l = Math.floor((screen.width-w)/2);
    var t = Math.floor((screen.height-h)/2);
    window.open(dest_url, "nome_finestra", "width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
</script>  
</html>
<?   
echo "
<table border=0 width=\"600\" cellspacing=\"3\"><tr>
  <td width='80' align='right'>[b]
$row[numero_fatt][/b]</td>
  <td width='150' align='center'>[b]"
.date("d/m/y"$row['data'])."[/b]</td>
  <td width='125' align='left'>[b] 
$cognome_cliente[/b]</td>
  <td width='125' align='left'>[b] 
$nome_cliente[/b]</td>
  <td width='120'align='center'>[b]<a href=\"#\" onClick=\"PopupCentrata('filmato.php?variabile=
$cust')\">Visualizza</a>[/b]</td>
  </tr>
  </table>"
;
}

echo 
$_REQUEST['id_user'];
  
echo 
"<center>
"
;
if (
$numero_pagine 1) {
//inizio della condizione per creare l'elenco delle pagine
for ($pag 1$pag <= $numero_pagine$pag++) {
echo 
"[&nbsp<a href=?";
echo 
"pagina=".($pag).
" title=\"Vai a pagina $pag\">".$pag."</a>&nbsp]&nbsp";
}
// fine "elenco"

echo "</center>";

}
  }
?>
Penso di aver individuato il problema.
Richiamando le restanti pagine della paginazione dei dati in pratica perdo le variabili dei request e viene eseguita la prima query (cioè la prima quella che richiama l'elenco completo)....credo.
Come devo risolvere la cosa?
Ho provato, ma il problema è più ostico del previsto.
Potete almeno darmi un'idea?
Grazie