<?php $fraza = "jeden dwa trzy cztery"; $zapytanie = "SELECT * FROM lista WHERE dostepnosc LIKE 'T'"; for ($i=0; $i<=$dlugosc-1; $i++){ $zapytanie .= " AND (producent LIKE '%$tablica[$i]%' OR model LIKE '%$tablica[$i]%')"; } $zapytanie .= " ORDER BY kategoria, cena ASC"; ?>
przy frazie
Kod
"jeden dwa trzy cztery"
powstaje takie zapytanie:
SELECT * FROM lista WHERE dostepnosc LIKE 'T' AND (producent LIKE '%jeden%' OR model LIKE '%jeden%') AND (producent LIKE '%%' OR model LIKE '%%') AND (producent LIKE '%dwa%' OR model LIKE '%dwa%') AND (producent LIKE '%trzy%' OR model LIKE '%trzy%') AND (producent LIKE '%cztery%' OR model LIKE '%cztery%') ORDER BY kategoria, cena ASC
ale przy frazie
Kod
"jeden dwa trzy cztery"
powstaje takie zapytanie i w efekcie wynik zawiera wszystkie rekordy:
SELECT * FROM lista WHERE dostepnosc LIKE 'T' AND (producent LIKE '%jeden%' OR model LIKE '%jeden%') AND (producent LIKE '%%' OR model LIKE '%%') AND (producent LIKE '%dwa%' OR model LIKE '%dwa%') AND (producent LIKE '%trzy%' OR model LIKE '%trzy%') AND (producent LIKE '%cztery%' OR model LIKE '%cztery%') ORDER BY kategoria, cena ASC
===========================================
zmieniłem explode na str_word_count i jest niby ok. proszę o poradę czy tak się realizuje czy jakoś inaczej? aktualny kod:
<?php $fraza = "jeden dwa trzy cztery"; $zapytanie = "SELECT * FROM lista WHERE dostepnosc LIKE 'T'"; for ($i=0; $i<=$dlugosc-1; $i++){ $zapytanie .= " AND (producent LIKE '%$tablica[$i]%' OR model LIKE '%$tablica[$i]%')"; } $zapytanie .= " ORDER BY kategoria, cena ASC"; ?>
jak zrobić żeby pomijało pojedyńcze litery czyli dla frazy "Jacek i Placek" będzie szukać tylko słow Jacek Placek