Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] linki do innego katalogu
Forum PHP.pl > Forum > Przedszkole
narki1
Witam
Buduję sobie stronę i mam problem. Postaram się wytłumaczyć jak najlepiej:
Strona składa się z plików: index.php , jeden.php, dwa.php ...itd.
W pliku index.php mam powiedzmy dwa bloki: jeden to menu a drugi zawartość.
W menu mam:
  1. <?php
  2. <dl id="menu">
  3. <dt>Dział1</dt>
  4. <dd><a href="index.php?a=home">home</a></dd>
  5. <dd><a href="index.php?a=jeden">Alpine</a></dd>
  6. ...
  7. <dt>Dział2</dt>
  8. <dd><a href="index.php?a=dwa">dwa</a></dd>
  9. </dl>
  10. ?>

A w zawartości:
  1. <?php
  2. if(empty($_GET['a']) || !file_exists($_GET['a'].".php"))
  3. $_GET['a']="home";
  4. include($_GET['a'].".php") ;
  5. ?>

Wszystko działa i jest ok. Ale chciałby zrobić trochę porządku i pozakładać katalogi :Dział1, Dział2 ...itp
W katalogach tych pliki *.php dla konkretnego działu.
Pytanie brzmi: jak przerobić część w bloku zawartość ,żeby szperała po innych katalogach ?
Zaznaczam ,że nazwy plików w katalogach nie będą się powtarzać. Czyli link mógłby pozostać tylko funkcja musiała by być miej więcej taka:
1.Pobierz 'a'
2.Jeżeli nie istnieje plik 'a'.'php' zobacz w katalogu dział1 itp.
Nie potrafię tego zrobić a trochę już szukałem tu i tam.
Nie chciałbym też wrzucać kilkudziesięciu plików do katalogu głównego ,żeby mieć spokój.

Z góry dzięki
nithajasz
Sprawdzaj czy w danym katalogu istnieje taki plik

  1. <?php
  2. file_exists($katalog.'/'.$plik.'.php');
  3. ?>


Jeśli istnieje to dodawaj plik jeśli nie istnieje to sprawdzaj następny katalog..
narki1
Wrzuciłem tak:
  1. <?php
  2. if(empty($_GET['a']) || !file_exists($_GET['a'].".php"));
  3. include($_GET['a'].".php") ; 
  4. elseif !file_exists($Dzial1.'/'.$_GET['a'].'.php');
  5. else $_GET['a']="home"
  6. ?>

