Autor | Zpráva | ||
---|---|---|---|
Silencer Profil |
#1 · Zasláno: 30. 11. 2007, 23:53:05
Mám problém s odkazovaním na subor v podadresari.
Používam includovací systém, kde mám súbor index.php, ktorý si načíta hlavičku, stred (samotný obsah) a pätu. Problém je však v tom, že súbor na zaradenie do stredu script vždy hľadá v hlavnom adresári. Potrebujem však kvôli prehľadnosti oddeliť viac súborov do iného podadresára, ale nedokážem ho bez problémov nasmerovať do tohto podadresára. Napr. toto je klasický odkaz, ktorý ide bez problémov: <a href="index.php?zoznam-clenov">zoznam členov</a> Potrebujem však odkázať na súbor, ktorý je v podadresári: <a href="/graf/index.php?prihov0">Príhovor</a> Je mi jasné, že ten súbor index.php sa tam nenachádza, takže je to chybný script. Neviem však, ako ho tam nasmerovať? V podadresári bude iba text, takže žiadne problémy s obrázkami nebudú (pokiaľ to načíta správne hlavičku a pätu)? Ďakujem za radu. |
||
Alphard Profil |
#2 · Zasláno: 1. 12. 2007, 00:10:37
<a href="index.php?%2Fgraf%2Fprihov0">zoznam členov</a>
|
||
Silencer Profil |
#3 · Zasláno: 1. 12. 2007, 00:35:13
Ak som to dobre pochopil, %2F má nahradiť lomítko.
Po doplnení do scriptu má to však hádže na hlavnú stránku. Možno je však problém s mojím scriptom, ktorý testuje, či stránka existuje, pre istotu ho prikladám: <? |
||
tiso Profil |
#4 · Zasláno: 1. 12. 2007, 00:58:49
Silencer - nepochopil si princíp if/else, zbytočne tam dávaš tie isté podmienky viackrát!
|
||
Alphard Profil |
#5 · Zasláno: 1. 12. 2007, 09:42:01
když testuješ $page, mělo by být index.php?page=%2Fgraf%2Fprihov0"
$file='t_'.$page.'.php'; vzhledem k tomu, že je součástí cesty adresář to nebude fungovat |
||
Silencer Profil |
#6 · Zasláno: 1. 12. 2007, 14:08:24
Silencer - nepochopil si princíp if/else, zbytočne tam dávaš tie isté podmienky viackrát!
tiso - netvrdím, že som programátor, používam, však ten script už dlhšie a nemal som s ním problém. Ten kód mi ukázal skúsený programátor php, ktorý mi vysvetľoval include systém v php. Je v tom kóde taká chyba, ktorá ovplyvňuje môj zámer odkazovať do podadresára, alebo je ten kód iba zbytočne dlhý? |
||
Silencer Profil |
#7 · Zasláno: 1. 12. 2007, 14:14:50
Alphard - keď napíšem odkaz ako index.php?page=%2Fgraf%2Fprihov0, stránku mi nenájde, teda vypíše moju chybovú hlášku, ktorá je v kóde vyššie, že ak neexistuje file, tak includuje t_error.php.
Dá sa zmeniť tá podmienka tak, aby neovplyvnila iné časti stránky a zároveň dokázala odkazovať do podadresára? Za podmienok použitia kódu na includovanie ukázaneho vyššie a použitého podmienkovania, teda nie je možné schovať súbory do podadresárov? |
||
Alphard Profil |
#8 · Zasláno: 1. 12. 2007, 15:25:54 · Upravil/a: Alphard
jestli se vzdáš t_ před názvem, můžeš použít
<?php if (isset ($_GET['page'])) { if (file_exists ($_GET['page'].".php")) $soubor = $_GET['page'].".php"; else $soubor = "error.php"; } else $soubor = "aktuality.php"; include $soubor; ?> |
||
Silencer Profil |
#9 · Zasláno: 1. 12. 2007, 15:42:03
Vyskúšal som to, ale rovnako ma nedokáže odkazovať na súbor v podadresári, je to rovnaké ako predtým.
A v tom kóde bola malá chybička, koniec zloženej zátvorky } mal byť za error.php, to som si opravil. |
||
Alphard Profil |
#10 · Zasláno: 1. 12. 2007, 16:02:01
nevím, v čem je chyba, ale můj kód funguje, teď jsem ho zkoušel
URL ve tvaru ht-tp://localhost/neco/struktura.php?page=prvni%2Fdruhy%2Ftreti%2Ftext a správně to includovalo soubor text.php (spojovník v http je tam jen kvůli převodu na odkaz v této diskuzi) s tou závorkou máš pravdu, opravím to |
||
Silencer Profil |
#11 · Zasláno: 1. 12. 2007, 16:28:16
Pri tom mojom vzdávani sa t_ som zabudol vzdať sa ho aj v tom podadresári "graf".
Keď som ho potom správne premenoval, tak to už správne zobrazí aj podstránku v podadresári. Ďakujem veľmi pekne za pomoc. Len pre dovysvetlenie: Problém spôsobovalo pomenovavanie súborov s t_? Keby som ho chcel zachovať, tak sa musím vzdať podadresárov? t_ nemá zvláštný význam okrem odlíšenia súborov, ktoré sú podstránkami od ostatných hlavných súborov (header, footer a pod.) |
||
Alphard Profil |
#12 · Zasláno: 1. 12. 2007, 16:41:06
Len pre dovysvetlenie:
problém je v tom, že součásti cesty je adresář. např. adresar1/adresar2/soubor.php a pokud na začátek tohodle doplníš t_, vznikne t_adresar1/adresar2/soubor.php a to je ten problém jsou v zásadě 3 možnosti řešení: 1. t_ bude již v odkazu, nebude se doplňovat v kódu a vše bude OK 2. mít 2 GET proměnné, např. cesta a page, pak se spojí $cesta."t_".$page a bude to OK 3. najít v cestě začátek souboru, rozseknou ho tam na dvě části a postupovat jako 2. |
||
Silencer Profil |
#13 · Zasláno: 1. 12. 2007, 17:51:55
Teraz som to pochopil na 100 %. V podstate mi stačilo do môjho systému includovania doplniť premennú cesta a tu potom definovať pri odkazoch.
Super, funguje to. Ešte raz diky. |
||
Časová prodleva: 16 let
|
0