Witam.

Mam pewien problem. A mianowicie. Wyszukiwarka wygląda mniej więcej tak:

  1. if(!empty($_GET['nazwa']))
  2. {
  3.  
  4. $zmienna = "nazwa_miejsca LIKE '%".$_GET['nazwa']."%'";
  5. }
  6.  
  7. else
  8. {
  9. $zmienna = "nazwa_miejsca LIKE '%%'";
  10.  
  11.  
  12. }
  13.  
  14. if(!empty($_GET['kategoria']))
  15. {
  16.  
  17. $zmienna1 = "AND kategoria = ".$_GET['kategoria']."";
  18. }
  19.  
  20. if(!empty($_GET['kraj']))
  21. {
  22.  
  23. $zmienna2 = "AND kraj = ".$_GET['kraj']."";
  24. }
  25. if(!empty($_GET['miasto']))
  26. {
  27.  
  28. $zmienna3= "AND miasto LIKE '%".$_GET['miasto']."%'";
  29. }
  30.  
  31. //zapytanie
  32.  
  33. $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:

  1. 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:

  1. if(!empty($_GET['nazwa']))
  2. {
  3. list($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where nazwa_miejsca LIKE '%$nazwa%' ".$zmienna1." ".$zmienna2." ".$zmienna3.""));
  4. }
  5. elseif(!empty($_GET['kategoria']))
  6. {
  7.  
  8.  
  9. $zmienna5 = "kategoria = ".$_GET['kategoria']."";
  10.  
  11.  
  12. list($records)=mysql_fetch_row(mysql_query("SELECT count(*) FROM miejsca where ".$zmienna5." ".$zmienna6." ".$zmienna6.""));
  13.  
  14. }


Ale ani nie jest to chyba do końca dobre rozwiązanie, a na pewno mało efektywne.

Proszę o jakąkolwiek pomoc.

Pozdrawiam.