Autor Zpráva
Petardice
Profil *
Ahoj,

snažím se rozchodit stránky na localhostu, ale nedaří se... Index je tvořený následovně:
<?php 
include ('_inc/zacatek.php');
?>


pak text dané stránky

<?php 
include ('_inc/konec.php');
?>


'_inc/zacatek.php obsahuje <html><body>, logo a menu, '_inc/konec.php pak obsahuje zápatí a </body></html>
složka _inc je na rootu spolu s indexem a složkou pages

ve složce pages jsou pak stránky v té samé podobě, jen s rozdílnou cestou:
<?php 
include ('../_inc/konec.php');
?>


Na locale, když zadám index, se mi ale zobrazuje jen první includovaná část, tedy logo a menu, chybí už textová část a zápatí (tedy _inc/konec.php). Poradí někdo, kde je chyba?
Davex
Profil
Není v tom začátku.php otevřený HTML komentář nebo třeba exit?
Petardice
Profil *
když to vezmu popořadě, je tam
<html> (ukončeno v konec.php)
<body></body>
<head> (ukončeno v konec.php)

pak je tam otevřený div pro celou stránku - tedy pro logo, menu a textovou část, ten je ukončen v konec.php
dál je divem vložené logo, dalším divem menu - oba divy jsou na tomto místě i ukončeny
a nakonec je otevřený div pro textovou část + jeden include (div je ukončený v konec.php)
Davex
Profil
Proč je tam to prázdné <body></body> a proč je <head> ukončeno až v konec.php?
Petardice
Profil *
omlouvám se za mystifikaci, psala jsem to narychlo a nějak jsem to zamotala. takže správně to je:
zacatek.php
<html>
<head></head>
<body> - zde zůstávají otevřené ty dva divy, jinak je tu vložené logo a menu, je tu tedy všechno, co se opakuje na každé stránce.

konec.php
uzavření dvou divů, patička
</body>
</html>

