Witam wszystkich.
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:

  1. $pobierz = mysql_query("(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%')
  2. UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `zdjecie` FROM cms_sklep_produkty WHERE tresc LIKE '%{$wynik_filtru}%')
  3. 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");
  4.  



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ąć?

  1. while ($wiersz = mysql_fetch_array($pobierz))
  2. {
  3. if($wiersz['nazwa'] != '')
  4. {
  5. $wyraz = explode(' ',substr($wiersz['nazwa'], 50));
  6. $wyrazy = substr($wiersz['nazwa'], 0, 50).$wyraz[0];
  7. $wyraz = $wyrazy;
  8. $array = array('','','','','','','','','[small]','[/small]',
  9. '[big]','[/big]','[p]','[/p]','
    ','
    '
    ,'','',
  10. '','','[hr=([0-9]{1,2}|100)]','[/hr]');
  11. $wyrazek = str_replace($array,'',$wyraz);
  12. echo ''.$i.'<a style="text-decoration: none;" href="index.php?page=kat&subkat='.$wiersz['kategoria'].'&id='.$wiersz['id'].'"><b>'.zabezpiecz($wyrazek).'</b></a>';
  13. echo'<br /><br />';
  14. }
  15. }


Rozwiązane:

  1. $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");
  2.