Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 2. 5. 2010, 14:51:27
Zdravím Vás. Potřebuji sestavit funkci, která by kontrolovala interní URL a pokud se v něm vyskytne určitý řetězec znaků, tak aby tento řetězec vždy uložila do SESSION. Mám to zatím nějak takto:
$url = $_SERVER['REQUEST_URI']; fce check_url($url) { $_SESSION["rok"] = ""; $_SESSION["kategorie"] = ""; // a tady potřebuju vždy získat část z URL, jednak rok a jednak kategorii // tvar URL vypadá vždy takto: /nabidka-tohoatoho/kolekce-2008/kategorie/ return $_SESSION["rok"] = "2008"; return $_SESSION["kategorie"] = "kategorie"; // nevím zda můžu použít 2x return, pokud ne tak bych to rozdělil do 2 funkcí, to mi nevadí } // ve výpisu stránky se pak provádí toto: check_url($url); $rok = $_SESSION["rok"]; $kategorie = $_SESSION["kategorie"]; // a pak se dále pracuje s proměnnými $rok a $kategorie |
||
panther Profil |
#2 · Zasláno: 2. 5. 2010, 14:55:11
Mufna:
nějak postrádám otázku, vlastně nevím, co přesně chceš, s čím si nevíš rady. |
||
Mufna Profil |
#3 · Zasláno: 2. 5. 2010, 15:09:01 · Upravil/a: Mufna
panther
Nevím jak v té funkci získat z toho tvaru URL, které mám, pouze 2 části - rok a kategorii. Čili jak toto udělat. Rok v URL může být třeba 2005, 2006, 2007 atd, kategorie pak třeba "auta" "motorky" "jizdni-kola" (třeba). A ta funkce má do SESSION uložit: "2005" nebo "2006" nebo "2007" (podle toho co bude v URL), a "auta" nebo "motorky" nebo "jizdni-kola" Tvar URL bude vždy: /nabidka-tohoatoho/kolekce-rok/kategorie/ |
||
bohyn Profil |
#4 · Zasláno: 2. 5. 2010, 18:36:49
Mufna:
Nepoužívá na tohle spíš mod_rewrite? |
||
Mufna Profil |
#5 · Zasláno: 2. 5. 2010, 19:37:48 · Upravil/a: Mufna
bohyn
vím jak to myslíš ... ale na to co já potřebuju musím mít asi nějakou funkci, mám to pro systém načítání jednotlivých menu do stránek (ne na zjišťování vlastního URL a následné zobrazení příslušné stránky), aby to sedělo + mohl jsem tomu dát třeba CSS class="active" podle potřeb. Napadlo mě mezitím nějak to URL nejdřív rozdělit regulárem na 3 části (bude to pořád mít tuhle strukturu), tedy oddělit 3 části za jednotlivými lomítky, pak vzít druhou část a najít v ní všechny numerické hodnoty a vypsat je za sebou (to by dalo ten rok), a pak vzít třetí část a to je ta kategorie (tady už nemusím nic zkoumat, jen to hodit do proměnné). Ale ty potřebné reguláry asi nedám sám dohromady, tak jsem se obrátil sem do fóra pro radu. EDIT: Jednodušeji řečeno v podstatě potřebuju to, aby se: 1) prozkoumalo URL a vypsaly se všechny nalezené numerické hodnoty 0-9 za sebou (což dá ten rok), 2) vzala se ta poslední část URL (kategorie) a vložilo se to do proměnné. |
||
bohyn Profil |
#6 · Zasláno: 2. 5. 2010, 20:04:17
preg_match("~([0-9]{4})/([^/]+)/?$~", $url, $match); var_dump($match); |
||
Mufna Profil |
#7 · Zasláno: 2. 5. 2010, 22:54:20 · Upravil/a: Mufna
bohyn
super, díky, funguje to parádně ... bohužel ale nevím jak to mám zpracovat, resp dát to do obou proměnných, tedy $_SESSION["rok"] a $_SESSION["kategorie"] . Přidání tvých dvou řádků kódu do té funkce způsobí vypsání něčeho takovéhoto: array(3) { [0]=> string(14) "2010/kategorie/" [1]=> string(4) "2010" [2]=> string(8) "kategorie" |
||
panther Profil |
#8 · Zasláno: 2. 5. 2010, 23:39:53 · Upravil/a: panther
Mufna:
„nevím jak to mám zpracovat, resp dát to do obou proměnných“ to by mělo být prosté, ne? $_SESSION['rok'] = $match[1]; $_SESSION['kategorie'] = $match[2]; „Přidání tvých dvou řádků kódu do té funkce způsobí vypsání něčeho takovéhoto:“ cos očekával od var_dump() jiného než výpis? |
||
Mufna Profil |
#9 · Zasláno: 3. 5. 2010, 02:43:37
panther
já vím, že by to asi mělo být prosté, s tímhle jsem ale ještě nikdy nepracoval, takže to pro mě prosté není ... díky za radu, teď už to prosté je :-) |
||
Časová prodleva: 14 let
|
0