Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] system plikow - problemy z katalogami :/
Forum PHP.pl > Forum > Przedszkole
tojakw
Helo,
mam kilka problemow z systemem plikow (a raczej katalgow) w php :/


1.

Jak sprawdzic, jakie katalogi znajduja sie 'jakims' katalogu? Mam tak ulozone katalogi:
Kod
-> fotoalbum (katalog)
    -> main.php (skrypt)
    -> foto (katalog)
        -> karol (katalog)
            -> ja.jpg (grafika)
        -> agata (katalog)
        -> basia (katalog)

I chcialbym sprawdzic jakie katalogi znajduja sie w katalogu -foto-, wiec napisalem cos takiego
  1. <?php
  2. //main.php
  3. function menu($sciezka){
  4.  
  5. if (!($dp = opendir($sciezka))) die (&#092;"Blad\");
  6. while($file = readdir($dp)) {
  7. if(is_dir($file) && $file != '.' && $file != '..') 
  8.  echo $file;
  9. }
  10. }
  11.  
  12. $sciezka = './foto/'; 
  13. menu ($sciezka);
  14. ?>

I tu nie dziala funkcja is_dir() :/ tj. nie wyswietla katalogu.
Dlaczego?


2.

Czy mozna jakos wyciagnac date utworzenia katalogu?
  1. <?
  2. echo &#092;"data /<br>\".date('j F Y', filemtime($sciezka)); 
  3. ?>

Ten kody nie pokazuje daty utworzenia katalou, tylko date najmlodszego "ostatnio uzywanego" pliku w tym katalogu. W manualu nie znalazlem zadnej funkcji, ale moze ktos bedzie wiedzial winksmiley.jpg


3.

  1. <?
  2. function info ($sciezka){
  3.  
  4. $wielkosci = array();
  5.  
  6. if (!($dp = opendir($sciezka))) die (&#092;"Blad\");
  7. while($file = readdir($dp)) {
  8. if($file != '.' && $file != '..')
  9. $ilosc++;
  10. $wielkosci[] = filesize($file); //linia 25
  11. }
  12.  
  13.  
  14. echo &#092;"album / \".basename($sciezka).\"<br>\";
  15. //echo \"data /<br>\".date('j F Y', filemtime($sciezka));
  16. echo &#092;"ilosc zdjec / \".$ilosc.\"<br/>\";
  17. //echo \"rozmiar / \".disk_total_space($sciezka);
  18.  
  19. //is_array($wielkosci);
  20. }
  21.  
  22. $sciezka = './foto/karol';
  23. info($sciezka);
  24. ?>


Jak obliczyc rozmiar plikow w katalogu? Myslalem, ze za pomoca filesize() zapisze wielkosc do tablicy, i potem zsumuje, ale pokazuja sie takie bledy:
Kod
Warning: filesize(): Stat failed for [nazwa pliku] (errno=2 - No such file or directory) in C:\(...)pokaz.php on line 25


Jest tez taka funkcja disk_total_space ( string katalog), probowalem jej uzyc, ale ona nic nie zwraca winksmiley.jpg
Cytat(manual)
Podając łańcuch zawierający katalog, funkcja ta zwróci całkowity rozmiar (w bajtach) w odpowiadającym mu systemie plików lub partycji dysku.

Co to jest ten "łańcuch zawierający katalog"? Nalezy uzywac jakis dirname/basename/itd?

Pozdrawiam, i dziekuje za pomoc snitch.gif

(to forum, to moja ostatnia deska ratunku winksmiley.jpg

PS. http://forum.php.pl/index.php?showtopic=24021 nie jestem sam winksmiley.jpg
mike
1.
Skopiowałem idealnie to co napisałes i zadziałało. Więc nie wiem o co Ci chodzi. Chociaż nie trzeba kopiować żeby powiedzieć że kod jest w pożądku.

3.
  1. <?php 
  2. // ...
  3. while($file = readdir($dp)) {
  4. if($file != '.' && $file != '..')
  5. $ilosc++;
  6. $wielkosci[] = filesize($file); //linia 25
  7. }
  8. // ...
  9. ?>

Zjadłeś klamry. Ujmij linię 6,7 u mnie powyżej a 10,11 u Ciebie i zadziała. Bo teraz podbijasz ilośc jak $fie jest różne od '.' i '..' ale filesize używasz dla każdego bo w if'a łapie się tylko pierwsza instrukcja.
tojakw
Cytat
1.
Skopiowałem idealnie to co napisałes i zadziałało. Więc nie wiem o co Ci chodzi. Chociaż nie trzeba kopiować żeby powiedzieć że kod jest w pożądku.


hmm... u mnie nie dziala ;/ mam php w wersji 4.3.9RC1 pod Windows
@mike_mech: wyswietla katalogi: karol, agata, basia?
To moze ktos trzeci sprawdzi, czy ten kod chodzi snitch.gif no i da znac winksmiley.jpg

3.
  1. <?
  2. if (!($dp = opendir($sciezka))) die (&#092;"Blad\");
  3. while($file = readdir($dp)) {
  4. if($file != '.' && $file != '..'){
  5. $ilosc++;
  6. $wielkosci[] = filesize($file);
  7. }
  8. }
  9. ?>

Fakt, zapomnialem o klamrach, ale dalej nie dzierga ;/ wciaz pokazuje te same ostrzezenia sad.gif
mike
1.
Cytat
-> fotoalbum (katalog)
  -> main.php (skrypt)
  -> ...
  ...

  1. <?php
  2. $sciezka = './foto/';
  3. ?>

Wniosek : fotoalbum != foto
tojakw
to jaka mam podac sciezke?

pozdro
mike
Cytat(mike_mech @ 2004-12-18 21:23:19)
1.
Cytat
-> fotoalbum (katalog)
   -> main.php (skrypt)
   -> ...
   ...

  1. <?php
  2. $sciezka = './foto/';
  3. ?>

Wniosek : fotoalbum != foto

OJ, przepraszam, nie doczytałem.
Ale faktem jest to że jak zrobię tak :
  1. <?php
  2.  
  3. $sciezka = './';
  4.  
  5. if ( ! ( $dp = opendir( $sciezka ) ) ) die ( &#092;"Blad\" );
  6. {
  7. while( $file = readdir( $dp ) )
  8. {
  9. if( $file != '.' && $file != '..' )
  10. {
  11. $ilosc++;
  12. $wielkosci[ $file ] = filesize( $file );
  13. }
  14. }
  15. }
  16.  
  17.  
  18. echo '<pre>'
  19. print_r( $wielkosci );
  20. echo '</pre>';
  21.  
  22. ?>

To działa. I wszystki skrypty, które podałeś działają. Więc nie wiem w czy problem. Podaj może może jakie błędy wywala php ( o ile wywala ).
tojakw
3.

Oka, skrypt dziala snitch.gif ale mam jeszcze pytanie:
Kod
-> fotoalbum (katalog)
   -> main.php (skrypt)
   -> foto (katalog)
       -> karol (katalog)
           -> php5.jpg (grafika)
           -> Pict0093.jpg (grafika)
       -> agata (katalog)
       -> basia (katalog)

Ten skrypt zapisalem w pliku main.php i dziala, wszystko jest jak ma byc (pokazuj main.php i foto) biggrin.gif
Ale jak zrobic, zeby policzyl rozmiar plikow w foto/karol? Zmiana sciezki na:
Kod
$sciezka = './foto/karol';

zwraca
Cytat
Warning: filesize(): Stat failed for php5.jpg (errno=2 - No such file or directory) in C:\Program Files\Apache Group\Apache2\htdocs\fotoalbum\main.php on line 51

Warning: filesize(): Stat failed for Pict0093.JPG (errno=2 - No such file or directory) in C:\Program Files\Apache Group\Apache2\htdocs\fotoalbum\main.php on line 51


Array
(
    [php5.jpg] =>
    [Pict0093.JPG] =>
)

;/

1.

Cytat
Cytat

1.
Skopiowałem idealnie to co napisałes i zadziałało. Więc nie wiem o co Ci chodzi. Chociaż nie trzeba kopiować żeby powiedzieć że kod jest w pożądku.


hmm... u mnie nie dziala ;/ mam php w wersji 4.3.9RC1 pod Windows
@mike_mech: wyswietla katalogi: karol, agata, basia?
To moze ktos trzeci sprawdzi, czy ten kod chodzi snitch.gif no i da znac winksmiley.jpg


No nie dziala ;/ to moze jakas trzecia osoba sprawdzi, moze ja mam cos zwalone, a kod jest poprawny...
mike
Dziwna sprawa, fakltycznie wywala błedy w stylu :
Cytat
Warning: filesize(): Stat failed for Pict0093.JPG (errno=2 - No such file or directory) in C:\Program Files\Apache Group\Apache2\htdocs\fotoalbum\main.php on line 51

Nie wiem, poddaję się sad.gif
tojakw
Kurcze, chcialem sobie napisac prosta galerie i teraz klapa :/

Co do drugiego problemu, to nie ma sprawy, w jakims pliku zapisze sobie daty kiedy tworzylem foldery.

Ale zostaja jeszcze dwa problemy, konieczcie musze je rozwiazac :/ w zyciu bym nie przypuszczal (dopiero zaczynam php i w ogole jakie takie "programowanie") ze takie drobnostki moga zniechecac do dalszej pracy :/ I nie wierze, ze nikt nie wie jak policzyc rozmiar katalou i jak sprawdzic jakie foldery znajduja sie w folderze... przeciez to chyba nie jest jakis kosmos?

Jezeli ktos wie, to prosze o pomoc.
A mike_mech zasluzyl na gratulacje winksmiley.jpg pozdrawiam smile.gif
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.