Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Proszę o wytłumaczenie kodu
Forum PHP.pl > Forum > Przedszkole
Randallmaster
  1. $obecny_kat = './';
  2. $kat = opendir($obecny_kat);
  3. while ($plik = readdir($kat))
  4. {
  5. if ($plik != '.' && $plik != '..' && is_dir($obecny_kat.$plik))


wiem że open dir otwiera katalog, readdir czyta wszystkie katalogi natomiast mam problem z kodem po if.

Chce sam dodać sortowanie alfabetyczne ale najpierw musze zrozumieć kod
Sephirus
  1. if ($plik != '.' // Jeśli element nie jest "głównym folderem" - pojedyncza kropka
  2. && $plik != '..' // jeżeli element nie jest folderem nadrzędnym
  3. && is_dir($obecny_kat.$plik)) // jeśli jest folderem



W systemach lista plików może wyglądać tak:

.
..
folder1
folder2
plik1.txt
plik2.txt
(...)

Z takiego ten IF przepuści:

folder1
folder2

wink.gif
Prym
Kod
    $obecny_kat = './';   // katalog do listowania (./ - oznacza katalog w którym znajduje sie plik z aktualnym kodem - osobiście wolę używać odnośników od samego poczatku drzewa katalogów na serwerze czyli : $_SERVER['DOCUMENT_ROOT'] - wskazuje na katalog główny serwisu)
    $kat = opendir($obecny_kat); // pobiera liste plików z katalogu
    while ($plik = readdir($kat)) // pętla: za każdym razem do $plik przyporządkowuje jednego pliku/katalogu
    {
    if ($plik != '.' && $plik != '..' && is_dir($obecny_kat.$plik))  // tu masz sprawdzenie czy dana pozycja jest : . katalogiem bieżącym, .. przejściem do katalogu powyżej, is_dir jest katalogiem.
Randallmaster
No to wiem co mi napisaliście, ale możecie mi napisać dokładnie co oznaczają te kropki:

  1. $plik != '.' && $plik != '..'
<- co to ma za zadanie co daje wykrzyknik??



tu staram się zrobić alfabetycznie ale wychodzi mi ciągle

plik[0] = plik1

plik[0] = plik2



  1. $obecny_kat = './';
  2. $kat = opendir($obecny_kat);
  3. while ($plik = readdir($kat))
  4. {
  5. if ($plik != '.' && $plik != '..' && is_dir($obecny_kat.$plik))
  6. {
  7. $sort = array($plik);
  8. sort($sort);
  9. foreach ($sort as $key => $val) {
  10. echo "plik[" . $key . "] = " . $val . "\n";
  11. }
nospor
kropki to nazwy wirtualnych katalogów w systemie plików
! - to operator negacji - podstawy php, które wypadaloby znać.
== - operator porównania
!= - operator różności
Randallmaster
dlaczego mi wychodzi ciągle

array[0]questionmark.gif
nospor
$sort = array($plik);
Bo zawsze tworzysz tablicę jedno elementową
Randallmaster
Cytat(nospor @ 30.11.2011, 10:14:23 ) *
$sort = array($plik);
Bo zawsze tworzysz tablicę jedno elementową


no ale jak próbowałem zrobić

$plik = array(); to wszędzie pisze mi array sad.gif nie mogę znaleźć funkcji dorozdzielenia tego
nospor
Masz dodawać do tablicy a nie ciągle tworzyć ją na nowo.
  1. $obecny_kat = './';
  2. $kat = opendir($obecny_kat);
  3. $tab = array();
  4. while ($plik = readdir($kat))
  5. {
  6. $tab[]= $plik; //tak sie dodaje
  7. }
  8. print_r($tab);
Randallmaster
trochę dziwnie mi się zrobiło:

Array ( [0] => BogFran )
Array ( [0] => BogFran [1] => Krysiak )
Array ( [0] => BogFran [1] => Krysiak [2] => Fadome )
Array ( [0] => BogFran [1] => Krysiak [2] => Fadome [3] => Demar )

potrzebuję uzyskać:

array[0] => Bogfran
array[1] => Krysiak
array[2] => Fadome

itd.questionmark.gif
nospor
Pokaz kod, bo znowu coś napsułes
Randallmaster
  1. <?php
  2. $obecny_kat = './';
  3. $kat = opendir($obecny_kat);
  4. $tab = array();
  5. while ($plik = readdir($kat))
  6. {
  7. if ($plik != '.' && $plik != '..' && is_dir($obecny_kat.$plik))
  8. {
  9. $tab[] = $plik;
  10. print_r ($tab);
  11.  
  12. }
  13. }
  14. ?>


muszę tylko wyegzekwować same foldery bez innych katalogów
nospor
U mnie print_r jest poza petlą. Ty dales to w petli i sie dziwisz ze ciagle ci printuje....
Wywal print_r poza pętlę
Randallmaster
Super działa smile.gif No i dodałem sortowanie alfabetyczne smile.gif

  1. <?php
  2. $obecny_kat = './';
  3. $kat = opendir($obecny_kat);
  4. $tab = array();
  5. while ($plik = readdir($kat))
  6. {
  7. if ($plik != '.' && $plik != '..' && is_dir($obecny_kat.$plik))
  8. {
  9. $tab[] = $plik;
  10. }
  11. }
  12. sort($tab);
  13. foreach ($tab as $key => $val) {
  14. echo $val ."\n";
  15. }
  16. ?>
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.