Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie SQL: LIKE, UPPER z polskimi znakami diakrytycznymi
jakubmroz.com
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.06.2008
Skąd: Kraków

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


Witam,
Mam pewien problem. Mianowicie w bazie mam tabele, w której jest pole Varchar. Kodowanie UTF8, general_polish_ci. Pole zawiera imię i nazwisko z polskimi znakami diakrytycznymi (ą,ć,ł...) chciałbym aby SELECT'em wybrać te wiersze gdzie pole imieinazwisko = podane imie i nazwisko (z formularza, z pośrednictwem PHP).

Zapytanie SELECT imieinazwisko FROM mojatabela WHERE UPPER(imieinazwisko) LIKE '%$wartosc%' nie działa. Zastanawiam się czy zapytanie zbudowałem źle czy też użycie UPPER jest niepoprawnie zastosowane.

Jak najłatwiem rozwiązać ten problem?

Doszedłem do etapu I czyli "poznanie problemu".

Zapytanie powinno wyglądać następująco:
SELECT UPPER(imieinazwisko) FROM mojatabela WHERE imieinazwisko LIKE '%ŁUCJA RWĘĆKA%'

Problem teraz z '%ŁUCJA RWĘĆKA%'


Ten post edytował jakubmroz.com 24.06.2008, 21:34:36
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Gotowiec:

  1. <?php
  2. function zamien($txt) {
  3. $txt = strtr($txt,"ĄĆĘŁŃÓŚŻŹąćęłńóśżź","ACELNOSZZacelnoszz");
  4. $txt = strtr($txt, array("a"=>"[aą]","c"=>"[cć]","e"=>"[eę]",
  5. "l"=>"[lł]","n"=>"[nń]","o"=>"[oó]","s"=>"[sś]","z"=>"[zżź]"));
  6. $txt = strtr($txt, array("A"=>"[AĄ]","C"=>"[CĆ]","E"=>"[EĘ]",
  7. "L"=>"[LŁ]","N"=>"[NŃ]","O"=>"[OÓ]","S"=>"[SŚ]","Z"=>"[ZŻŹ]"));
  8. return $txt;
  9. }
  10.  
  11. $txt = zamien("cwierc ŻÓŁWIA");
  12. $wynik = mysql_query("SELECT * FROM tabela WHERE opis RLIKE '$txt'"); // WHERE opis RLIKE '[cć]wi[eę]r[cć] [ZŻŹ][OÓ][LŁ]WI[AĄ]';
  13. ?>
Go to the top of the page
+Quote Post
jakubmroz.com
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.06.2008
Skąd: Kraków

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


Dziękuję za ciekawy pomysł.
Udało mi się z powyższym zapytaniem. W phpMyAdminie nie działa ze względu na "nie wymuszone" kodowanie znaków.
W PHP wystarczy zmienić kodowanie na utf, zamienić na duże litery i po sprawie.

Ten post edytował jakubmroz.com 25.06.2008, 11:01:41
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: 24.08.2025 - 16:31