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>
<p><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($cassain, 2, ',', '.');
}
else {$cassainvis = "";}
if ($cassaout != 0.00)
{$cassaoutvis = number_format($cassaout, 2, ',', '.');
}
else {$cassaoutvis = "";}
if ($bancain != 0.00)
{$bancainvis = number_format($bancain, 2, ',', '.');
}
else {$bancainvis = "";}
if ($bancaout != 0.00)
{$bancaoutvis = number_format($bancaout, 2, ',', '.');
}
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;
}
?>
Il problema è che mi stampa risultati sballati e il link avanti mi riporta ad una pagina bianca.