Poradí někdo začátečníkovi pls?
Mám stránky, které jsou umístěné v rootu. Pomocí include pak vkládám hlavičku a patičku. Hlavička a patička jsou umístěné v adresáři include. Pak mám ovšem ještě některé stránky v dalším adresáři řekněme třeba abc.
Odkazy v hlavičce a patičce odkazují všechny na root, protože tam je také většinou vkládám.
Jenomže pokud budu chtít hlavičku a patičku vložit do stránek v adresáři abc, tak samozřejmě odkazy nebudou fungovat, protože standarně jsou nasměřovány do rootu.
Poradí někdo nějaký odkaz, kde bych se dozvěděl jak na to, nebo mi přimo poradí zde?
root: většina stránek (vkládám include (header/footer.php)
adresář include: header.php a footer.php
adresáš abc: další stránky (vkládám header/footer.php, ale potřebuji, aby fungovaly odkazy).
Díkas za rady php borci:-)))
PS: Snad jsem to napsal srozumitelně...
Do adresare vyssi urovne (bliz korenu) se dostanes pomoci 2 tecek.
napr. v souboru /abc/neco.php
chces includovat soubor /footer.php
include "../footer.php";
cožpak o to, tohle ještě chápu. Ale o to mi nejde. Takže jinak:
soubor header.php v aresáři include
<a href=menu.php>odkaz1<a>
<a href=menu1.php>odkaz 2<a>
<a href=menu2.php>odkaz 3<a>
soubor index.php v rootu
<include (include/header.php);
Všechno, ok, protože odkaz menu.php, menu1.php a menu2.php funguji
soubor abc.php umisteny v adresari abc
<include (../include/header.php);
Tady je problem, protože odkazy menu.php, menu1.php a menu2.php odkazuji na rootu, ale mělo by to byt ../menu.php, ../menu1.php a ../menu2.php
díkas
A co takhle dat do odkazu "./menu.php" (s jednou tečkou). No já nevím, ale všichni říkaji, že to ./ odkazuje na root bez ohledu na tom, kde jsi.
Moznost je ta, ze ty odkazy udelas absolutne.
Ale jinak bych rekla, ze celkove mas nejakou pofiderni strukturu.
Pokud tomu dobre rozumim, mas hlavicku a paticku a mozna nejake menu - a ty jsou stabilni a nemeni se a meni se jen samotny obsah.
Pak mi neni jasne, proc nedelas i tu samotnou zmenu obsahu pomoci includu - pak bys nemusel vkladat hlavicku a paticku pokazdy znova.
To je dost neefektivni reseni.
Mel bys vsechny stabilni prvky naincludovany jednou v indexu.php a pak
bys k tomu dynamicky podle potreby includoval ostatni soubory podle potreby.
A.
ad tomik:
./ neodkazuje na root ale na aktualni adresar!
cožpak o to, já bych to klidně takhle dělal, ale za žádnou cenu nechci, aby to pak vypadalo nějak takhle: index.php?id=neco
Prostě bych chtěl mít normálně galerie.php, guestbook.php atd. Ok. Pokud to tedy jde takhle i bez onoho ?id=neco, prosim dejte vedet jak na to.
cus funky
pokud se branis pouzivat parametry v odkazech, cimz
se odepisujes od pouzivani globalni promenne $_GET, tak tim se uzaviras
od znacne casti pouzivani PHP a podle me delas chybu.
A pokud na tom trvas, tak podle me to nejde jinak nez skrze absolutni odkazy.
Anka:
Tak, tak. Jsou to základy PHP.
hmmm, chapu. Tak ja jde hledat neco o parametrech a jak na to:-(
Nejelegantnejsi metoda pro tvuj pripad je podle me kombinace predavani parametru + fce switch
ukazka zde>
http://cz2.php.net/switch
konkretne toto>
<?php
switch ($_GET['go']) {
case "1": $inc = 'Page01.php';
break;
case "2": $inc = 'Page02.php';
break;
case "3": $inc = 'Page03.php';
break;
case "4": $inc = 'Page04.php';
break;
default: $inc = 'Page01.php';
break;
}
include ($inc);
?>
s tim, ze to include muzes normalne napsat do tech jednotlovych "cases"
niečo podobné som riešil pred dvoma rokmi a stačilo zdvojiť inkludovaný súbor a zameniť "./" za "../" . Ten z dvoma tečkami ťahajú tie s adresárov, s jednou tie s rootu. Uspora miesta a jednochost su jasné.
ale houbinec .. je odkaz na nadřazený (rodičovský) adresář a . je aktuální. Jestli to náhodou fungovalo jinak, tak to byla náhoda. Ještě jsem pátral proč psát "./soubor" nebo "soubor" a je to tak, že "./soubor" hledá soubor jenom v aktuálním adresáři a "soubor" v aktuálním a dresáři a v cestě předepsané někde v ini v include. Takže pomalejší....
Ještě k tomu . coby rootu. Ono není vždycky úplně jasné, odkud se to tahá, když uděláš v rootu include třeba z "cosi/moje.php" a v moje.php máš zase include třeba "./tady.php" tak teď nevím, odkud to veme, ale myslím že právě z toho rootu, páč je to includované v rootu.... a teď jsem se do toho zamotal..
Ale myšlenka je jasná ne?
> uděláš v rootu include třeba z "cosi/moje.php" a v moje.php máš zase
> include třeba "./tady.php" tak teď nevím, odkud to veme, ale myslím že
> právě z toho rootu
Prave ze ne. Vezme se to z adresare 'cosi'. Tohle je prave jeden z dusledku toho, ze include (require, include_once, require_once) vlastne nejsou funkce, ale konstrukt jazyka.
No, nevím, zkoušel jsem to ve win a nabídlo mi to includ z rootu...