[php] recursief dir inlezen

Pagina: 1
Acties:

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

Topicstarter
Hoi,


Ja omdat de search nu werkte heb ik ff dit forum afgezocht maar nog zeker niet gevonden wat ik zocht, meeste dingen die al geschreven zijn gaan amper 1 map diep of ik kwam uit op reactie systemen ism mysql db's :)

ik heb al
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
function newdir($file){

  $tmphandle = opendir($file);

    while (false !== ($file = readdir($tmphandle))) {

         file_or_dir($file);

    }

  closedir($tmphandle);

}


function file_or_dir($file){

    if ($file != "." &amp;&amp; $file != "..") {

         if (is_dir("$file") == 1) {

           echo "Dir: <b>$file</b><br>\n";

           newdir($file);

         } else {

           echo "File: $file<br>\n";

         }

    }

}


$handle = opendir('.');
while (false !== ($file = readdir($handle))) {

  file_or_dir($file);

}
closedir($handle);
?>

nu is er een erg logische fout nl dat de 2de subdir als file word aangezien door de is_dir() aangezien die controleert of dirnaam in de root dir een dir is maar eigenlijk staat die dirnaam in de 1ste subdir dus er komt file: voor te staan.

Nu heb ik bezig om hier makkelijk een oplossing voor te zoeken, maar k'heb nog niet gevonden, misschien is het omdat ik er al ff mee bezig ben en het te ver zoek of ik ben meer vermoeid dan ik dacht :)

If it ain't broken it doesn't have enough features


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
voici:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
$level = -1;
    
function newdir($file)
{
    global $level;
    
    $tmphandle = opendir($file);
    chdir($file);    
    $level++;

    while (false !== ($file = readdir($tmphandle)))
        file_or_dir($file);
    
    $level--;
    chdir("..");
    closedir($tmphandle);
}

function file_or_dir($file)
{
    if ($file != "." &amp;&amp; $file != "..")
    {
        printSpaces();
        if (is_dir($file)) 
        {
            echo "Dir: <b>$file</b>\n";
            newdir($file);
        }
        else 
            echo "File: $file\n";
    }
}

function printSpaces()
{
    global $level;
    
    for ($i = 0; $i < $level; $i++)
        echo "----";
}

newdir(".");
?>

(kortom: je moet chdir toevoegen :))

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Kun je mij even uitleggen wat dit script nu exact doet :?
Geldt vooral voor wat Apache wil.

  • tomato
  • Registratie: November 1999
  • Niet online
Op zaterdag 27 oktober 2001 08:02 schreef dennisdotcom het volgende:
Kun je mij even uitleggen wat dit script nu exact doet :?
Geldt vooral voor wat Apache wil.
Hij wil uit een bepaalde directory alle bestanden laten zien en dat dan ook weer voor iedere subdirectory en voor iedere subdirectory daarvan, etc.

Zo, nu eerst :Z

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Op zaterdag 27 oktober 2001 08:10 schreef tomato het volgende:
Hij wil uit een bepaalde directory alle bestanden laten zien en dat dan ook weer voor iedere subdirectory en voor iedere subdirectory daarvan, etc.
Zie je, toch wel dus :)
Dacht ik al :)

Slaap lekker trouwens !

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

Topicstarter
Bedankt :)

k'had gisteren nog net na deze thread nog net enkele voorbeelden gelezen bij de comments die ze hier gepost hadden: http://www.php.net/manual/en/function.readdir.php
daar stonden ook enkele voorbeelden met chdir


dus sorry voor deze rtfm vraag :)

If it ain't broken it doesn't have enough features


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

Topicstarter
Het resultaat was toen nog niet helemaal bruikbaar voor mij dus k'heb het nog ff aangepast en wou dit hier nog ff posten aangezien er iemand misschien dit ooit wel eens zou komen opzoeken met de search ofzo :)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?
$level = -1;
// eerste deel van de string afkappen zodat we de maps relatief tot vanaf deze file
$start =  strlen(getcwd());

function newdir($file)
{
    global $level;

    $tmphandle = opendir($file);
    chdir($file);
    $level++;

    while (false !== ($file = readdir($tmphandle)))
        file_or_dir($file);

    $level--;
    chdir("..");
    closedir($tmphandle);
}

function file_or_dir($file)
{
    global $start;

    if ($file != "." &amp;&amp; $file != "..")
    {

        $dir = getcwd();
        $dir = substr("$dir", $start);

        if (is_dir($file))
        {
            echo "Dir: <b>$dir/$file</b><br>\n";
            newdir($file);
        }
        else
            echo "File: $dir/<i>$file</i><br>\n";
    }
}

/*function printSpaces()
{
    global $level;

    for ($i = 0; $i < $level; $i++)
        echo "----";

}*/

newdir(".");
?>

Enjoy ;)

If it ain't broken it doesn't have enough features

Pagina: 1