Mam pewien problem. A mianowicie. Wyszukiwarka wygląda mniej więcej tak:
{ $zmienna = "nazwa_miejsca LIKE '%".$_GET['nazwa']."%'"; } else { $zmienna = "nazwa_miejsca LIKE '%%'"; } { $zmienna1 = "AND kategoria = ".$_GET['kategoria'].""; } { $zmienna2 = "AND kraj = ".$_GET['kraj'].""; } { $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:
{ list($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where nazwa_miejsca LIKE '%$nazwa%' ".$zmienna1." ".$zmienna2." ".$zmienna3."")); } { $zmienna5 = "kategoria = ".$_GET['kategoria'].""; list($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where ".$zmienna5." ".$zmienna6." ".$zmienna6."")); }
Ale ani nie jest to chyba do końca dobre rozwiązanie, a na pewno mało efektywne.
Proszę o jakąkolwiek pomoc.
Pozdrawiam.