Autor Zpráva
slawe
Profil
Nazdar borci,
Mám takový problém s jednou mou starší prací. Jedná se o zpracování formu, kdy se pak, mimo jiné, ukládá do databáze jméno, příjmení a první písmeno z příjmení nějaké osoby. To písmeno slouží k filtraci ve výpisu osob. No a problém je ten, že když je vkládán člověk, jehož první písmeno má háček či čárku (Šulák, Černý, Žižka, atd.), tak se to písmeno neuloží a ani neselectne. Rovněž mám i zjištění ohledně jmen na „Ch“, které mi ale taky nejede. Nějaký nápad co s tím? Díky


if (isset($_POST["send"])) {
    if (isset($_POST["multi"])) $pismeno = 0;
    else {
        $slovo = $_POST["prijmeni"];
        if ($slovo[0] == 'C' && $slovo[1] == 'h') {$pismeno = "Ch";}
        else {$pismeno = $slovo[0];}
    }
}
Alphard
Profil
Pokud používáte utf-8, tak znaky s diakritikou nelze vybírat podle pořadí bajtu, pomůže mb_substr(). Ch by mělo být ok.
juriad
Profil
Není lepší takový sloupec v databázi nemít a hledat osoby podle začátku jména?
SELECT jmeno FROM osoby WHERE jmeno LIKE 'Ch%' # případně LIKE 'Č%'
Tori
Profil
juriad:
AFAIK samostatný sloupec je rychlejší, v jedné databázi (řádově tisíce záznamů) jsem to takhle měnila, z LIKE na =, a bylo to rychlejší. (Ale taky kromě toho jsem taky potřebovala vyhledávat všechna zač.písmena podle jak anglického, tak českého porovnávání, a tam se samostat.sloupec hodil ještě víc.)
slawe
Profil
juriad:
Jak řekla Tori, je to při více záznamech rychlejší.

Alphard
Díky, vyřešilo mi to hlavní problém s Č,Ř, atd.. Ale Ch však stále zůstává problematické...
Tori
Profil
slawe:
Ch však stále zůstává problematické...
Která část - rozpoznání nebo uložení?
Alphard
Profil
Nevidím důvod, aby s tím byly problémy, spíš by to celkově chtělo ten script trochu pojistit

ucwords(mb_substr(trim('Chameleon'), 0, 2)) == 'Ch'

A při ukládání samozřejmě potřebujete 2 znaky, na nápad mě přivedla [#6] Tori.
slawe
Profil
Ano, jsem kre*én, taky mě mohlo napadnout porovnávat oba znaky najednou a ne jen po jednom :D V tom byl problém. Děkuji všem za pomoc, už to fičí :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: