Autor Zpráva
HJ.
Profil *
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
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 *
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 *
a ten soubor se mi teda bude jmenovat jak? kontakt.php nefunguje..
HJ.
Profil *
Respektive takhle, omlouvám se za tolik příspěvků..souborů mám více - kontakt.php uvod.php atd..
xmark
Profil
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 *
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
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šší.
jannie
Profil *
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
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 *
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> 
tak je vše ok - sice se mi neobarví aktivní položka v menu, ale alespoň se načte správná stránka....

Ale když mám menu:
<a href="index.php?stranka=kontakt"<?php if($_GET["stranka"]=="kontakt") echo ' class="active"';?>>Kontakt</a>  
...tak se stránka nenačte. Proto mě právě zajímalo, jestli se soubor kontakt.php musí jmenovat nějak jinak...
panther
Profil
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 *
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 :)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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