Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Wyszukiwarka z szukaniem znak po znaku
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Witam serdecznie,
Mam problem z wyszukiwarką...

Chcę zrobić wyszukiwarkę która szuka zamiennie słowa (przykładowo wpisując "auto myjnia" i "myjnia auto" ma zwracać takie same wyniki) oraz
w momencie gdy ktoś użyje (lub nie użyje) polskich znaków przykładowo "łożysko" oraz "lożysko" - żeby wyświetlała wyniki z obu fraz...

kombinuję z takim kodem:

  1. $fraza = $_GET['szybkoszukaj'];
  2. $subquery = null;
  3.  
  4. if ($fraza != "") {
  5. //$subquery .= " name like '%".$fraza."%' and ";
  6. $zwrot = explode(' ', $fraza);
  7. $pet = str_replace("l", "ł", $zwrot[0]);
  8.  
  9. $subquery .= " and (nazwa LIKE '%$zwrot[0]%' or bf_id LIKE '%$zwrot[0]%' or bf_id LIKE '%$pet%') ";
  10. $i = 0;
  11. foreach ($zwrot as $z) {
  12. if ($i > 0) {
  13. $pet = str_replace("l", "ł", $fraza);
  14. $subquery = $subquery . " and (nazwa LIKE '%$z%' or bf_id LIKE '%$z%' or bf_id LIKE '%$pet%')";
  15. }
  16. $i++;
  17. }
  18.  
  19. //$subquery=$subquery." or name LIKE '%$pet%' ";
  20. $subquery .= $subquery . ' ';
  21. }



ale nie bardzo chce działać (IMG:style_emoticons/default/sad.gif)
Macie może pomysł co mam źle w tym kodzie?


Z góry dziękuje za pomoc,
Northwest

Ten post edytował northwest 11.10.2012, 11:15:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
northwest
post
Post #2





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


łożysko może być także w rowerze, samochodzie itp (IMG:style_emoticons/default/wink.gif)

całe zapytanie wygląda tak: SELECT * FROM produkty WHERE enable = '1' AND (nazwa LIKE '%chłodnica%' or bf_id LIKE '%chłodnica%') AND (nazwa LIKE '%chlodnica%' or bf_id LIKE '%chlodnica%') AND (nazwa LIKE '%chłodnica%' or bf_id LIKE '%chłodnica%') AND (nazwa LIKE '%chlodnica%' or bf_id LIKE '%chlodnica%') ORDER by nazwa ASC

(przykładowo)

dokładnie , jak ktoś wpisze "łożysko" - chce szukać jako "łożysko" i "lożysko"... (IMG:style_emoticons/default/smile.gif)

Kodowanie strony mam w UTF8, kodowanie bazy w: utf8_unicode_ci

czyli zapytanie ma wyglądać następująco:
LIKE REGEXP 'łożysko|lożysko|'


(IMG:style_emoticons/default/questionmark.gif)

coś takiego:

  1. SELECT * FROM `produkty` WHERE nazwa LIKE REGEXP 'chłodnica|chlodnica|'
(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 15:43