allora, ho capito che quello che mi genera errore è il tipo di controllo che faccio,prima di fare la paginazione, in quanto se eseguo questa select:
codice:
$count = mysql_query("SELECT COUNT(ID_ALLOGGI) FROM DatiLod_Mod where DL_DATA_LOG like'%$DATA%' order by DL_DATA_LOG asc");
non ho errori, ma se faccio questi controlli prima di fare la select e quindi la paginazione mi va in errore, questo è quello che faccio in pratica:
codice:
//se nessun campo è valorizzato
if($MATRICOLA=="" && $DATA_LOG=="" && $OPID==""){
//...
}
//controllo valori dei campi dopo digitazione utente(clausola ||(OR))
elseif(preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$MATRICOLA)
|| preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#\.@,;:]/i",$DATA_LOG)
|| preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$OPID)){
//....
}
//controllo valori dei campi dopo digitazione utente(clausola &&(AND))
elseif(preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$MATRICOLA)
&& preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#\.@,;:]/i",$DATA_LOG)
&& preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$OPID)){
//....
}
else{
//se la ricerca è solo per Matricola
if($MATRICOLA!=""){
$select .= (" DL_MATRICOLA='$MATRICOLA'");
}
//se è solo per Data Log
elseif($DATA_LOG!=""){
$select .= (" DL_DATA_LOG like'$DATA_LOG%'");
}
//se è solo per Operatore(OPID)
elseif($OPID!=""){
$select .= (" DL_OPID_LOG='$OPID'");
}
//altrimenti se è per tutti i campi valorizzati per la ricerca
elseif($MATRICOLA!="" && $DATA_LOG!="" && $OPID!=""){
$select .= (" DL_MATRICOLA='$MATRICOLA' and DL_DATA_LOG like'$DATA_LOG%' and DL_OPID_LOG='$OPID'");
}
$count = mysql_query("SELECT COUNT(ID_ALLOGGI) FROM DatiLod_Mod where " . $select . " order by DL_DATA_LOG asc");
$res_count = mysql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 2;
// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);
// pagina corrente
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;
echo "<div align=\"center\">\n<table>\n";
// esecuzione seconda query con LIMIT
$query_limit = mysql_query("SELECT * FROM DatiLod_Mod where DL_DATA_LOG like'%$DATA%' LIMIT $primo, $per_page");
while($results = mysql_fetch_array($query_limit)) {
echo " <tr>\n <td>" . $results['DL_MATRICOLA'] . "</td>
<td>" . $results['DL_DATA_LOG'] . "</td>
<td>" . $results['DL_OPID_LOG'] . "</td>";
echo "</td>\n </tr>\n";
echo "</tr>\n";
}
// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
include("paginazione_1.php");
// in questa cella inseriamo la paginazione
echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
echo " </tr>\n</table>\n</div>";
mysql_close();
ragazzi vi chiedo cortesemente una mano per capire come mai, con i controlli non funziona..sicuramente sbaglio a farli, ma ditemi per favore come ovviare a questo problema...Grazie mille