Mam pewien problem. W tym momencie moja wyszukiwarka oparta o bazę danych MySQL bazuje na kilku kolumnach. Mianowicie pobiera dane z warunkiem WHERE z jednej tabeli z kilku kolumn:
$pobierz = mysql_query("(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%') UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE tresc LIKE '%{$wynik_filtru}%') UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE kategoria LIKE '%{$wynik_filtru}%') ORDER BY `id` DESC LIMIT $aktualnie, $na_stronie");
Problem polega na tym, że jeżeli dany wyraz znajduje się w kolumnie tresc, kategoria oraz nazwa to wyniki przy wyświetlaniu się powielają. Jak tego uniknąć?
{ if($wiersz['nazwa'] != '') { $wyraz = $wyrazy; '[big]','[/big]','[p]','[/p]','','','','', '','','[hr=([0-9]{1,2}|100)]','[/hr]'); echo ''.$i.'<a style="text-decoration: none;" href="index.php?page=kat&subkat='.$wiersz['kategoria'].'&id='.$wiersz['id'].'"><b>'.zabezpiecz($wyrazek).'</b></a>'; } }
Rozwiązane:
$pobierz = mysql_query("(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%' or tresc LIKE '%{$wynik_filtru}%' or kategoria LIKE '%{$wynik_filtru}%') ORDER BY `id` DESC LIMIT $aktualnie, $na_stronie");