Autor Zpráva
Jack
Profil *
Zdravim, potřeboval bych pomoc s řešením následujícího problému. Mám stránku která je děláná pomocí html+css+php. Na první dvě věci jsem použil tento layout, kde se přizpůsobuje vzhled stránky podle toho jak se tam vkládá text a v tom je můj problém. Pokud stránku generuji pomocí include (menu+obsah) tak když si někdo zadá adresu index.php?stranka=home tak to je jako odkaz a je to v pořádku takže se text doplní ale když si zadám jen index.php tak protože je to titulní stránka kam se vše doplňuje tak protože se stránka formátuje pomocí vkládáného textu tak to dopadně nějak takhle. Když tam vložím nějakej text tak se mi to zas cpe do toho generovanýho obsahu a to nechci. Tak jak to řešit?
tiso
Profil
A ako spracovávaš ten parameter stranka? Nejaký switch?
daneel
Profil
co něco takovýho?
<?php if(!$kam){ $kam=home; }; include($kam.".php"); ?>
Jack
Profil *
Takhle
 <?

if($stranka == "home")
include "home.inc";
?>
daneel
Profil
když nezadáš parametr, použije se defaultní "home" a z toho se vytvoří adresa ;)
daneel
Profil
oprava uvozovek:
<?php if(!$kam){ $kam="home"; }; include($kam.".php"); ?>
Jack
Profil *
Takže jak na to aby se to načítalo třeba z toho home a ne z index.php, v php jsem začátečník takže nevim co se tim přesně myslí...
daneel
Profil
Jestli správně chápu, načítáš do určitého místa stránky obsah podle parametru
(stranka="home" tak se načte home.inc , když stranka="dalsi" tak se vloží dalsi.inc)

Takže můžu rovnou využít ten parametr a z něj vytvořit tu adresu k zobrazovanému obsahu.

Menu pak může vypadat takto:
<a href="index.php?stranka=home">Hlavní strana</a>
<a href="index.php?stranka=druha">Další strana</a>
...

a na místě vložení pak stačí tento jeden řádek:
<?php if(!$stranka){ $stranka="home"; }; include($stranka.".inc"); ?>

takže, když napíšeš:
adresa.cz/index.php?stranka=home vloží se na dané místo obsah home.inc
když zadáš jen:
adresa.cz parametr stranka není vyplněn, tak se použije "home", tedy hlavní strana
tiso
Profil
Prerob si to nejak takto:

if(isset($_GET["stranka"])){
switch ($_GET["stranka"]){
case "home":
include "home.inc";
break;
case "kontakt":
include "kontakt.inc";
break;
default:
include "home.inc";
}
}
else{
include "home.inc";
}
daneel
Profil
to moje je kratší, jeden řádek, a pro vytvoření dalších odkazů na další vkládané soubory se nemusí měnit zdroják
tiso
Profil
daneel
-nemáš tam ochranu pred podstrčením parametra (neexistujúcej stránky)
-pre x stránok budeš mať x if-ov, čo je značne neefektívne, preto je vhodnejšia konštrukcia so switch-om

Dĺžka nie je všetko...
daneel
Profil
-podstrčení parametru---no a, tak v tom adresáři nebude nic, co nemá být načteno

pre x stránok budeš mať x if-ov, čo je značne neefektívne, preto je vhodnejšia konštrukcia so switch-om
tak to nechápu, opravdu je tam jen jeden řádek, nic víc to nepotřebuje
Jack
Profil *
tiso

Trochu v tom tápu, takhle tam mám vložený všechny stránky a jako odkaz používám třeba zmíněný index.php?stranka=home. Jak by to vypadalo s tim tvým kódem?

  <?

if($stranka == "home")
include "home.inc";
if($stranka == "obsah")
include "obsah.inc";
if($stranka == "uvod")
include "uvod.inc";
if($stranka == "cenik")
include "cenik.inc";
if($stranka == "novinky")
include "novinky.inc";
?>
tiso
Profil
daneel
1. no a - to máš pekný prístup k programovaniu...
2. ty si vyriešil len ten jeden problém ktorý mal so zobrazovaním tej úvodnej stránky, ja som napísal riešenie do akej si má prerobiť to include, lebo ak si takto includuje každú stránku tak tam má x if-ov za sebou... Reagoval som na Jack-a nie na Teba...
daneel
Profil
tiso
podstrčení:A když už, dám podmínku, aby skript změnil adresu, obsahující to, či to, lomítko "/", "index", aby se uživatel nevlezl kam nemá apod, to snad není problém

mimochodem tak můžu zobrazit ve struktuře webu jak už jsi řekl x-stránek, nejen těch několik z menu
dělat x-krát case pro každý zobrazitelný soubor mi imho přijde jako blbost ;-)
tiso
Profil
Jack

if(isset($_GET["stranka"])){
switch ($_GET["stranka"]){
case "home":
include "home.inc";
break;
case "obsah":
include "obsah.inc";
break;
case "uvod":
include "uvod.inc";
break;
case "cenik":
include "cenik.inc";
break;
case "novinky":
include "novinky.inc";
break;
default:
include "home.inc";
}
}
else{
include "home.inc";
}
Jack
Profil *
tiso

Díky moc, jdu to zkusit ;-)
tiso
Profil
daneel
1. podstrčenie - tak to sprav a nehádaj sa tu so mnou že máš kratší skript
2. case je riešenie na menu, už mám dojem že to preháňaš s tým že chceš našiť situáciu na tú kedy Tvoj spôsob bude dobrý a ten čo som uviedol ja nie... si ešte raz prečítaj prvý príspevok na začiatku tohto fóra a potom si prečítaj kam si sa dostal ty...
Jack
Profil *
Funguje to :D díky
daneel
Profil
Jack
2-to neříkám, jen tys uvedl, že tam musím mít x if-ů, to nechápů (tvé řešení je samozřejmě dobré, tedy pokud nechci zobrazit nic dalšího než přímo odkazy z menu)
tiso
Profil
...tak pozerám že už píšem blbosti o menu... its time to sleep...
To riešenie so switchom sa týka bezpečného spracovania jedného parametra v url... Samozrejme keď tam bude 100 stránok tak tam bude 100x case, vtedy to treba riešiť inak...
Toto téma je uzamčeno. Odpověď nelze zaslat.