siewca
5.02.2010, 13:15:11
Witam
Zrobiłem wyszukiwarkę która szuka rekordów w bazie MySQL. Wszystko jest ok poza jedną kwestią.
Wyszukiwarka szuka za pomocą LIKE %wartosc%
Tak więc wszystko jedno czy wpiszemy kawałek szukanej treści, olewa też małe i duże litery. Problem pojawia się wtedy gdy mamy dużą literę z ogonkiem (Ś,Ź,Ż itp.).
Chcąc wyszukać wartość Łucja, gdy wpiszemy łucja, nic nam nie znajdzie.
Wiecie może jak rozwiązać ten problem? żeby znajdowało bez względu na wielkość liter, nawet z polskimi znakami?
blooregard
5.02.2010, 13:18:58
SELECT BLA BLA BLA ... LIKE LOWER(pole) LIKE '%" . strtolower($szukany_string) . " %' ...
nospor
5.02.2010, 13:20:07
Skoro dales temat w dziale php rozumiem ze chcesz rozwiązac problem w php. A wiec:
wywal tego LIKE, bo to dziala na poziomie mysql i nam sie nie przyda.
Z bazy pobierz wszystkie rekordy, nawet jak jest ich miliard. Nastepnie kazdy rekord sprawdzaj przy pomocy:
http://pl2.php.net/manual/en/function.mb-stripos.phpTo co bedzie pasowalo to jest to twoj szukany rekord
siewca
5.02.2010, 13:56:07
Wolałbym to załatwić podczas wyciągania rekordów z bazy.
Zastosowałem metodę:
LOWER(pole) LIKE '%" . strtolower($szukany_string) . " %'
Jednak nadal zwraca uwagę na duże i małe polskie znaki
nospor
5.02.2010, 13:58:34
Cytat
Wolałbym to załatwić podczas wyciągania rekordów z bazy.
Sie domyslilem od razu... Moj post mial ci jedynie zasugerowac bys na przyszlosc patrzyl w jakich dzialasz zakladasz temat. przenosze do wlasciwego dzialu.
siewca
5.02.2010, 14:37:47
Sorry za zły dział.
Wiecie może dlaczego nie działa ta metoda o której wyżej napisał kolega? Nie wyrzuca żadnych błędów, po prostu nadal po wpisaniu Ś nie wyszukuje ś.
siewca
5.02.2010, 15:00:38
Dziękuję za pomoc. Pomogło zastosowanie funkcji:
mb_strtolower($zmienna,"UTF-8");
Pozdrawiam