Autor | Zpráva | ||
---|---|---|---|
Berny Profil |
#1 · Zasláno: 9. 11. 2005, 13:28:20
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 |
#2 · Zasláno: 9. 11. 2005, 13:39:47
č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 |
#3 · Zasláno: 9. 11. 2005, 13:57:01
Yuhů
URL imho může obsahovat diakritiku. Viz. např. wikipedie http://cs.wikipedia.org/wiki/Přerov_nad_Labem |
||
Rob Profil |
#4 · Zasláno: 9. 11. 2005, 15:08:30
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 |
#5 · Zasláno: 9. 11. 2005, 16:32:44
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 |
#6 · Zasláno: 9. 11. 2005, 17:12:36
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 |
#7 · Zasláno: 9. 11. 2005, 17:16:10
Doplnim, ze povolene znaky v URL jsou:
1, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.!~*'| 2, ;/?:@&=+$, 3, %hex, kde hex je sestnactkove cislo v rozsahu 0-127 Leo |
||
Berny Profil |
#8 · Zasláno: 9. 11. 2005, 18:52:43
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 |
#9 · Zasláno: 9. 11. 2005, 19:25:52
Pokud tedy pominu fakt, že v URL nesmí být diakritika, zkus
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 |
#10 · Zasláno: 9. 11. 2005, 20:51:29 · Upravil/a: 23k
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 * |
#11 · Zasláno: 10. 11. 2005, 16:07:26
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 * |
#12 · Zasláno: 10. 11. 2005, 16:07:59
Zkusil bych...
|
||
PerToon Profil |
#13 · Zasláno: 10. 11. 2005, 16:13:21
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 |
#14 · Zasláno: 12. 11. 2005, 23:27:18
PerToon
Mně se ten příspěvěk zobrazuje taky špatně |
||
Časová prodleva: 1 měsíc
|
|||
Sickboy Profil * |
#15 · Zasláno: 18. 12. 2005, 03:27:08
MAM stejny problem.. nevite zda jde nejak z Databaze vybrat text bez diakritiky? zda by umela nejake fce nahradit treba á za a ? atd.
|
||
Časová prodleva: 1 rok
|
|||
archaon Profil * |
#16 · Zasláno: 22. 2. 2007, 14:14:49
já bych tohle řešit přes nějaké ID => tudíž přes čísla
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0