Salve ragazzi,
uso spesso uno script per impaginare risultati estratti da una query, oggi ho notato un bug, ovvero finchè la query estrae tutti i record, funziona benissimo, se invece , tipo attraverso un form, faccio dei filtri , la query funziona perfettamente , mi mostra solo quelli ricercati, ma sotto i numeri di pagina, tipo metto limite a 20, faccio cerca, mi trova solo 4 risultate io effettivamente vedo solo i quattro risultati, ma numero di pagine invece rimangono quelli di tutti i record, e se si clicca sulla seconda pagine escono record della query generale.
Lo script è questo
Codice PHP:
// esecuzione prima query
if (! $db->Query("SELECT * FROM annunci WHERE attivo ='0'")) echo $db->Kill();
$tot_records = $db->RowCount();
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 20;
// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);
// pagina corrente
$current_page = (!$_GET['pagi']) ? 1 : (int)$_GET['pagi'];
// primo parametro di LIMIT
$primo =($current_page - 1) * $per_page;
if($_POST['ordina']!=''){
$order=$_POST['ordina'];
}else{
$order='DESC';
}
$price=$_POST['prezzo'];
$sqlSearch = " WHERE 1=1 ";
if($_REQUEST['id'] != ""){
$sqlSearch .= " AND idCategoria = '{$_REQUEST['id']}'";
}
if($_REQUEST['id_reg'] != ""){
$sqlSearch .= " AND id_reg = '{$_REQUEST['id_reg']}'";
}
if($_REQUEST['id_provincia'] != ""){
$sqlSearch .= " AND id_provincia = '{$_REQUEST['id_provincia']}'";
}
if($_REQUEST['idComune'] != ""){
$sqlSearch .= " AND idComune = '{$_REQUEST['idComune']}'";
}
if($_REQUEST['annuncio'] != ""){
$sqlSearch .= " AND (annuncio LIKE '%".$_REQUEST['annuncio']."%')";
}
$sqlSearch .= " AND attivo='0' ";
$select_from_clauses = "SELECT * FROM annunci ";
if($_REQUEST['annuncio'] !='' || $_REQUEST['id']!='' || $_REQUEST['id_reg']!='' || $_REQUEST['id_provincia']!='' || $_REQUEST['idComune']!='' ){
$imp= " ORDER BY idAnnuncio {$order} LIMIT $primo, $per_page";
echo $per_page;
$ricerca =$db2->Query( $select_from_clauses.$sqlSearch.$imp);
}else{
$ricerca =$db2->Query($select_from_clauses." ORDER BY idAnnuncio {$order} LIMIT $primo, $per_page");
}
Non riesco a capire dov'è il problema?
Grazie per le risposte