[PHP] Directory's doorzoeken op een bepaald bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 20:04
Ik wil op een pagina weergeven welke modules beschikbaar zijn.
Deze modules staan per map onder de map 'Modules'. In elke map zit het bestand details.php waar ik een aantal variabelen uit haal.
Het probleem is nu dat ik maar 1 map te zien krijg.

Mappenstructuur:

Modules
|
L forum
|.......|
|.......L details.php
|
L gastenboek
........|
........L details.php


Ik krijg nu alleen maar de spullen van het gastenboek (dus de laatste map) te zien.
Het script heb ik oorspronkelijk gevonden hier op GoT, maar ik weet niet meer van wie.

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
<?
  $dir_modules = "../modules/";

  $handle = opendir($dir_modules); 

  while(false!==($file = readdir($handle))) 
  { 
    echo($file);
    echo('<br>');
    if($file != "." && $file != "..")
    {
      if(is_dir($dir_modules.$file)) 
      { 
        $newdir = $dir_modules.$file.'/';
        $handle = opendir($newdir);
        while(false!==($newfile = readdir($handle))) 
        {
          if($newfile !== "." && $newfile !== "..")
          {
            if($newfile == 'details.php')
            {
              include($newdir.$newfile);
              ?>
              <tr>
                <td><? echo($title); ?></td>
                <td><? echo($version); ?></td>
                <td><? echo($date); ?></td>
                <td align="center"><a href="<? echo($newdir.'install.php'); ?>" class="bold">installeren</a></td>
              </tr>
              <?
            }
          }
        }
      }
    }
  }
?>


Iemand een idee waar ik de mist in ga? Waarschijnlijk is de loop verkeerd, maar ik kan het niet vinden.

[ Voor 12% gewijzigd door MuddyMagical op 22-03-2006 21:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

De oplossing is om het recursief te doen.
je kunt dus een functie maken die zich zelf aanroept.

misschien kan je wat beter uitleggen wat het doel is. want echt handig lijkt mij dit plan niet....

Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 20:04
Het doel is om op een pagina aan te geven welke modules er in de map "modules" staan.
Elke module bestaat in een map met daarin details.php en install.php
Details.php bevat een aantal gegevens die op de pagina worden weergegeven en install.php installeert de module.

Ik moet eerlijk zeggen dat ik met functies wel wat kennis heb, maar recursief? :?

Acties:
  • 0 Henk 'm!

Verwijderd

recursief kan dus met directories
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
print_r( readModuleDir("/home/foo/"));

function readModuleDir($dir) {
    $handle = opendir($dir); 

    while(false!==($file = readdir($handle))) {
          if(is_dir($file)) {
                 readModuleDir($file);
          } elseif(....) {


          }
    }
}
?>

Weet niet of dit het duidelijk maakt.
maar een functie kan zichzelf aanspreken.

[ Voor 12% gewijzigd door Verwijderd op 22-03-2006 22:26 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat heeft dit met tools te maken? :o Dit is gewoon een programmeerprobleem? :)

DTE>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Glob() is daar erg mooi voor :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function globr($dir, $pattern)
{
    $dir = escapeshellcmd($dir);
    $files = glob("{$dir}/{$pattern}");
    if(!$files) $files = array(); 
    $dirs = glob("{$dir}/*", GLOB_ONLYDIR);
    if(!$dirs) $dirs = array();
    foreach ($dirs as $subdir)
    {
        $subfiles = $globr($subdir, $pattern);
        $files = array_merge($files, $subfiles);
    }
    return $files;
}
$filelist = globr('.modules/', 'details.php');

dit zoekt recursief, zo ver je wil een directory structuur door op php bestanden :)

[ Voor 19% gewijzigd door SchizoDuckie op 23-03-2006 00:54 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

De SPL DirectoryIterator of DirectoryTree, of misschien DirectoryTreeIterator class kan hier waarschijnlijk goed van pas komen :) .

DM!

Pagina: 1