Po pierwsze kod podatny na SQL Injection - uzywa zwyklych string concatention zamiast zapytan z parametrami (uzycie znaku ? zamias wartosci i przekazanie wartosci zmiennej jak wykonujesz zapytanie)...
Co do wyswietlania stronami... najpierw:
zamiast
Kod:
SELECT * FROM galeria WHERE kategoria LIKE '$kategoria' AND opis LIKE '%$fraza%'"
uzyc
Kod:
SELECT COUNT(*) AS ilosc FROM galeria WHERE kategoria = ? AND opis like '%?%'
a nazwe kategorii podajesz jako parametr wywolania zapytania... musze odsiwezyc moja wiedze z PHP+MySQL - dawno nic nie pisalem
Moim zdaniem uzycie LIKE do dopasowania kategorii nie ma sensu za grosz... uzyj normalnego porownania...
Majac 'ilosc' wierszy ktore spelniaja warunek, dzielisz to przez ilosc obrazkow na stronie i zaokraglasz wynik do pierwszej calkowitej w gore masz wiec ilosc stron ile trzeba przygotowac aby pokazac wszystkie obrazki...
Teraz odciazymy baze danych - kazemy jej wyswietlac tyle rekordow ile trzeba i tylko te co trzeba!
Kod:
SELECT * FROM galeria WHERE galeria = ? AND opis LIKE '%?%' LIMIT 51,10;
Wartosci 51 i 10 nie sa przypadkowe... zakladam ze pokazujesz 5 strone wynikow a na stronie jest 10 zdjec - pierwsze bedzie mialo wiec numer 51...
Po takim zapytaniu dostaniesz tylko 10 wierszy z bazy (o numerach 51 do 60) a nie wszystko co spelnia te warunki...
Musialbys jednak zmienic kod aby jako parametr na 'klikaczu' z numerem strony do wyswietlenia mial numer strony na prawde... a pozniej poczatek limitu to numer strony * zdjec na stronie + 1 :-)
Wiem ze chaotycznie ale mam nadzieje ze sie przyda...