Witam.
Mam pewien problem. A mianowicie. Wyszukiwarka wygląda mniej więcej tak:
if(!empty($_GET['nazwa'])) {
$zmienna = "nazwa_miejsca LIKE '%".$_GET['nazwa']."%'";
}
else
{
$zmienna = "nazwa_miejsca LIKE '%%'";
}
if(!empty($_GET['kategoria'])) {
$zmienna1 = "AND kategoria = ".$_GET['kategoria']."";
}
if(!empty($_GET['kraj'])) {
$zmienna2 = "AND kraj = ".$_GET['kraj']."";
}
if(!empty($_GET['miasto'])) {
$zmienna3= "AND miasto LIKE '%".$_GET['miasto']."%'";
}
//zapytanie
$zap = mysql_query("select ocena, ilosc_opini, ocena/ilosc_opini as ocena_cala, miejsca.id as ajdi, nazwa_miejsca, kategorie.nazwa as nazwa_kat, zdjecie1, kraj, countrylist.nazwa as kraj_nazwa, miasto FROM miejsca INNER JOIN countrylist ON(miejsca.kraj=countrylist.id) INNER JOIN kategorie ON(kategorie.id = miejsca.kategoria) where nazwa_miejsca LIKE '%$nazwa%' ".$zmienna1." ".$zmienna2." ".$zmienna3." ORDER BY ocena_cala DESC LIMIT $l1,$l2");
Do tego oczywiście formularz.
Problem jest z paginacją, skrypt paginacji zlicza rekordy w ten sposób:
list
($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where nazwa_miejsca LIKE '%$nazwa%' ".$zmienna1." ".$zmienna2." ".$zmienna3.""));
I tutaj pojawia się problem. Wszystko jest ok gdy zmienna $nazwa zawiera jakąś wartość, wtedy stronicowanie działa poprawnie.Gorzej gdy np. istnieje tylko $zmienna1, wtedy rekordy poprawnie są wyświetlane bo zapytanie wygląda dobrze, niestety z liczeniem rekordów już jest gorzej, nie zlicza tych rekordów, które mają być zliczone(warunek w $zmienna1) lecz liczy wszystkie z bazy danych...
Myślałem, żeby to zrobić w ten sposób:
if(!empty($_GET['nazwa'])) {
list
($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where nazwa_miejsca LIKE '%$nazwa%' ".$zmienna1." ".$zmienna2." ".$zmienna3."")); }
elseif(!empty($_GET['kategoria'])) {
$zmienna5 = "kategoria = ".$_GET['kategoria']."";
}
Ale ani nie jest to chyba do końca dobre rozwiązanie, a na pewno mało efektywne.
Proszę o jakąkolwiek pomoc.
Pozdrawiam.