Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytanie z pominięciem polskich znaków
lysyluszowice
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.11.2008

Ostrzeżenie: (10%)
X----


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"

Ten post edytował lysyluszowice 21.12.2008, 12:38:59
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


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';
Go to the top of the page
+Quote Post
MisterArek
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 23.03.2006
Skąd: Warszawa

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


Witam!
Mi niestety takie rozwiązanie nie działa (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
pozdrowienia
Go to the top of the page
+Quote Post
Fixer
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

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


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
Go to the top of the page
+Quote Post
Dopler
post
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


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));


Ten post edytował Dopler 21.10.2011, 11:46:39
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 - 18:40