logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PHP - Listowanie plików i katalogów na wielu poziomach

sleem 17 Cze 2013 11:53 2376 9
REKLAMA
  • #1 12424893
    sleem
    Poziom 9  
    Posty: 24
    Witam, napisałem skrypcik, który ma na celu wyświetlanie plików i katalogów. Niestety nie działa do końca tak jakbym chciał. Chodzi mianowicie o to, że w momencie wejścia i wyświetlenia jednego z katalogów, jeszcze "głębsze" wejście jest niemożliwe. Kolejny z problemów to ".." gdzie ma cofać do wyższego poziomu.
    Żeby chyba to zrozumieć co napisałem konieczne jest odpalenie kodu.

    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    z góry dziękuję za pomoc.

    Jest kapke lepiej, wszystko gra po wyborze pierwszego katalogu, niestety na drugim nie pamieta poprzedniej zmiennej (tak mi sie wydaje)

    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 12425286
    grzemach
    Poziom 21  
    Posty: 505
    Pomógł: 35
    Ocena: 25
    a jak on ma działać? Możesz wykonać jakiś przykład?
  • #3 12425362
    sleem
    Poziom 9  
    Posty: 24
    Przykładu w sumie nigdzie nie widziałem. Ma działać na zasadzie managera plików (tylko wyświetlanie). Mają być listowane pliki i foldery z określonego katalogu. Dla mnie problem polega na tym, że do plików jest bezpośredni link a katalogi mają się
    "listować".
    Daje coś takiego
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    i jeśli dobrze rozumuje to np jesli $dir to ./ a $_REQUEST "folder"
    to powinno dawać ./folder/ i rzeczywiście tak jest
    niestety kolejne kliknięcie w np "folder2"
    powinno dać ./folder/folder2/ ale niestety daje ./folder2/
  • REKLAMA
  • Pomocny post
    #4 12425536
    grzemach
    Poziom 21  
    Posty: 505
    Pomógł: 35
    Ocena: 25
    ok, czyli coś takiego:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    W tym pliki taktowane są jako katalogi, aby to rozgraniczyć zainteresuj się funkcją "is_dir"
  • REKLAMA
  • #5 12426484
    sleem
    Poziom 9  
    Posty: 24
    Super, dziękuję. Teraz muszę to zrozumieć :P
  • #6 12426525
    grzemach
    Poziom 21  
    Posty: 505
    Pomógł: 35
    Ocena: 25
    miałeś kilka drobnych błędów.

    Jak porównasz kody (po usunięciu kodu odpowiedzialnego za ..). to zobaczysz gdzie one były.

    W głównej mierze, błąd był w ostatnim if'ie. wystarczyło dodać $dir przed $plik, ale było kilka mniejszych problemów... np. ze sleshami.

    Jak byś miał dalej problemy, to pisz tutaj, to Ci coś może pomogę.

    PS. jeśli chciałbyś pobrać plik w ten sposób to też musisz pokombinować, bo tak się nie da (da się tylko jeśli dany katalog jest widoczny z poziomu apache) :)
    poszukaj czym jest "readfile()" i jak używać.

    Bo w sumie teraz zauważyłem, że "is_dir" używałeś :)
  • #7 12428431
    sleem
    Poziom 9  
    Posty: 24
    Już w sumie wszystko jest elegancko, lecz jak już to działa to widzę, że jest mało czytelne. Zastanawiam się czy i jak można by było zrobić aby w pierwszej kolejności wyświetlały się alfabetycznie foldery a następnie pliki. Z pewnością !is_dir przyszłoby z pomocą ale nie wiem jak tego użyć bo jak na ifie to poleci mi tylko raz i same katalogi wyświetli a pliki pominie.
  • REKLAMA
  • #8 12432259
    sleem
    Poziom 9  
    Posty: 24
    Dałem rade. Zrobiłem tak. Zamiast jednego ifa, który listował pomieszane pliki i katalogi, zrobiłem dwa oddzielne.

    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    i
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    Może to mało eleganckie ale działa. Chyba, że ktoś miałby inny pomysł.
  • #9 12432512
    grzemach
    Poziom 21  
    Posty: 505
    Pomógł: 35
    Ocena: 25
    Możesz zrobić jeszcze inaczej. Bo tam chyba teraz robisz 2x for.

    zrób tak:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    Pisane bez edytora. W ten sposób jednym ifie masz to też rozwiązane.
  • #10 12432632
    sleem
    Poziom 9  
    Posty: 24
    a ta deklaracja jest konieczna ?
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    W sumie działa tak i tak :)

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał problemy z działaniem skryptu PHP, który miał na celu wyświetlanie plików i katalogów w strukturze folderów. Główne trudności dotyczyły braku możliwości wchodzenia w podkatalogi oraz nieprawidłowego działania linku do katalogu wyższego poziomu. Po kilku wymianach wiadomości, użytkownik otrzymał pomocne wskazówki dotyczące poprawy kodu, w tym dodania odpowiednich warunków do obsługi katalogów i plików. Ostatecznie, użytkownik zrealizował rozwiązanie, które oddzielało wyświetlanie katalogów i plików, co poprawiło czytelność wyników.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA