Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Porónanie zapytania bez polskich znaków
kkuubbaa88
post
Post #1





Grupa: Zarejestrowani
Postów: 510
Pomógł: 1
Dołączył: 27.08.2007

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


witam

mam przykładową bazę w której znajdują się wartości z polskimi znakami np:

strzelać, nowy dom, góra, czarno-białe

i teraz po wpisaniu w przeglądarce przykładowych linków:

www.strona.pl/strzelac
www.strona.pl/nowy-dom
www.strona.pl/gora
www.strona.pl/czarno-biale

chcialbym pobrać wartość id rekordu po porownaniu podanej zmiennej z wartoscia w bazie. czy istnieja jakiekolwiek sposoby, aby mozna bylo tego typu wyrazy porownac i odnaleźć ? istnieja jakies funkcje w mysql, aby to działalo ?
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


http://dev.mysql.com/doc/refman/5.0/en/reg...operator_regexp
http://dev.mysql.com/doc/refman/5.0/en/str...unction_replace

Ten post edytował CuteOne 9.11.2010, 11:42:24
Go to the top of the page
+Quote Post
kkuubbaa88
post
Post #3





Grupa: Zarejestrowani
Postów: 510
Pomógł: 1
Dołączył: 27.08.2007

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


nie wiem czy to zda egzamin. wartości z polskimi znakami mam w bazie, a w pasku adresu podaje bez polskich. teraz pobieram wartosc z paska i staram sie pobrac id rekordu, ktory pasuje do tej wartosci bez polskichznakow. chcac wyszukac wartosc z bazy musze dac przykladowo:
  1. SELECT * FROM tablica WHERE kolumna = REPLACE(nazwa_pola,'ąęśćółżźń','aescolzzn') LIMIT 0,1;

co raczej nie działa. jest inny sposob, aby to wyszukac ?
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. SELECT * FROM tablica WHERE kolumna = REPLACE(nazwa_pola,'ąęśćółżźń','aescolzzn') LIMIT 0,1;

niestety sql to nie php w funkcji replace możesz zamienić tylko jeden znak, więc zmiana tego uciążliwa. Użyj str_replace
Go to the top of the page
+Quote Post
qasz
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


Jeżeli masz bazę w utf8_polish_ci to na pewno będzie działać z LIKE np. SELECT * FROM miasta WHERE miasto like "Krakow" i zwróci ładnie Kraków. Pamiętaj tylko, żeby połączenie do bazy było też w UTF8.

Ten post edytował qasz 1.12.2010, 10:17:56
Go to the top of the page
+Quote Post
webdice
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o COLLATE.
Go to the top of the page
+Quote Post
kkuubbaa88
post
Post #7





Grupa: Zarejestrowani
Postów: 510
Pomógł: 1
Dołączył: 27.08.2007

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


już wcześniej myślałem o like, ale i on nie działa w taki sposób. trzeba podać z polskimi znakami, aby cokolwiek ruszył

a czy collate coś da ? w tabelach mam utf8_polish_ci na stronach kodowanie utf8 i do połączenia uzywam utf8
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(kkuubbaa88 @ 1.12.2010, 16:44:16 ) *
(...) a czy collate coś da ? (...)


Nie, nabijam sobie posty.
Go to the top of the page
+Quote Post
qasz
post
Post #9





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


Cytat(kkuubbaa88 @ 1.12.2010, 16:44:16 ) *
już wcześniej myślałem o like, ale i on nie działa w taki sposób. trzeba podać z polskimi znakami, aby cokolwiek ruszył


Nie prawda, testujesz w php'ie czy phpmyadminie,navicacie ? Sprawdź czy nie masz przypadkiem porównania np. &265; z ę (te 265 wyssane z palca). Mój skrypt to robi i działa na 100%.

Go to the top of the page
+Quote Post
kkuubbaa88
post
Post #10





Grupa: Zarejestrowani
Postów: 510
Pomógł: 1
Dołączył: 27.08.2007

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


testowałem i bezpośrednio w phpadminie oraz z php i niestety like nie wynajduje żadnych rekordów... może powiesz w jaki sposób zrobiłeś, że zadziałało ?

ma ktoś jakiś pomysł ?

(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 22:15