Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie z pominięciem polskich znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
lysyluszowice
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:

  1. SELECT pole FROM tabela WHERE pole ='Zolw'


w bazie jest rekort z polskimi znamami  = "Żółw"



Jeżeli istnieje taka funkcja bardzo prosze o pomoc, dzieki!

kodowanie bazy to "latin2_general_ci"
nevt
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:
  1. SELECT pole FROM tabela WHERE pole ='Zolw' COLLATE 'latin2_general_ci';
MisterArek
Witam!
Mi niestety takie rozwi±zanie nie działa 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 winksmiley.jpg
pozdrowienia
Fixer
przekonwertuj znaki które pochodz± z pola edycyjnego użytkownika

  1. <?php
  2. $txt = strtr($txt,"ˇĆĘŁŃӦݬ±ćęłń󶿼","ACELNOSZZacelnoszz");
  3.  
  4. $txt = strtr($txt, array("a"=>"[a±]","c"=>"[cć]","e"=>"[eę]",
  5.    "l"=>"[lł]","n"=>"[nń]","o"=>"[oó]","s"=>"[s¶]","z"=>"[zżĽ]"));
  6.  
  7. $txt = strtr($txt, array("A"=>"[Aˇ]","C"=>"[CĆ]","E"=>"[EĘ]",
  8.    "L"=>"[LŁ]","N"=>"[NŃ]","O"=>"[OÓ]","S"=>"[S¦]","Z"=>"[Zݬ]"));
  9. ?>


a w zapytaniu zamiast LIKE użyj RLIKE
Dopler
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));
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.