Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kilka pytan do Was (katalogowanie)
problemik_mam
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


Witam

Jestem w trakcie robienia skryptu do katalogowania plików.
To, że jestem poczatkujący zmusza mnie do zapytania Was winksmiley.jpg

1. Jak zliczyć ilość katalogów i osobno plików w katalogu którym znajduje sie skrypt "/"??
2. Poprzez funkcję disk_total_space(); uzyskuje aktualny rozmiar katalogu w którym znajduje sie skrypt (w bajtach). Jak zrobic, aby skrypt zsumował tylko rozmiar plików znajdujacych się w katalogu w mb z dokladnoscia do 2 miejsc po przecinku?
3. Jak posortować wyswietlane pliki np wg nazw??

Z gory serdeczne DZIEKI temu, który mi pomoze.
Męczę się z tym juz tyle czasu, ze jeszcze trochę a powyrywam sobie wlosy z glowy (ktorych i tak mam malo smile.gif )

Pozdrawiam
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #2





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Ad. 1.
Polecam funkcję [manual:aaf2fd0149]readdir[/manual:aaf2fd0149], która przeczyta zawartość katalogu... A w szczególności 2 przykład.
Aby odróżnić plik od katalogu wystarczy do tego funkcja [manual:aaf2fd0149]is_file[/manual:aaf2fd0149] lub [manual:aaf2fd0149]is_dir[/manual:aaf2fd0149].
Ad. 2.
Do odczytywania rozmiarów plików przyda się funkcja [manual:aaf2fd0149]filesize[/manual:aaf2fd0149]... Potem suma.
Sformatować możesz za pomocą funkcji np. [manual:aaf2fd0149]printf[/manual:aaf2fd0149].
Ad. 3.
Ten problem możesz rozwiązać pobierając pliki (wspomnianą funkcją [manual:aaf2fd0149]readdir[/manual:aaf2fd0149]) do tablicy, a później tylko [manual:aaf2fd0149]sort[/manual:aaf2fd0149].

Popróbuj, a jeśli Ci się nie uda pokaż co Ci nie wychodzi.

Pozdrawiam


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


a moze moglibys jakies przyklady podac :oops: ?
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #4





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Hmm, pokaże Ci jak ma wyglądać podstawowy kod do przeczytania zawartości katalogu (z podziałem na pliki i katalogi):
[php:1:aeca3a415a]<?php
$dir = './';
$dirs = Array();
$files = Array();
if($handle = opendir($dir))
{
while(false !== ($file = readdir($handle)))
{
if($file != "." && $file != "..")
{
if( is_dir($file) )
{
$dirs[] = $file;
}
else
{
$files[] = $file;
}
}
}
closedir($handle);
}
print_r($dirs);
print_r($files);
?>[/php:1:aeca3a415a]
Reszta należy do Ciebie...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


co do 1 mojego pytania- > w takim razie nie wystarczy tylko zliczyc funkcja count() questionmark.gif
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #6





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Cytat
co do 1 mojego pytania- > w takim razie nie wystarczy tylko zliczyc funkcja count() questionmark.gif

Otóż to smile.gif


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


liczbe plików w danym katalogu zlicza mi ok, jednak przy próbie zliczenia ilosci katalogow count($dirs) zwraca zawsze 1
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #8





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


A ile masz katalogów?
Wogóle, którą masz wersję php?


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


katalogi mam 3
php Version 4.1.0
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #10





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


U mnie skrypt działa bez problemu...
Możliwe, że php w tej wersji miało buga, chociaż nic nie znalazłem.

Ale powiedz mi jeszcze co wypisują na ekran funkcje print_r()?
Czy listują całą zawartość katalogu?


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


funkcje pring_r() prawidlowo odczytuja katalogi i pliki katalogow mam 3 i tak samo zwraca je ta funkcja wiec nie wiem co jest winksmiley.jpg
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #12





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Spróbuj [manual:8bbf95cc01]sizeof[/manual:8bbf95cc01]...
Chociaż to alias count, ale przynajmniej zobaczymy jak sie zachowa...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


juz jest ok dziex, acha....jak w tym skrypcie wykluczyć pliki .php questionmark.gif tak zeby ich nie zliczalo ?
Go to the top of the page
+Quote Post
problemik_mam
post
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


aaa sorki glupie pytanie !! funkcja ereg() smile.gif ?
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #15





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Hmm, jest na to kilka sposobów...
Najprostrzy to użycie funkcji [manual:3075ef0c1e]glob[/manual:3075ef0c1e], jednak jest ona dostępna dopiero od wersji 4.3.0...
Zaproponuję tak:
[php:1:3075ef0c1e]<?php
// ...
if($file != "." && $file != ".." && !eregi("^(.*).php$", $file))
// ...
?>[/php:1:3075ef0c1e]


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #16





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


moze pomoglbys mi jeszcze jak zrobic ten skrypt, ktory poda mi w mb sume plikoof ? sad.gif
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #17





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Napewno sobie sam poradzisz...
Sugestia: stwórz jeszcze jedną tablicę...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
problemik_mam
post
Post #18





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.10.2003

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


Z wielka pomoca powstalo to, dla zainteresowanych smile.gif
[php:1:a2fd257bc1]<?php

$filesize = Array();
$dirs = Array();
$files = Array();
$dir = './';
if($katalog = opendir($dir))
{
while(false !== ($file = readdir($katalog)))
{
if($file != "." && $file != "..")
{
if( is_dir($file) )
{
$dirs[] = $file;
}
else
{
$filesize[] = filesize($file);
$files[] = $file;
}
}
}

closedir($katalog);
}
$suma = sprintf("%.2f", array_sum($filesize)/1048576);
$pliki=count($files);
$katalogi=count($dirs);
echo"Liczba katalogow: $katalogi<br>Liczba plikow: $pliki <br>Rozmiar plikow: $suma";
?>[/php:1:a2fd257bc1]
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 Aktualny czas: 20.08.2025 - 10:37