[ LaMpiR @ 04.03.2004. 17:48 ] @
DA li je moguce da skripta prebroji fajlove u folderu na hostu npr ako je folder scripts da prebroji koliko skripti ima u tom folderu i da ispise npr Script in Archive: 57 itd...?
[ NikolaVeber @ 04.03.2004. 18:07 ] @
Code:

$directory = opendir("./");
  while( $file = readdir( $directory ) ){
  $file_array[] = $file;
}
echo "Broj fajlova u direktorijumu: ".count($file_array);


To bi trebalo da radi. Ne znam da li ima neka bolja metoda za isto.
[ _owl_ @ 04.03.2004. 20:30 ] @
U kodu koji si dao postoji vise greska koje uzrokuju
prijavljivanje pogresnog broja fajlova u direktorijumu.
Ne bi bilo lose da se pogleda www.php.net/readdir
Ukratko readdir vraca sve fajlove i direktorijume koji se
nalaze u trazenom direktorijumu ukljucujuci . i ..
Testiranje povratne vrednosti readdir bi trebao da vrsis
na sledeci nacin (kao sto je napisano u primeru za ovu
funkciju)
Code:

   $handle = opendir('/path/to/files');
   /* This is the correct way to loop over the directory. */
   while (false !== ($file = readdir($handle))) { 
       echo "$file\n";
   }

   /* This is the WRONG way to loop over the directory. */
   while ($file = readdir($handle)) { 
       echo "$file\n";
   }

[ NikolaVeber @ 04.03.2004. 21:00 ] @
Ok, pardon. Ja sam to koristio samo sa proverom ekstenzije, tako da sam dobijao dobre rezultate...
[ noviKorisnik @ 05.03.2004. 07:23 ] @
Code:
$dirname = 'scripts/';
$numoffiles = 0;
$dir = opendir ($dirname);
while ($item = readdir ($dir))
  if (filetype ("$dirname$item") == 'file')
   $numoffiles++;
closedir ($dir);
echo "Script in Archive: $numoffiles";



@_owl_
Nije mi jasno zbog čega ta napomena u citiranom kodu o ispravnom načinu zadavanja petlje za čitanje stavki iz direktorijuma - u smislu - ne vidim primer gde bi drugi (WRONG) način dao bilo šta neispravno.

Ovakvu konstrukciju video sam i na drugim mestima u Manualu, ali ne i dosledno - recimo stoji

while ($row = mysql_fetch_assoc ($result)) {...

umesto

while (false !== ($row = mysql_fetch_assoc ($result))) {...
[ Dejan Krstic @ 05.03.2004. 10:18 ] @
Svi ste vi rekli sta treba a sta ne treba a niko coveku da da ispravan source :)

Code:

$brojac = 0;
$bytes = 0;
$dh = opendir($root_dir."/".$dir);
while (($file = readdir($dh)) != false)
{
    if (($file == ".") or ($file == "..")) continue;
    $brojac++;
    $bytes += filesize($root_dir."/".$dir."/".$file);
}
echo "Ukupno fajlova: ".$brojac."<br>";
echo "Ukupno kb: ".round($bajtova / 1024, 1);


[ noviKorisnik @ 05.03.2004. 10:32 ] @
Dejane, ako postoji neki poddirektorijum, $brojac ima malo da laže, zar ne?

Drugo - šta je neispravno u source-u koji sam objavio?
[ afwt @ 05.03.2004. 11:21 ] @
Napravio sam par rekurzivnih funkcija koje broje velicine fajlova (extenzije su parametar funkcije), broj linija koda, kao i broj fajlova. Ako ti treba, javi na PM.
[ Dejan Krstic @ 05.03.2004. 14:24 ] @
Citat:
noviKorisnik:
Dejane, ako postoji neki poddirektorijum, $brojac ima malo da laže, zar ne?


Da, tacno. Uradjen je copy/paste iz jedne moje skripte i samo sam par sitnica promenio/dodao a kod mene se podrazumeva da nema direktorijuma tako da to ni ne proveravam.

Citat:
Drugo - šta je neispravno u source-u koji sam objavio?


Code:

while ($item = readdir ($dir))


Nisam siguran kako ce petlja da se ponasa. A i u php manualu, cini mi se, kaze da ne treba tako da se ide kroz direktorijum (ili mozda cak i da ne moze tako, nisam siguran).
[ noviKorisnik @ 05.03.2004. 14:51 ] @
readdir vraća string - ime stavke iz direktorijuma. Postoji mogućnost da petlja pukne ranije ukoliko je ime neke stavke prazan string, mada trenutno ne mogu da smislim da neki fajl ili poddirektorijum ima prazno ime...

Zato mi i nije jasan komentar u Manualu o definiciji ispravnog i neispravnog uslova petlje.

...

Najsmešnije mi je što u istom parčetu koda u Manualu stoji i sledeće
Code:
// Note that !== did not exist until 4.0.0-RC2
?
[ _owl_ @ 05.03.2004. 23:40 ] @
Pa ne moze da vrati prazan string ali moze da vrati "0" (kao string) ali posto operator == ne vodi racuna o tipu taj string se prebacuje u integer a onda se
ceo izraz sracunava u FALSE i petlja se prekida. U slucaju da se kontrolise koji
se fajlovi nalaze u direktorijumu iz koga se cita kod koji ne koristi === (ili !==)
bi najverovatnije radio bez problema.
Ceo problem postoji posto PHP ne vodi racuna o tipa pa funkcije mogu da vracaju
podatke razlicitih tipova, u ovom slucaju stringove i FALSE (boolean).
[ noviKorisnik @ 06.03.2004. 18:54 ] @
Bravo Majstore!
'0' == 0 == false i puca...
Treba voditi računa o takvim detaljima, nejednom mi se desilo da dobijam pogrešan output zbog slične stvari i umesto da krenem sa striktnom proverom... - evo krećem odsad pa nadalje:
Code:
$dirname = 'scripts/';
$numoffiles = 0;
$dir = opendir ($dirname);
while (false !== ($item = readdir ($dir)))
  if (filetype ("$dirname$item") == 'file')
   $numoffiles++;
closedir ($dir);
echo "Script in Archive: $numoffiles";