![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 18.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
istnieje zapytanie do bazy mysql z pominieciem polskich znaków np: mam odnaleść słowo: "Żółw" -> a w zapytaniu chce wpisać "Zolw" da rade? przykład:
w bazie jest rekort z polskimi znamami = "Żółw" Jeżeli istnieje taka funkcja bardzo prosze o pomoc, dzieki! kodowanie bazy to "latin2_general_ci" Ten post edytował lysyluszowice 21.12.2008, 12:38:59 |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
przy kodowaniu w bazie latin2_general_ci ten kod powinien działać dokładnie tak jak potrzebujesz, chyba, że kodowanie tej tabeli albo tego pola jest inne niż całej bazy, wtedy możesz uzyć dodatkowej klauzuli COLLATE:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 23.03.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mi niestety takie rozwiązanie nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Walczyłem z tym na wiele sposobów ale żadne nie przyniosło oczekiwanego rezultatu. Kodowanie bazy mam w utf8_general_ci jak i porównywanie znaków. Czy zatem udało się komuś przy tym kodowaniu rozwiązać problem wyszukiwania polskich wyrazów przy wpisaniu bez polskich znaków? Tradycyjnie "zolw" wynajduje "żółw". Z góry dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) pozdrowienia |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 24.10.2004 Skąd: TG Ostrzeżenie: (0%) ![]() ![]() |
przekonwertuj znaki które pochodzą z pola edycyjnego użytkownika
a w zapytaniu zamiast LIKE użyj RLIKE |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
mam podobny problem
W bazie mam nazwiska z polskimi znakami, jednak wyszukiwarka jest przeznaczona m.in. dla obcokrajowców. Potrzebuję aby po kliknięciu w literkę S zostały mi wyświetlone nazwiska zarówno na literkę S jak i Ś Zrobiłem tak jak poniżej - lecz co przekombinowałem - zwraca mi nazwiska z wszystkimi polskimi znakami czyli na Ś i na Ż też po kliknięciu w każdą literkę. (w dodatku nie podmienia tekstu startowego). Jestem dość początkujący, i robię czasem podstawowe błędy. Kod if($letter) { $letter = strtr($letter2,"ĄĆĘŁŃÓŚŻŹąćęłńóśżź","ACELNOSZZacelnoszz"); $letter = strtr($letter2, array("c"=>"[ć]",""=>"[ł]","o"=>"[ó]","s"=>"ś","z"=>"[ż]","z"=>"[ź]")); $letter = strtr($letter2, array("C"=>"[C]","L"=>"[Ł]","O"=>"[Ó]","S"=>"Ś","Z"=>"[Ż]","Ź"=>"[Ź]")); $getWord=mysql_query("SELECT nazwisko FROM fnt WHERE nazwisko LIKE '$letter%' GROUP BY nazwisko", $db); if($getWordArray=mysql_fetch_array($getWord)) { do { echo "<br><a href=\"index.php?nazwisko="; printf($getWordArray["nazwisko"]); echo "\">"; printf($getWordArray["nazwisko"]); echo "</a>"; } while($getWordArray=mysql_fetch_array($getWord)); do { echo "<br><a href=\"index.php?nazwisko="; printf($getWord2Array["nazwisko"]); echo "\">"; printf($getWord2Array["nazwisko"]); echo "</a>"; } rozwiązałem - oto sposób. czy dobry ? Kod if($letter)
{ // nieczułość na polskie literki $letter2 = strtr($letter,"ćłśż","clsz"); $letter2 = strtr($letter, array("c"=>"ć","l"=>"ł","s"=>"ś","z"=>"ż")); $letter3 = strtr($letter,"ź","z"); $letter3 = strtr($letter, array("z"=>"ź")); $getWord=mysql_query("SELECT nazwisko FROM fnt WHERE nazwisko LIKE '$letter%' OR nazwisko LIKE '$letter2%' OR nazwisko LIKE '$letter3%' GROUP BY nazwisko", $db); if($getWordArray=mysql_fetch_array($getWord)) { do { echo "<br><a href=\"index.php?nazwisko="; printf($getWordArray["nazwisko"]); echo "\">"; printf($getWordArray["nazwisko"]); echo "</a>"; } while($getWordArray=mysql_fetch_array($getWord)); Ten post edytował Dopler 21.10.2011, 11:46:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:40 |