Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wyszukiwarka, szukaj wszystkich słów
Arek00
post 12.12.2007, 12:36:13
Post #1





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


obecnie mam wyszukiwarkę która działa na zasadzie SELECT * FROM tabela WHERE kolumn like '%fraza%' czyli wyszukuje całą wpisaną frazę. chciałbym ją zmienić na taką która będzie szukała rekordu który ma wszystkie słowa zawarte w frazie czyli np. przy frazie "jeden trzy" w wyniku będzie rekord "jeden dwa trzy". wymyśliłem sobie coś takiego:
  1. <?php
  2.  
  3. $fraza = "jeden dwa trzy cztery";
  4.  
  5. $tablica = explode(' ', $fraza);
  6.  
  7. $zapytanie = "SELECT * FROM lista WHERE dostepnosc LIKE 'T'";
  8.  
  9. $dlugosc = count($tablica);
  10. for ($i=0; $i<=$dlugosc-1; $i++){
  11.  $zapytanie .= " AND (producent LIKE '%$tablica[$i]%' OR model LIKE '%$tablica[$i]%')";
  12. }
  13. $zapytanie .= " ORDER BY kategoria, cena ASC";
  14. echo $zapytanie;
  15.  
  16. ?>


przy frazie
Kod
"jeden dwa trzy cztery"
powstaje takie zapytanie:
  1. 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:
  1. 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:
  1. <?php
  2.  
  3. $fraza = "jeden  dwa trzy cztery";
  4.  
  5. $tablica = str_word_count($fraza, 1);
  6.  
  7. $zapytanie = "SELECT * FROM lista WHERE dostepnosc LIKE 'T'";
  8.  
  9. $dlugosc = count($tablica);
  10. for ($i=0; $i<=$dlugosc-1; $i++){
  11.  $zapytanie .= " AND (producent LIKE '%$tablica[$i]%' OR model LIKE '%$tablica[$i]%')";
  12. }
  13. $zapytanie .= " ORDER BY kategoria, cena ASC";
  14. echo $zapytanie;
  15.  
  16. ?>

jak zrobić żeby pomijało pojedyńcze litery czyli dla frazy "Jacek i Placek" będzie szukać tylko słow Jacek Placek

Ten post edytował Arek00 12.12.2007, 14:16:30
Go to the top of the page
+Quote Post

Posty w temacie
- Arek00   [php] wyszukiwarka   12.12.2007, 12:36:13
- - athabus   Witam, http://www.symfony-project.org/askeet/1_0/...   12.12.2007, 14:25:04


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 11:39