Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie SQL: LIKE, UPPER z polskimi znakami diakrytycznymi
jakubmroz.com
post 25.06.2008, 09:53:38
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


--------------------
Kto pyta, jest głupcem pięć minut; kto nie pyta, pozostaje nim na całe życie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
JoShiMa
post 25.06.2008, 10:16:25
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 25.06.2008, 10:32:42
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


--------------------
Kto pyta, jest głupcem pięć minut; kto nie pyta, pozostaje nim na całe życie.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:35