Nie działa i do tego mam kilka pytań:
1. Czy rozszerzenie ".php" powinno się pisać w cudzysłowach czy w '.php' ?
2. Czy file_exists pisze się z wykrzyknikiem czy bez ?
3. po każdej lini stawia się średnik ?
Widziałem tyle różnych zapisów że zaczynam myśleć o tym ,że to o te małe robaczki chodzi (";'.)
nithajasz
Nie rozumiem tego co napisałeś

  1. <?php
  2. if(isset($_GET['a']) && file_exists($_GET['a'].".php"))
  3. {
  4. include_once($_GET['a'].".php");
  5. } elseif (isset($_GET['a'] && file_exists($Dzial1.'/'.$_GET['a'].'.php'))
  6. {
  7.  include_once($_GET['a'].'.php');
  8. }
  9. else echo "brak strony";
  10. ?>


Cytat
1. Czy rozszerzenie ".php" powinno się pisać w cudzysłowach czy w '.php' ?


W tym przypadku ma to być interpretowane jako string więc musi mieć jakieś ramki w postaci ' ' czy " ".

Cytat
2. Czy file_exists pisze się z wykrzyknikiem czy bez ?


Wykrzyknik piszesz gdy oczekujesz, że funkcja jaką np jest file_exists zwróci false.

Cytat
3. po każdej lini stawia się średnik ?


Nie po każdej. Tu zapraszam do manuala smile.gif Z tego co wiem nikogo jeszcze nie pogryzł smile.gif
narki1
Moja wiedza jest płytka ale czytając Twój kod rozumiem go nawet.
Według mnie powinno działać a jednak nie działa. Nawet nie mam komunikatu "brak strony"
Sprawdzam dalej.

Kapota niestety sad.gif
rzymek01
Cytat(nithajasz @ 31.05.2008, 18:11:52 ) *
  1. <?php
  2. if(isset($_GET['a']) && file_exists($_GET['a'].".php"))
  3. {
  4. include_once($_GET['a'].".php");
  5. } elseif (isset($_GET['a'] && file_exists($Dzial1.'/'.$_GET['a'].'.php'))
  6. {
  7.  include_once($_GET['a'].'.php');
  8. }
  9. else echo "brak strony";
  10. ?>


jak już to w 7 linii nie powinno być:
  1. <?php
  2. include_once($Dzial1.'/'.$_GET['a'].'.php');
  3. ?>

?


EDIT:
a w ogóle to ja bym to zrobił tak:
jak wiesz, że masz dwa działy to zamiast $_GET['a']:
$_GET['a'] <- dział pierwszy
$_GET['b'] <- dział drugi

i już będziesz wiedział w jakim katalogu szukać
nithajasz
Cytat(rzymek01 @ 31.05.2008, 22:05:12 ) *
jak już to w 7 linii nie powinno być:
  1. <?php
  2. include_once($Dzial1.'/'.$_GET['a'].'.php');
  3. ?>

?


Powinno być, z rozpędu nie zwróciłem uwagi.. smile.gif
rzymek01
narki1, a jak masz więcej działów to też doklejaj to do linka:

index?plik=(string)&dzial=(może int)

i potem np:
  1. <?php
  2. $dzialy = array(
  3. 1 => 'dzial1',
  4. 2 => 'dzial2'
  5. );
  6.  
  7. include('./'.$dzialy[$_GET['dzial']].'/'.$_GET['plik'].'.php');
  8. ?>


oczywiście dodaaj sobie jakieś file_exists czy inne sprawdzanie
nithajasz
Cytat(narki1 @ 31.05.2008, 18:42:36 ) *
Moja wiedza jest płytka ale czytając Twój kod rozumiem go nawet.
Według mnie powinno działać a jednak nie działa. Nawet nie mam komunikatu "brak strony"
Sprawdzam dalej.

Kapota niestety sad.gif


Powinien Ci błąd wyskakiwać bo nie domknąłem jednego nawiasu.

  1. <?php
  2. if(isset($_GET['a']) && file_exists($_GET['a'].'.php'))
  3. { include_once($_GET['a'].'.php'); } 
  4. else if (isset($_GET['a']) && file_exists($Dzial.'/'.$_GET['a'].'.php'))
  5. {
  6.  include_once($_GET['a'].'.php');
  7. }
  8. else die('plik nie istnieje');
  9. ?>


W tej wersji to działa.. Sprawdzałem u siebie. Ale jak chcesz tak robić warto by było pomyśleć nad jakąś funkcją zbierającą foldery do tablicy i sprawdzaniu tych folderów z tej tablicy. Czy coś w tym stylu bo jak przyjdzie Ci ręcznie dodawać w późniejszej fazie jakiś folder to będzie to mało funkcjonalne.
narki1
Witam
Teraz działa blinksmiley.gif ale tak ..., że mam komunikat "strona nie istnieje".
Przeanalizuję sobie kod kolegi rzymka01.
To wygląda nieźle.
Chyba będę musiał wrzucić w linku 2 zmienne coś tak:
  1. <?php
  2. <a href="index.php?a=dzial1&amp;b=plik">
  3. ?>


Nasuwa mi się jednak pytanie: co z katalogiem głównym, w którym też są jakieś pliki .php np. home.php itp ?
Jak umieścić odwołanie do tego katalogu w tablicy ?
Druga rzecz może już przewrotna ale jeżeli będzie w katalogu "dział1" kolejny katalog np. "dział 1.1" to trzeba będzie wrzucić trzecią zmienną w linku i tablicy ?

Dzięki za sugestie. Problemy się pojawią na pewno dlatego się odezwę.
Pozdr



Ha doszedłem exclamation.gif
  1. <?php
  2. $dzial=('dzial1');
  3. if(isset($_GET['a']) && file_exists($_GET['a'].'.php'))
  4. { include_once($_GET['a'].'.php'); } 
  5. else if (isset($_GET['a']) && file_exists($dzial.'/'.$_GET['a'].'.php'))
  6. {
  7.  include_once($dzial.'/'.$_GET['a'].".php"); 
  8. }
  9. else die('plik nie istnieje');
  10. ?>

Linijka "7" była troszku ,źle. Wcześniej sprawdzałem czy plik znajduje się w katalogu dział1 jeżeli jest to pobierz go (ale nie zapisane było skąd i pobierał z głównego.
Teraz zostało rozwalić drugi podkatalog i będzie guitar.gif
Ale mi teraz dobrze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.