Autor Zpráva
mylda
Profil *
Zdravím, mám teď provizorně zavedenou stránku a snažím se přijít na to, jak udělat z mého pouze index.php další stránky, kde bych dal pouze include headeru, panelů a footeru a do souboru neco.php pak už jen plnil obsah.
Určitě to tady už je, ale nenašel jsem.
Přikládám odkaz na soubor index.php, kdyby byl někdo ochotný a rovnou mi ukázal co kde kam a jak udělat.
Díky

http://mylda.cz-host.eu/index.rar
panther
Profil
mylda:
stahovat nějaký rar nebudu, nicméně pokud chceš jen jeden soubor, tedy index.php, udělej to následovně.

V index.php bude vše, co se nebude měnit a includuj do něj pouze obsah. Porovnávej, na jaké stránce jsi ($_GET) se stránkami v DB/souborech (záleží, zda budeš includovat obsah ze souboru nebo tahat data z DB).

Druhá možnost je mít pro každou stránku jeden soubor, do kterého budeš includovat neměnné části (header, footer, ...), což je značně horší řešení.
mylda
Profil *
A teď česky ? xD
Né, opravdu, v tomto se neorijentuji, v php začínám ...
panther
Profil
mylda:
A teď česky ?
píšu snad jinak? Jestli něco nechápeš, ptej se konkrétně. Ještě lépe, než se zeptáš, zkus se nad tím, co jsem napsal, zamyslet. Když to přečteš podruhé, potřetí, budeš moudřejší.
mylda
Profil *
Tak třeba vůbec nevím co mám udělat jako první a jak pokračovat atd.. ani žádné propojení s db v tom nemám ..
Prostě nevím, co se teď má dít, jsem stále u toho, že mám index.php
panther
Profil
mylda:
Prostě nevím, co se teď má dít, jsem stále u toho, že mám index.php
index.php bude obsahovat všechno, co bude neměnné (header, footer, menu, ...). Pak tam bude obsahová část. Takže:
<div id="content">
<?php
if (isset($_GET['pg'] { //existuje promenna GET pg - URL ve tvaru domena.cz/index.php?pg=stranka
    if (file_exists('pages/' . $_GET['pg'] . '.php')) { // jestli existuje ve slozce pages soubor stranka.php, pokracuj
        include ('pages/' . $_GET['pg'] . '.php')); // vloz soubor stranka.php
    } else {
        include ('pages/404.php') // jinak vloz 404.php - stranka nenalezena. Nemusi byt, ale muze
    }
}
?>
</div>


Ve složce pages budou jednotlivé obsah, tedy o-nas.php, kontakt.php, atd.
mylda
Profil *
Mohl by mi to prosím vysvětlit někdo jako pro lajka, prostě polopatě ?
Dík
Apacuka
Profil
root/index.php
root/pages/* //tady budou umisteny vsechny soubory ktere chces includovat do index.php. Soubory musí mít koncovku .php

do tech includovanych souboru se uz nepise <html><head></head><body></body></html>

index.php
------------
<html>
<head>
</head>
<body>
<div id="content">
<div id="menu">
<a href="?pg=seznam">Seznam hráčů</a><br>  // odkazem se includuje obsah souboru /pages/seznam.php
<a href="?pg=kontakty">Kontakty na hráče</a>
</div>
<div id="stred">
<?php
if (isset($_GET['pg'] { //existuje promenna GET pg - URL ve tvaru domena.cz/index.php?pg=stranka
    if (file_exists('pages/' . $_GET['pg'] . '.php')) { // jestli existuje ve slozce pages soubor stranka.php, pokracuj
        include ('pages/' . $_GET['pg'] . '.php')); // vloz soubor stranka.php
    } else {
        include ('pages/404.php') // jinak vloz 404.php - stranka nenalezena. Nemusi byt, ale muze
    }
}
?>
</div>
</div>
</body>
</html>


root/pages/seznam.php
------------------------------
na seznamu se stale pracuje

root/pages/kontakty.php
------------------------------
kontakty sem zatim zadny nesehnal
Joan
Profil
panther:
Proč je tento způsob - viz Tvá odpověď #2 - horší řešení než opačný? Já mám dosud 27 stránek webu v *.html a přijde mi prozatím značně jednodušší a pochopitelnější do každé stránky pouze naincludovat opakující se menu a patičku a zbytek ponechat tak, jak je. Díky za odpověď!
saphire
Profil
Joan:
1) více kódu
2) je to pomalejší (funkce include sice na běžných serverech trvá okolo 2-4 milisekund ale i tak)
3) je to mnohem méně přehedné
panther
Profil
saphire:
2) je to pomalejší
ani ne.

3) je to mnohem méně přehedné
záleží na úhlu pohledu.

Joan:
Proč je tento způsob - viz Tvá odpověď #2 - horší řešení než opačný?
- v samotných souborech s obsahy nemusím pořád opakovat include, píšu jen samotné obsahy
- když chci provést změnu v headeru a menu, nemusím zasahovat do dvou souborů, ale jen do jednoho
- v index.php je vidět kompletní struktura webu, což taky nemusí být k zahození

Nicméně, není to dogma, jen můj názor na věc. Ani ten opačný způsob není vyloženě špatný. Nechtěl jsem, aby to tak vyznělo, pokud to tak vyznělo.
Joan
Profil
panther:
Díky za vysvětlení! Já mám zatím ale poněkud problém pochopit, jak funguje to doporučované vkládání samotného obsahu, tak jsem si myslela, že než se mi dostatečně "rozbřeskne" tak budu vkládat opakovaně menu a patičku, pokud to je jen o chloupek pracnější než includování obsahu (i to bude pokrok vpřed, zatím jsem vše sedmadvacetkrát kopírovala do html... :-))
Tento článek jsem samozřejmě už několikrát louskala.
Rintintin
Profil *
mylda:
Polopaticky: Máš soubor index.php. Normálně v něm nataguješ hlavičku, menu a patičku. V menu máš odkazy. Do těch odkazů nasyp adresy jako třeba index.php?navody, index.php?kontakt, index.php?zajimavestranky atd. Kliknutím na některý z těch odkazů se nenatahuje jiný soubor, ale pořád index.php, jen se stránce předává text za index.php?, například kontakt. V index.php, tam kde chceš mít v index.php obsah odchytíš ten text a inkluduješ obsah z jiného souboru, třeba kontakt.php, který máš ve složce pages/. Takže v pořád tom index.php budeš mít:
<div id="obsah">
<?php
if (isset($_GET["kontakt"]))
{
include "pages/kontakt.php";
}
if (isset($_GET["zajimavestranky"]))
{
include "pages/zajimavestranky.php";
}
if (isset($_GET["navody"]))
{
include "pages/navody.php";
}
?>
</div>

Taky je možné místo funkce if() použít switch(). Jdeme dál. V souboru kontakt.php, který máš ve složce pages/ pak bude normální HTML, ale už bez hlavičky, menu a patičky. Příklad:
<h1>Kontakt</h1>
<p>ICQ: 123 456 789</p>
Joan
Profil
A co když mám (jakože doopravdy mám!) to hlavní vertikální menu sice na úplně všech stránkách, ale na NĚKTERÝCH mám kromě toho navíc ještě horizontální další menu vztahující se k pouze pár stránkám, na dalších mám zase jiné horizontální menu vztahující se zase k několika jiným stránkám apod. Čili úplně všechny stránky nejsou totožné co se týče opakovaných položek. To mně jediná šablona index.php nejspíš stačit nebude, že? A vícero souborů index.php jaksi mít nelze tak si nedovedu dost dobře představit, jak to mám s tím includováním provést.
Nasměruje mě prosím někdo?
Díky předem a pěkné velikonoce! A buďte prosím pánové na nás ženušky něžní, ať nás pak nebolí zadnice při sezení u PC čili ať se pak nemusíme učit programovat vestoje :-))
panther
Profil
Joan:
ale na NĚKTERÝCH mám kromě toho navíc ještě horizontální další menu vztahující se k pouze pár stránkám
jednoduchý IF - podmínka v PHP. Pokud jsem na stránce XY nebo YZ, vypiš submenu.

To mně jediná šablona index.php nejspíš stačit nebude, že?
Bude. Viz řádek výše.

Kdyžtak v profilu mám icq, jestli chceš.
Joan
Profil
panther:
Jo ták, jestli dobře rozumím, tak v šabloně bude pouze hlavní menu, do níž se bude includovat obsah a pokud se na stránce vyskytne navíc ještě submenu, tak kromě obsahu se bude ještě includovat i to submenu, že?
Jinak díky moc, já se ještě chvíli budu snažit sama :-)
panther
Profil
Joan:
Jo ták, jestli dobře rozumím, tak v šabloně bude pouze hlavní menu, do níž se bude includovat obsah a pokud se na stránce vyskytne navíc ještě submenu, tak kromě obsahu se bude ještě includovat i to submenu, že?
ne.

Bude tam menu, které bude obsahovat mimojiné PHP podmínky. Asi takhle:
<menu>
  <li>Položka1</li>
  <li>Položka2</li>
  <li>Položka3</li>
<?php
if(isset($_GET['pg'] and $_GET['pg'] == 'kontakt') { //pokud je v URL promenna pg a pg=kontakt
  echo '<li>Položka, která se zobrazí jen na stránce s kontakty</li>';
}
?>
  <li>Položka4</li>
  <li>Položka5</li>
  <li>Položka6</li>
</menu>

Položky 1-6 se zobrazí vždy, na všech stránkách. Pokud jsem na stránce kontaktů, uprostřed se zobrazí 1 položka navíc, bude jich tedy 7.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0