ten einde raad
zit al uren mn hoofd te breken over een simpel probleem :
probeer een programmaatje te maken dat een bepaalde folder inleest en van elke 'entry' in deze folder weergeeft of dit op zijn beurt een 'file' of een 'folder' is.
Mijn directorystructuur is de volgende :
een beginfolder met daarin enkele gewone bestanden en enkele nieuwe folders. Als ik het programma loslaat op deze directory dan herkent hij alles zoals het moet. Als ik dan hetzelfde programma laat lopen in een van de subfolders in mijn beginfolder (die op hun beurt ook files en folders bevatten), dan werkt het niet meer. Dan geeft hij zowel files als folders aan als zijnde een file?? Maw hij ziet plots alles als zijnde een file, zelf als zitten er terug nieuwe folders in de subdirectory...
heeft er iemand een idee hoe dit kan komen?
hier de code :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$root='hierin zit de url naar de te onderzoeken directory';
function checkdir($direct)
{
if (is_dir($direct)==true) return true;
else return false;
}
$dh = @opendir("$root");
while (($content = readdir($dh)) !== false)
{
if (checkdir($content)==true)
{
if ($content!=="." && $content!=="..") echo "folder found : $content <br \>";
}
elseif (checkdir($content)==false) echo "file found : $content <br \>";
}
@closedir($dh);
?>
$root='hierin zit de url naar de te onderzoeken directory';
function checkdir($direct)
{
if (is_dir($direct)==true) return true;
else return false;
}
$dh = @opendir("$root");
while (($content = readdir($dh)) !== false)
{
if (checkdir($content)==true)
{
if ($content!=="." && $content!=="..") echo "folder found : $content <br \>";
}
elseif (checkdir($content)==false) echo "file found : $content <br \>";
}
@closedir($dh);
?>
Ik begrijp dit echt niet... heb het al op 1000 verschillende manieren geprobeerd, met altijd hetzelfde probleem....
Kan korter:
if ( is_dir($direct) )
Bovendien, een functie van maar 1 regel, niet echt nuttig, zet die regel dan gewoon in de while-lust.
if (checkdir($content)==true)
Zelfde verhaal:
if (checkdir($content) )
Ondertussen heb ik een toevellige ontdekking gedaan die mss licht kan brengen op de zaak :)
als ik dit programma opsla op dezelfde plaats als waar $root naar verwijst, dan werkt het ok, als ik dit programma bv zet in een folder lager, maar de $root blijft wijzen naar dezelfde folder als daarvoor, dan ziet hij alles als file.
ja ik weet het maat ik had dit gewoon effe gedaan om zeker te zijn dat ik nergens een logische fout gemaakt had. Nu roep ik altijd dezelfde functie op dus kan ik zeker zijn dat het geen logicafout is..
Kortom, een overbodige stap, die juist de kans op logicafouten vergroot.
is_dir($root.$content) ipv
is_dir($content)
tja...