Toon posts:

[php] Bestanden in map tellen

Pagina: 1
Acties:

Onderwerpen


  • scartsjer
  • Registratie: februari 2007
  • Laatst online: 28-03-2018
ik ben bezig met een soort foto album script voor mijn portfolio,

nu stuit ik op een probleem.

op mijn offline test webserver werkt de volgende regel wel:
PHP:
1
2
$dir = "./".$folder."/mini/*"; 
$count = count(glob("$dir"));


echter heeft mijn webhosting een ouder type php op hun server staan hierdoor werkt de count(glob()) niet....

nu probeer ik het aantal bestanden te tellen op een andere manier:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$dir= "./".$folder."/mini/";
function countFiles($dir){  
    $files = array();  
    $directory = opendir($dir);  
    while($item = readdir($directory)){  
    // We filter the elements that we don't want to appear ".", ".." and ".svn"  
         if(($item != ".") && ($item != "..") && ($item != ".svn") ){  
              $files[] = $item;  
         }  
    }  
    $numFiles = count($files);  
    print $numFiles;  
}


echter dit leverd zowel op de offline test server als de webhosting geen resultaten op... wat gaat hier mis??

alvast erg bedankt voor reactie's

  • scartsjer
  • Registratie: februari 2007
  • Laatst online: 28-03-2018
kaesve schreef op dinsdag 19 oktober 2010 @ 20:48:
volgens mij is dit een geval van het wiel opnieuw uitvinden. misschien werkt dit:

PHP:
1
$count = count(scandir($dir));
fuuuu dat ik daar niet eerder aan had gedacht.
enig nadeel tenopzichte van de glob functie is dat de scandir hoe dan ook 2 extra bestanden mee telt ...? maargoed dat is snel opgelost.

ik heb nu het volgende gedaan:
PHP:
1
2
3
4
                $dir = "./".$folder."/mini/";
                $count = count(scandir("$dir"));
                $count = $count - 2;
                if ($count > '0') {


TNX !!!

[Voor 4% gewijzigd door scartsjer op 19-10-2010 21:04]


  • scartsjer
  • Registratie: februari 2007
  • Laatst online: 28-03-2018
robbert schreef op dinsdag 19 oktober 2010 @ 21:05:
[...]

glob telt hidden files niet mee, jij nu wel. Het volgende is mooier en duidelijker IMHO.
PHP:
1
2
3
4
$count = count(array_filter(
  scandir($dir), 
  create_function('$f', 'return substr($f, 0, 1) != ".";')
));

Of het volgende indien je directories ook niet mee wil tellen:
PHP:
1
2
3
4
$count = count(array_filter(
  scandir($dir), 
  create_function('$f', 'return is_file($f) && substr($f, 0, 1) != ".";')
));


[...]

Je vergelijkt hier een int met een string...
Desondanks gaat dit wel goed in PHP gezien '0' naar 0 gecast wordt. Maar dit soort dingen zijn natuurlijk erg onsmakelijk.
Dank je dit is inderdaad de nettere manier.

echter de code die ook de mappen niet mee moet tellen functioneert niet. lijkt er op dat mijn servers de is_file() functie niet leuk vinden ... heb ik al vaker last van gehad...

Het nadeel van snel willen programmeren als je het al een lange tijd niet hebt gedaan is dat er inderdaad schoonheid's foutjes in komen te zitten, heb het aangepast.
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee