mysql vyhledávání bez ohledu na diakritiku

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Zbynas 4. 1. 2021 17:09

Zdravím,

mám následující mysql dotaz, který ovšem nefunguje korektně. Umí to najít "škoda", když je v DB "ŠKODA", umí to najít "pojis", tam kde v DB je "pojišťovna", ale už ne "pojist". Pravděpodobně to umí ignorovat jen jedno písmeno s diakritikou. Kde je problém?

Děkuji moc předem! :)

Kód: Vybrat vše
$result1 = mysqli_query($pripojeni,"select * from klienti WHERE firma REGEXP '" . strtr(quotemeta($search), array(
        "c" => "[cčCČ]",
        "C" => "[cčCČ]",
        "č" => "[cčCČ]",
        "Č" => "[cčCČ]",
        "d" => "[dďDĎ]",
        "ď" => "[dďDĎ]",
        "D" => "[dďDĎ]",
        "Ď" => "[dďDĎ]", 
        "r" => "[rřRŘ]",
        "R" => "[rřRŘ]",
        "ř" => "[rřRŘ]",
        "Ř" => "[rřRŘ]",
        "s" => "[sšSŠ]",
        "š" => "[sšSŠ]",
        "S" => "[sšSŠ]",
        "Š" => "[sšSŠ]",
        "z" => "[zžZŽ]",
        "Z" => "[zžZŽ]",
        "ž" => "[zžZŽ]",
        "Ž" => "[zžZŽ]",
        "t" => "[tťTŤ]",
        "ť" => "[tťTŤ]",
        "T" => "[tťTŤ]",
        "Ť" => "[tťTŤ]"
        )) . "'");


PS kodování je utf8_general_ci

-- 4. 1. 2021 17:40 --

Tak jsem zjistil, že když pokud není vyhledávané písmeno v řetězci na prvním místě, je potřeba napsat dvakrát ...
škoda > ŠKODA
vseobecná > [nevyhledá nic]
vsseobecná > Všeobecná
pojistovna > [nevyhledá nic]
pojisstovna > [nevyhledá nic]
pojissttovna > pojišťovna

Nechápu ...
NVidia GTX 1060 6GB, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 100 Mbps, Upload 100 Mbps, ping 8
VINOTÉKA U FREJKA
FREJK.CZ, FREJK.SK, FREJK.COM
Zbynas
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 4. 1. 2021 18:57

Když ono to v MySQL není zrovna utf8 - novější verze má utf8mb4_ - tu je potřeba používat.
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Zbynas 6. 1. 2021 15:04

Děkuji, ale to ničemu nepomohlo ..
NVidia GTX 1060 6GB, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 100 Mbps, Upload 100 Mbps, ping 8
VINOTÉKA U FREJKA
FREJK.CZ, FREJK.SK, FREJK.COM
Zbynas
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 6. 1. 2021 17:18

Cca před 6 lety byl dotaz na https://stackoverflow.com/questions/260 ... ch-symbols kde bylo navrženo, aby veškeré záznamy byly ukládány pomocí base64 - bohužel toto řešení má problém s velkými/malými písmeny.

Jinak by to mělo fungovat normálně - předpokládám, že máš správně nastavené kódování jak stránky tak spojení jako utf8 namísto bývalého CP ( win1250 )
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Zbynas 14. 1. 2021 12:25

Kódování všeho i stránky je v UTF8.

Existuje tedy nějaké řešení, jak v DB vyhledávat bez ohledu na malá / velká písmena a zároveň bez ohledu na diakritiku?
NVidia GTX 1060 6GB, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 100 Mbps, Upload 100 Mbps, ping 8
VINOTÉKA U FREJKA
FREJK.CZ, FREJK.SK, FREJK.COM
Zbynas
Junior
Uživatelský avatar



Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků