Autor Zpráva
Berny
Profil
Nazdárek
Mám databázi ve které jsou nějaké kategorie. Když kliknu na odkaz určité kategorie, tak scriptu předám proměnnou (třeba $kategorie) metodou GET a pomocí scriptu vyberu z databáze k té kategorii příslušná data (name = $kategorie). Jméno kategorie je třeba "Počítače".

url: http://localhost/index.php?kategorie=Počítače
data z MySQl: select * from site where name = $kategorie (případně využívám výběr pomocí "like" když se jedná o řetězec)

Když tohle samé provedu s názvem kategorie bez diakritiky, tak vše funguje jak má...
Fakt nevím co mám dělat.
Yuhů
Profil
čistě technická připomínka: URL nesmí obsahovat znaky s diakritikou.

Možností, jak to řešit, je víc. Obvykle se to dělá tak, že se to české slovo zakóduje pro přenos v URL (funkce asi URLEncode) a potom se před použitím nechá dekódovat.

Jiná možnost je ta, že se to do databáze i do URL ukládá bez diakritiky. Tabulka v takovém případě obvykle obsahuje další pole, ve kterém je znění s diakritikou. V takovém případě se ovšem už rovnou vyplatí jako klíč tabulky používat místo slova bez diakritiky nějaké ídéčko, nejčastěji číselné.
Hugo
Profil
Yuhů


URL imho může obsahovat diakritiku. Viz. např. wikipedie
http://cs.wikipedia.org/wiki/Přerov_nad_Labem
Rob
Profil
Hugo
Po zadání to stejně ukazuje tohle: http://cs.wikipedia.org/wiki/P%C5%99erov_nad_Labem...

Takže kdyby to tam být normálně mohlo, tak se tam tohle asi neukáže......
Kajman
Profil
Už sám prohlížeč asi půjde na stránku z kódovanou adresou. Problém bude v tom, že prohlížeč použije jiné kódování češtiny než je na stránkách.
Leo
Profil
Diakritika nema v URL co delat, a to technicky vzato dokonce ani po escapovani (% plus sestnactkove cislo) / escapovat se spravne vzato muzou jen znaky s US ASCII kody 0-127. Leo
Leo
Profil
Doplnim, ze povolene znaky v URL jsou:

1, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.!~*'|
2, ;/?:@&=+$,
3, %hex, kde hex je sestnactkove cislo v rozsahu 0-127

Leo
Berny
Profil
Tohle vše je mi bohužel jasné. Potřeboval bych jen vědět, jak to zprovozním i když diakritika v URL nemá co dělat. Na "Triádě" to normálně šlapalo
Tomik
Profil
Pokud tedy pominu fakt, že v URL nesmí být diakritika, zkus

select * from site where name = $_GET["kategorie"]


Ten problém s diakritikou bych řešil tak, že bych přidal ještě jeden sloupec, kde by bylo ono slovo bez háčků a čárek... zde "pocitace" nebo jak psal Yuhů pomocí IDčka...
23k
Profil
bych to spis resil pres cisla ...

nebo neco jako

$kategorie=Array( 1 => "PHP", 2 => "Nějaká další sekce ..");

a v url predavat tedy dle autora klidne diakritiku a do DB ukladat cislo. A prohazovat pres fci array_flip(); bo flip_array(); ted nevim jak to je.
Kajman_
Profil *
Zkusil překódovat proměnnou z utf-8 do kodóvání, které je v db a otestoval chování ve všech prohlížečích.
Kajman_
Profil *
Zkusil bych...
PerToon
Profil
Minidotaz úplně off-topic:
Jaktože mi to u Tomikova příspěvku uřezává konec příspěvku? Mám tam "pocitac a půlku e. Nemělo by to buď roztáhnout, nebo zalomit řádek? Vidíte někdo stejný prblém? (MSIE 6, 1024x768)
Berny
Profil
PerToon
Mně se ten příspěvěk zobrazuje taky špatně
Sickboy
Profil *
MAM stejny problem.. nevite zda jde nejak z Databaze vybrat text bez diakritiky? zda by umela nejake fce nahradit treba á za a ? atd.
archaon
Profil *
já bych tohle řešit přes nějaké ID => tudíž přes čísla
Toto téma je uzamčeno. Odpověď nelze zaslat.