Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Rozpoznanie ścieżki do katalogu
Malinaa
post 20.03.2009, 16:25:11
Post #1





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Witam, szukam sposobu na rozpoznanie ścieżki do katalogu.

Jak zrobić dynamiczne generowaną ścieżkę do katalogu?

Przykład:
Mamy katalog główny, w którym znajduje się plik index.php, w katalogu głównym znajduje się katalog include, w którym jest plik menu.php strony z linkami o stałej ścieżce.
Dla stron znajdujących się w katalogu głównym wszystko jest ok, ale mamy kolejny element strony ogłoszenia, w katalogu głównym ogloszenia/index.php i tu zaczyna się problem, ponieważ jeśli wczytamy za pomocą funkcji include(); menu.php w katalogu ogloszenia/index.php śieżka musi być inna dla wszystkich linków, grafiki niż dla pliku w katalogu głównym index.php.
Potrzebny jest plik menu.php z dynamicznie generowaną ścieżką w zależności od tego, w którym kalalogu zostanie wczytany. Dla katalogu ogloszenia/index.php ścieżka powinna być ../, gdybyśmy mieli kolejne katalogi o poziom wyżej np. ogloszenia/drobne/plik.php ścieżka powinna mieć postać ../../ itd.
Chciałbym zapewnić prawidłowe wyświetlanie wszystkich elementów strony, bez konieczności kopiowanie tych samych plików np. menu tylko dlatego, że ścieżka musi być inna, w zależności od umieszczenia pliku w katalogu bieżącym, nadrzędnym, podrzędnym.
Ach, piszę i nie bardzo wiem jak przedstawić problem. Może ktoś miał podobny, proszę o rozwiązanie.
Pozdrawiam

Ten post edytował Malinaa 20.03.2009, 16:30:49


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
b4x
post 20.03.2009, 16:29:52
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

Ostrzeżenie: (0%)
-----


dirname(__FILE__);


--------------------
Go to the top of the page
+Quote Post
pEbE
post 20.03.2009, 16:34:14
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 3
Dołączył: 21.03.2006
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Użyj instrukcji warunkowej np:
  1. <?php
  2. if( $dir = 'ogloszenia/drobne/' )
  3. {
  4.  $a = '../../';
  5. }
  6. include( $a.$plik );
  7. ?>


chyba, że (nie wiem czy dobrze zrozumialem Twoj problem) wyciagasz sciezke do pliku ze $_SESSION, dzielisz ja za pomoca explode i liczysz ile jest katalogów
Go to the top of the page
+Quote Post
b4x
post 20.03.2009, 16:37:13
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

Ostrzeżenie: (0%)
-----


A po co się bawić w "../../".

Lepiej np. w pliku konfiguracyjnym dać np:

  1. <?php
  2. define ('ROOT', dirname(__FILE__).'/');
  3. ?>


I później:

  1. <?php
  2. include(ROOT.'jakiskatalog/jakisplik.php');
  3. ?>


I 0 bawienia się z "../../".

Ten post edytował b4x 20.03.2009, 16:38:57


--------------------
Go to the top of the page
+Quote Post
Malinaa
post 20.03.2009, 17:59:31
Post #5





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


dirname jest mi znane, ale nie jest to rozwiązanie jakiego szukam.

Potrzebuję nie tyle co rozpoznać ścieżkę (chociaż takie rozwiązanie może okazać się najlepsze), a rozpozać, który to katalog: główny, nadrzędny, podrzędny?

Napisałem funkcje, która to realizuje, ale myślę, że można to zrobić bardziej mądrze, potrzebuję szanowni użytkownicy rady fachowca.

Funkcja:
  1. <?php
  2. function sciezka_katalogu($znak_podzilu, $element_biezacy) {
  3.    $katalog = getcwd();
  4.    $tablica = explode($znak_podzilu, $katalog);
  5.    $element_nadrzedny = $element_biezacy + 1;
  6.    if (isset($tablica[$element_biezacy])) {
  7.        $katalog_strony = $katalog_biezacy;
  8.    }
  9.    elseif (isset($tablica[$element_nadrzedny])) {
  10.        $katalog_strony = $katalog_nadrzedny;
  11.    }
  12.    return $katalog_strony;
  13. }
  14. ?>


Ten post edytował Malinaa 20.03.2009, 18:04:19


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
erix
post 20.03.2009, 19:20:09
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Potrzebuję nie tyle co rozpoznać ścieżkę (chociaż takie rozwiązanie może okazać się najlepsze), a rozpozać, który to katalog: główny, nadrzędny, podrzędny?

No to coś w stylu Twojej funkcji.

  1. <?php
  2. $znak_podzilu
  3. ?>

A stała DIRECTORY_SEPARATOR? tongue.gif

Cytat
Potrzebny jest plik menu.php z dynamicznie generowaną ścieżką w zależności od tego, w którym kalalogu zostanie wczytany. Dla katalogu ogloszenia/index.php ścieżka powinna być ../, gdybyśmy mieli kolejne katalogi o poziom wyżej np. ogloszenia/drobne/plik.php ścieżka powinna mieć postać ../../ itd.

To wystarczy prosty explode" title="Zobacz w manualu PHP" target="_manual ze sprawdzeniem ilości elementów...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kefirek
post 20.03.2009, 19:53:36
Post #7





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $folder = ""; $i = 0;
  3. while (!file_exists($folder."index.php")) {
  4.    $folder .= "../"; $i++;
  5.    if ($i == 5) { die("nie znaleziono pliku"); }
  6. }
  7.  
  8. define("GLOWNY", $folder);
  9. ?>


Potem robisz tak

  1. <?php
  2. <a href='".GLOWNY."plik.php'>test</a>
  3. ?>


Ten post edytował kefirek 20.03.2009, 19:58:46
Go to the top of the page
+Quote Post
Malinaa
post 20.03.2009, 20:59:24
Post #8





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Poprawiłem moją funkcje i jest OK.
$znak_podzilu - przeliterowanie którego nie zmieniłem, bo nie nie miało znaczenia w działaniu funkcji.

Zobaczę jeszcze Twoje rozwiązanie kefirek.

Thank's


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:28