Nejste přihlášen/a.

Přihlásit se do poradny

 

Převod webu z HTML do PHP - zadávání cest

Od: punkturtle* odpovědí: 14 změna:

Dobrý den, rád bych začal s PHP a tak jsem si podle knihy (Programování WWW stránek pro úplné začátečníky od Martina Mikuľáka) rozdělil hotové stránky na části -hlavicka, menu, paticka atd. a pomocí require části vložil do stránky.
V pořádku funguje.
Problém nastal, když chci vytvořit nějaký systém adresářů. Nevím, jak nastavit cesty v odkazech např. hlavního menu. Ať dělám co dělám, menu mi funguje pouze po vložení do souborů uložených v kořenovém adresáři. Jakmile jej vložím do do souborů hlouběji v adresářové struktuře, nefunguje.
Chápu, že je to asi tím, že z podadresáře je k určitému souboru logicky jiná cesta než z kořene.
Trochu jsem to vyřešil tak, že jsem cesty uvedl celé, např. /mojestranky/recepty/gulas.php atd. To sice funguje, jenže na localhostu, kde mám vlastně celé stránky v /opt/lampp/htdocs/mojestranky. Pokud je budu aplikovat na server, kde jako kořen je třeba adresář www, tak to fungovat nebude anebo bych musel všude v cestách změnit mojestranky na www.
Jak se to tedy správně a elegantně udělá?

 

 

14 odpovědí na otázku
Řazeno dle hodnocení

 

 

dzordz*
hodnocení

2x

Nevím, jestli to je přesně to, na co se ptáte, ale nemůže být menu taky jednou z částí stránky? Představoval bych si to tak, že soubor bude v nejvyšším adresáři (vedle indexu, hlavicky, paticky atd), jeho obsahem bude pouze vygenerování nějaké části (bloku, snippetu, partial view..): začátek div, nadpis Menu, ul, jednotlivé položky, /ul, /div. Možná ještě nějaká logika na zvýrazňování aktuální sekce.

Ve stránce pak na odpovídajícím místě pouze použijete require (pokud to správně chápu jako include) a html kód menu se do stránky vloží. Jakákoli jeho změna se pak zobrazí všude, ve všech instancích menu.

Zpětné odkazy o úroveň výše jdou, dvěma tečkami, ../menu.php, i o několik úrovní, ../../../menu.php. Dost možná taky jde zjistit plnou serverovou cestu spouštěného skriptu - u vás to může být /opt/lampp atd, na serveru třeba k:/server/weby/franta.cz/. Obě tato řešení jsou ale poměrně hloupá. Váš návrh s plnou url, www.franta.cz/atd, je navíc ještě nepřenosný, takže taky ne.

doplněno 23.04.12 22:39:

Nic, už mi došlo, jak to myslíte. Když se to menu includne, stane se součáští prováděného skriptu a když ten je umístěn ve složce, tak relativní cesty z menu z rootu nefungujou.

S tím vám asi moc neporadím, nejspíš budete muset zjistit plnou cestu k rootu a připojit k ní relativní cesty, které jste do menu napsal. Co $_SERVER['DOCUMENT_ROOT']? Nebo prý by mohla stačit cesta s lomítkem na začátku, /menu.php by mělo být do rootu, smysl by to dávalo :)

punkturtle*
hodnocení

To se mi také zdálo logické, že když začnu lomítkem, začnu v rootu, ale bohužel to tak nefunguje.

Ano, nějakým takovým příkazem se to řeší, ale jak říkám, začínám s php a netuším, jak takovou konstrukci použít.

dzordz*

No, ta proměnná by měla vrátit string, konkatenaci provedete tečkou, tak snad nějak takhle:

echo ’ odkaz’;

V boxu tady writecodeonline.com/... to funguje.

doplněno 23.04.12 23:49:

pokus 2: echo ' odkaz';

To první po zkopírování nejde, tohle snad půjde. Už se tu při psaní nemusej nahrazovat apostrofy, aby byly vidět :)

punkturtle*
hodnocení

Sice zatím nefunguje, ale zdá se, že to bude správná cesta, budu na tom makat. Děkuju moc.

 

charlies*
hodnocení

0x

Sice weby nedělám, ale řekl bych, že se použijí relativní cesty. polopate.jakpsatweb.cz/...

Takže pokud máš na localhostu stránky uloženy v adresáři D:mojestranky a tam máš ty tvoje html a třeba složku "obrazky", tak nepoužiješ "mojestrankyobrazky", ale jen "obrazky".

punkturtle*
hodnocení

To máte samozřejmě pravdu, u HTML je to přesně tak. V PHP ale ne právě díky tomu, že vlastně skript umístěný třeba v tom /mojestránky je volán z různých míst a podle toho kam je vsazen tak se chová k adresářové struktuře.

 

poseidon*
hodnocení

0x

Kdyby jste napsal e-mailový kontakt, poslal bych vám php šablonu jednoduchých webových stránek.

 

punkturtle*
hodnocení

Takže vyřešeno, zkusil jsem to hodit na ostrý server a pokud adresy skutečně začínají lomítky a cesty jsou adresované od roota (/recepty/gulas.php), vše funguje jak má.
Problém byl v tom, že používám xampp a třeba tyto stránky mám uloženy v /opt/lampp/htdocs/mojestránky.
Jenže pro xampp je root v /opt/lampp/htdocs, takže hledal volané soubory tam.
Jen teď nevím, jak tedy stránky zkoušet na localhostu...

dzordz*

To by snad nějak nastavit jít mělo, ne?

Nebo, revoluční myšlenka - máte windows? :)

punkturtle*
hodnocení

Windows nemám, ale stejně mě ta revoluční myšlenka zajímá :)

dzordz*

No že kdyby to nastavit nešlo (jakože si myslím, že by to určitě jít mělo, od čeho by to jinak byl webovej servr, žejo..), dá se vždycky spustit iis ve win7 nebo ho doinstalovat do xp, včetně home, zadarmo a komplet se vším, co byste tam chtěl. Tam se to pak nastaví pár kliknutími :)

doplněno 25.04.12 15:49:

Revoluční jsem nemyslel jako revoluční nápad, ale revoluční myšlenka pro linuxáky :)

punkturtle*
hodnocení

Tedy já sleduji Vaše příspěvky poměrně bedlivě a vážím si Vás, něco o tom víte a jste realistický.

Ale takový návrh? Jestli jste někdy jel na linuxu, tak byste v rámci té revoluce měl defenestrovat sám sebe..

:)

Samozřejmě Vás neurážím, berte to jako joke, ale jestli něco jde na win, tak to na linuxu jde stopro taky a lépe, jen bude chyba u mě, že nevím jak na to. I tak Díky...

A ještě jednou...neuražte se, ale sranda musí být..

dzordz*

Nemyslel jsem to úplně vážně, taky bych nepřecházel na linux jen kvůli tomu, abych si pustil webový server ;) Určitě to musí jít nějak nastavit i v tom vašem.

poseidon*

Ted nevím, co je localhost (váš PC?), ale každopádně by ten web měl být kompletně testovatelný v nějaké složce toho vašeho webového prostoru, nebo na jiné doméně. Já taky trochu dělám s php (mám Windowsy), ale testování na vlastním PC jsem ještě nevyřešil, pravda je, že zatím mě to moc netrápí.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]