stránky jsou tvořené tak, jak jsem psala v prvním příspěvku, aspoň něco jsem včera večer nezmastila...
Petardice
Profil *
takže problém objeven, ale nevyřešen. v zacatek.php mám následující zápis, když ho odstraním, na locale se zobrazí vše:
<?php
include ('/home/free/ic.cz/b/bohemiabay/root/www/_inc/modLogging.php');
modLogging("visits","");
?>
Jde to nějak upravit? A ještě jedna otázka, byť není k tématu php, ale třeba nebudu muset zakládat nové téma. Nedaří se mi nastavit poloprůhledné pozadí jednoho prvku tak, abych v css nastavila barvu, jak moc má být průhledná, ovšem to, co bude umístěno na daném poloprůhledném pozadí by mělo být normálně viditelné. Poloprůhlednost se mi daří, ovšem všeho, co na pozadí je. Jde o menu - poloprůhledné pozadí, ale názvy odkazu a img, který se zobrazuje jako odkaz, to by mělo být normálně viditelné...
Kajman_
Profil *
Kolem include a modlogging si můžete dát podmínku. Buď na to, že soubor existuje, nebo že to není pouštěné na localhostu.
Petardice
Profil *
[#7] Kajman: asi není řeč o file_exists, že? S PHPkem jsem spíš ve stádiu základů, takže hlavně obyčejné includování...

Jinak jsem opět v koncích s localem, někde musím mít asi špatně zadané cesty, jinak si to nedovedu vysvětlit :/ Index.php se zobrazuje korektně (když tedy odmyslím problém s modLoggingem), ale všechny ostatní stránky se načtou v prosté textové verzi bez načtení css.
struktura stránek je následující:
_css (kask. styly)
_inc (zacatek.php, konec.php a modLogging.php)
_logs (vztahuje se k modLogging)
_mods (lightbox)
img (veškeré obrázky)
pages (veškeré texty kromě indexu)
index.php

Index je tvořený následovně:
<?php 
include ('_inc/zacatek.php');
?>

text dané stránky

<?php 
include ('_inc/konec.php');
?>


Zbylé stránky ve složce pages jsou tvořené následovně:
<?php 
include ('../_inc/zacatek.php');
?>

text dané stránky

<?php 
include ('../_inc/konec.php');
?>


jinak v zacatek.php mám uvedeno, že:
<script type="text/javascript" src="./_mods/prototype.js"></script>
<script type="text/javascript" src="./_mods/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="./_mods/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="./_css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="./_css/lightbox.css" media="screen">

a cesty k jednotlivým stránkám jsou tvořeny také jako <a href='./pages/feny.php' title="naše feny">Naše feny</a>.
Davex
Profil
Petardice:
Pokud jsou stránky v jiném podadresáři než úvodní stránka, tak pro připojení externích JavaSkriptů a stylopisů používej kořenové adresy.
Petardice
Profil *
[#9] Davex omlouvám se za ... otázky, ale asi jsem natvrdlá, protože ať to zkouším, jak to zkouším, nejde mi to. kořenovou adresu (tedy začínající lomítkem) jsem zadala jak do indexu (cesta k zacatku a konci), tak do pages (v jednotlivých stránkách taktéž cesta k zacatku a konci) - v tomto případě je ale stav neměnný, tedy index se zobrazuje se styly, ostatní stránky bez. v zacatek.php jsou v hlavičce cesty ke stylům, jenže když tam změním cestu ./_css/style.css na /./_css/style.css, zobrazí se bez stylů i index.
Davex
Profil
Za úvodním lomítkem musí následovat celá cesta k souboru od kořene webu (http://localhost/) včetně všech podadresářů.

Pokud je URL stránky http://localhost/pages/nejaka-stranka.php, tak musí být cesta /_css/style.css. Pokud jsou stránky ještě někde jinde, třeba v dalším adresáři http://localhost/moje-stranky/pages/nejaka-stranka.php, tak se musí zadat cesta ke stylopisům jako /moje-stranky/_css/style.css.
Petardice
Profil *
Díky!!!! to bylo ono, nedošlo mi, že v localhostu mám víc složek, takže proto to nefungovalo. Teď, po upravení cesty na /název webu/_css/style.css vše na locale funguje, jak má. Ale po nakopírování na web to přece fungovat nemůže, ne? Tam totiž nebude vše uložené v téhle složce, ta už tam nebude. Tady mám tedy asi problém, že?
Davex
Profil
Petardice:
Ale po nakopírování na web to přece fungovat nemůže, ne?
Přesně tak, na webu se musí odmazat ten adresář /název webu/.

Můžeš to také vyřešit tak, že budeš nastavovat cestu podle toho, kde zrovna web běží.

if ($_SERVER['HTTP_HOST'] == 'localhost') {

  echo '<script type="text/javascript" src="/název webu/_mods/prototype.js"></script>
<script type="text/javascript" src="/název webu/_mods/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/název webu/_mods/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="/název webu/_css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/název webu/_css/lightbox.css" media="screen">';

} else {

  echo '<script type="text/javascript" src="/_mods/prototype.js"></script>
<script type="text/javascript" src="/_mods/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/_mods/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="/_css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/_css/lightbox.css" media="screen">';

}
panther
Profil
Petardice:
a co tag <base>, nepomohl by?
Petardice
Profil *
už si připadám jak trubka :( s menší úpravou - musím mít zadané www.localhost.cz, nejen localhost - se mi to podařilo rozběhnout s if a else, ale narazila jsem zas na jiný problém, opět cesty a já už fakt nevím, kdy mám jaký způsob cest použít a pěkně jsem se do toho zamotala. Když na locale zadám název webu, objeví se index včetně stylů. Když kliknu na nějaký odkaz, zobrazí se daná stránka včetně stylů. Ovšem když chci jít v tomto okamžiku na další stránku, v cestě už se mi zduplikuje pages, takže je cesta název webu/pages/pages/název stránky.php místo název webu/pages/název stránky.php a ať to zkouším upravit, jak zkouším upravit, nejsem schopná na to přijít...
Petardice
Profil *
aktuálně to tedy vypadá následovně:
jsem ve složce _inc -> zacatek.php a <head> obsahuje
<?php
if ($_SERVER['HTTP_HOST'] == 'www.localhost.cz') {

  echo '<script type="text/javascript" src="/_kw/_mods/prototype.js"></script>
<script type="text/javascript" src="/_kw/_mods/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/_kw/_mods/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="/_kw/_css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/_kw/_css/lightbox.css" media="screen">';

} else {

  echo '<script type="text/javascript" src="/_mods/prototype.js"></script>
<script type="text/javascript" src="/_mods/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/_mods/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="/_css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/_css/lightbox.css" media="screen">';

}
?>


a v body (stále zacatek.php) mám menu, které má následující odkazy:
<p><a href='./index.php' title="úvod">Úvod</a></p>
<p><a href='./pages/kameny.php' title="kameny">Kameny</a></p>
<p><a href='./pages/navrhy.php' title="návrhy">Návrhy</a></p>
Davex
Profil
Petardice:
Pokud se v URL zobrazené stránky vyskytuje adresář /pages/, tak musíš na Úvod odkazovat jako na nadřazený adresář pomocí dvou teček a na ostatní stránky v adresáři /pages/ stačí odkazat přímo. Psát tam jméno souboru index.php je také asi zbytečné.

<p><a href='../' title="úvod">Úvod</a></p>
<p><a href='kameny.php' title="kameny">Kameny</a></p>
<p><a href='navrhy.php' title="návrhy">Návrhy</a></p>

Krom toho by se pro menu měl použít nečíslovaný seznam <ul> nebo <menu>.
Tori
Profil
Petardice
A nepomohlo by používat prostě všude absolutní odkazy, s tím že si adresu webu nadefinujete jako konstantu? Např.
// hned na začátku aplikace, v konfiguráku apod.
if ($_SERVER['HTTP_HOST'] == 'localhost')
  define('BASE_URL', 'http://localhost/nazev_webu'); // bez koncového lomítka
else
  define('BASE_URL', 'http://nazev-webu.cz');
  
// použití - po konstantě vždy musí být lomítko
// - stejný zápis bude fungovat správně v /index.php i v /pages/neco.php
echo '<script type="text/javascript" src="'.BASE_URL.'/_mods/prototype.js"></script>';

Kdybyste includovala .html soubory, tak by to nešlo, ale když je (jak se zdá) všechen výstup přes PHP tak bych použila tohle.
Petardice
Profil *
s tím indexem mě to mohlo taky napadnout. jinak, jak je zřejmé z mých dotazů, stránky dělám jen pro zábavu ve volném čase jako samouk, občas objevím na netu nějakou novinku, kterou pak použiju na svých stránkách. nejdřív jsem je dělala ve FrontPage, ale když jsem zjistila, co to generuje za kódy, přešla jsem na PSPad, ručně psané kódy a externí css, nicméně je toho pořád minimum, co vím, takže třeba tag menu se přiznávám, že vůbec neznám a to, že pro menu se používá <ul> nebo <menu> je pro mě vítaná novinka, určitě použiju a díky za radu.
ovšem otázka odkazů a jejich správné fungování na locale i webu je pro mě pořád záhadou :/ index (s includovaným zacatek.php a konec.php) je totiž přímo na rootu, zatímco zacatek.php (hlavička včetně celého menu) a konec.php jsou ve složce _inc a stránky jsou ve složce pages. Takže pages/ do odkazu vložit musím, při prvním kliknutí na nějaký odkaz se to zobrazí správně a nechápu, co udělat pro to, aby se při kliknutí na další odkaz neobjevilo pages/pages/... Mám sto chutí se na local vykašlat, ale fakt je, že kdyby to běhalo tak, jak má, bylo by to super :) Je mi jasné, že je to se mnou jak s tatarem a upřímně se divím, že jste mě ještě neposlali do háje a za to obrovský dík!
Davex
Profil
Petardice:
index (s includovaným zacatek.php a konec.php) je totiž přímo na rootu, zatímco zacatek.php (hlavička včetně celého menu) a konec.php jsou ve složce _inc a stránky jsou ve složce pages.
Prohlížeč zpracovává až výsledný HTML kód, takže nezáleží na umístění souborů s PHP skripty.

Zkus si ještě jednou přečíst o relativních a kořenových odkazech. Když se odkazuje na soubor ve stejném adresáři, tak není potřeba uvádět jméno adresáře.

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: