Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych bez pol.znaczków/wielkich liter
Forum PHP.pl > Forum > Bazy danych > MySQL
superator
Witam wszystkich
Mam prośbę o poradę. Mianowicie chcę pobrać z bazy MySQL (kodowanie latin1) dane odrazu z zamienionym wszstkimi znakami na małe oraz z usuniętymi polskimi znakami. Mam taką koncepcję zapytania, które jednak nie zamienia polskich znaków na znaki bez ogonków:

  1. <?php
  2. $sql="SELECT * FROM tabela WHERE LOWER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
  3. (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
  4. (REPLACE(REPLACE(REPLACE(REPLACE(nazwiska,'xb1','a'),'xe6','c'),'xea','e'),
  5. 'xb3','l'),'xf1','n'),'xf3','o'),'xb6','s'),'xbc','z'),'xbf','z'),'xa1','A'),'xc6','C'),
  6. 'xca','E'),'xa3','L'),'haha.gif1','N'),'haha.gif3','O'),'xa6','S'),'xac','Z'),'xaf','Z'))
  7. LIKE '%".$fraza."%'";
  8. ?>


Czy taki koncept jest słuszny, czy muszę jakoś rozbić to zapytanie na dwa osobne, które jedno będzie pobierać wszystkie dane, a drugie będzie wyszukiwać?

Pozdro 4All
Coolmax
Co do małych liter - nie lepiej po pobraniu danych, a przed samym ich wyświetleniem/użyciem przepuścić to przez strtolower" title="Zobacz w manualu php" target="_manual?
superator
Nie napisałem, że to zapytanie dotyczy wyszukiwarki. Chciałbym, żeby po wpisaniu frazy (która ma już litery pozamieniane na małe i bez pol.znaczków we wcześniejszych liniach skryptu) nie uwzględniał wielkości liter, tzn. jak ktoś wpisze np. "CzĘść" żeby szukało wyrażenia "czesc". W takim wypadku przydałoby się żeby odrazu dane pobierane do prównania nie miały wspomnianych znaków i były wszyskie małe.
phpion
Twoje zapytanie sql jest dosc zagmatwane... Lepiej zrob to poprzez php.
  1. <?php
  2. $string = strtolower($string);
  3. $change = Array("ę" => "e", "ó" => "o", "ą" => "a");
  4. // ^ rozbuduj o reszte znakow + wielkie litery
  5. foreach ($change as $index => $value)
  6. $string = str_replace($index, $value, $string);
  7. ?>

Nie sprawdzalem coprawda ale powinno dzialac smile.gif w zmiennej $string masz ciag wpisany do poszukiwania (nie cale zapytanie)
superator
Owszem, zapytanie jest skomplikowane dlatego, że nie dotyczy tego co napisałeś...
Jest sobie (moja) wyszukiwarka. Wyszukiwarka ma pole gdzie się wpisuje literki. Literki wędrują do zmiennej, która jest przetwarzana przez php (zmniejszanie liter i usuwanie polznaczków). Następnie pobierane są dane z bazy (I W TYM MIEJSCU CHCĘ PRZEKONWERTOWAĆ DANE POCHODZĄCE Z BAZY, A NIE Z ZAPYTANIA) odpowiadające zmiennej zawierającej już "czyste" literki z wyszukiwarki. Czy teraz już wiadomo dokładnie o co mi chodzi??
Pozdrawiam i dzięki za odzew.
SongoQ
Jesli chcesz wyniki konwertowac na bazie to tak samo tylko ze dla pol ktore sa po slowie SELECT
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.