Autor | Zpráva | ||
---|---|---|---|
HJ. Profil * |
#1 · Zasláno: 27. 11. 2010, 19:34:41
Zdravím, vím, že to tu bylo již několikrát, ale pořád nějak nechápu několik věcí.
Mám udělané menu třba <a href="kontakt.php">Kontakt</a> <a href="uvod.php"></a> Je mi jasné, že do toho odkazu budu vypisovat dále nastylovanou class="active" . Ale jde mi o to, jak z URL zjistit, na jaké stránce jsem. Nějak přes GET? Ale jak? |
||
Keeehi Profil |
#2 · Zasláno: 27. 11. 2010, 19:39:05
Asi nějak takto:
<a href="index.php?stranka=kontakt"<?php if($_GET["stranka"]=="kontakt") echo ' class="active"';?>>Kontakt</a> <a href="index.php?stranka=uvod"<?php if($_GET["stranka"]=="uvod") echo ' class="active"';?>>Uvod</a> Pokud máš však pro různé stránky různé soubory, tak to potom dej rovnou natvrdo do menu. |
||
HJ. Profil * |
#3 · Zasláno: 27. 11. 2010, 19:44:34
Aha, takže jen prostě do odkazu musím dát za otazník stránka nebo page = a pak následně teda to co bude za stranka = (page =) bude ta návratová hodnota toho GET[stranka]...aha. Zajímavé. Děkuji. Není tohle trošku z pohledu bezpečnosti děravé?
|
||
HJ. Profil * |
#4 · Zasláno: 27. 11. 2010, 19:52:36
a ten soubor se mi teda bude jmenovat jak? kontakt.php nefunguje..
|
||
HJ. Profil * |
#5 · Zasláno: 27. 11. 2010, 19:54:49
Respektive takhle, omlouvám se za tolik příspěvků..souborů mám více - kontakt.php uvod.php atd..
|
||
xmark Profil |
#6 · Zasláno: 27. 11. 2010, 19:58:12
HJ.:
„kontakt.php nefunguje..“ A existuje? Běžně se to dělá tak, že odkazy nemíří na kontakt.php, ale na index.php a do něj se kontakt.php nebo cokoliv jiného includuje. Důvodem je právě to, abys nemusel mít menu, hlavičku a patu na všech stránkách. Nebo taky jinak. |
||
HJ. Profil * |
#7 · Zasláno: 27. 11. 2010, 20:07:03
Tak doposud to bylo vyřešené tak, že se tam pata menu a header includovaly do každého souboru - kontakt.php , index.php atd..ale zkusím to tedy takto. Díky
|
||
Keeehi Profil |
#8 · Zasláno: 27. 11. 2010, 20:32:31
HJ.:
„že se tam pata menu a header includovaly do každého souboru“ I v tomto případě by to šlo udělat, ale obráceně je to jednodušší. |
||
Časová prodleva: 1 měsíc
|
|||
jannie Profil * |
#9 · Zasláno: 28. 12. 2010, 18:39:30
Mám stejný problém.
V menu mám <a href="index.php?stranka=kontakt"<?php if($_GET["stranka"]=="kontakt") echo ' class="active"';?>>Kontakt</a> Soubor se mi jmenuje kontakt.php ....mám asi 6 dalších souborů. Vždy to dělám tak, že do každého souboru includuju hlavicka.php a paticka.php v hlavičce mám i toto menu. Nefunguje mi ale přepínání odkazů. Jak se tedy musí jmenovat php soubor, aby se v přoádku odkázalo a obarvila se aktivní položka? Díky |
||
panther Profil |
#10 · Zasláno: 28. 12. 2010, 18:43:11 · Upravil/a: panther
jannie:
jak se jmenuje soubor je celkem šumák, podstatné je, co je v proměnné $_GET['stranka'] , kterou v podmínce testuješ.
„Nefunguje mi ale přepínání odkazů.“ co to znamená konkrétně? Tipuji, že podle proměnné $_GET['stranka'] nevkládáš soubor s obsahem - princip můžeš pochopit třeba zde.
Je tam též napsáno, že tento způsob je dost děravý, ošetřený script se zde půjde dát dohledat. |
||
jannie Profil * |
#11 · Zasláno: 28. 12. 2010, 18:57:02
Tu stránku mám už prečtenou, díky.
Ale problém je v tom, že já žádný obsah podle parametru v URL nikam neincluduji. Mám zkrátka 6 souborů php kontakt.php, index.php, neco.php ... A do každé takové php stránky includuji pouze stejnou hlavičku a patičku, která je na všech stránkách. Přičemž v té hlavičce je menu. Kdyby bylo menu obyčejne <a href="kontakt.php">Kontakt</a> Ale když mám menu: <a href="index.php?stranka=kontakt"<?php if($_GET["stranka"]=="kontakt") echo ' class="active"';?>>Kontakt</a> |
||
panther Profil |
#12 · Zasláno: 28. 12. 2010, 19:03:26 · Upravil/a: panther
jannie:
„…tak se stránka nenačte.“ samozřejmě, co má prohlížeč dělat s tím, že má v URL nějaký parametr? Podle té proměnné v URL musíš vložit správný obsah. To, že se bude soubor jmenovat stejně jako je hodnota té proměnné, má výhodu v tom, že to jde zautomatizovat if (!isset($_GET['stranka']) { include ('stranky/home.php'); } else { if (file_exists('stranky/'.$_GET['stranka'].'.php')) { include ('stranka/'.$_GET['stranka'].'.php'); } else { // include 404 } } Kdyby se soubory jmenovaly jinak, musela bys pro každý soubor udělat podmínku: if ($_GET['stranka'] == 'kontakt') include "stranky/abcd.php"; //soubor se jmenuje abcd.php, a přesto se vloží. Na jménu nezáleží. |
||
jannie Profil * |
#13 · Zasláno: 28. 12. 2010, 19:15:46
Napadlo mě souběžně jiné řešení. Asi jsme se stále ještě nepochopili :) Ale já nechci includovat obsah, obsah mám právě v těch jednotlivých php souborech, který každý obsahuje <html><head> .....
takže úplně na začátek této stránky si vložím příslušný řetězec, který následně v menu poté porovnávám. Tím dosáhnu konečného obarvení aktivní položky. Nechápu, proč mě to nenapadlo hned. Díky za spolupráci :) |
||
Časová prodleva: 13 let
|
0