Ben Whitehead wrote:
Having looked at it, it seems to be along the lines of what I was thinking
of... I would be very grateful if you could post the code, since I do think
it will be very useful. The main difference I was thinking of was to have a
menu in the form of a page of links, rather than a drop-down menu, but
having seen that, I would much prefer the drop-down menu approach!!!

Thanks very much, Ben.

Sorry I didn't get to this in a while -- had to fix my filters :)


Anyhow, the functions that I used to create my drop down box :

function getSubDir($rootdirpath) {
        if ($dir = @opendir($rootdirpath))
         {
           $array[] = $rootdirpath;
           while (($file = readdir($dir)) !== false)
           {
              if (is_dir($rootdirpath."/".$file)
                  && $file != "." && $file != "..")
              {
                  $array = array_merge($array,getSubDir($rootdirpath."/".$file));
                }
           }
           closedir($dir);
         }
        return $array;
}
        
function getFiles($dirname) {
        
         $handle=opendir($dirname);
         while ($file = readdir($handle))
         {
                if($file=='.'||$file=='..')
                        continue;
                else
                        $result_array[]=$file;
         }
         closedir($handle);
         return $result_array;
 }

The first function returns all the subdirs in a directory (given as $rootdirpath).

The second functions returns an array of all files in a directory.

Simply combine these two functions to get a listing of all files in subdirectories :

$subdirs = getSubDir("/path/to/main"); //no trailing /
array_shift($subdirs); //gets rid of the parent dir
$count = 0;
while (list(,$val) = each($subdirs)) {
$files[substr(strrchr($val,"/"),1,strlen(strrchr($val,"/")))] = getFiles($val);
$count += count(getFiles($val));
}


This while loop gets a list of all the files and counts the total number of files in the subdirs. The list of files is in an array called $files.

Now, to build the drop down :

 while(list($key,$val) = each($files)) {
        echo "<option value=\"NULL\" >Section $key :</option>\n";
        while(list(,$name) = each ($val))
         {
                echo "<option value=\"$key/$name\" > -=> ";
                echo substr($name,0,strlen($name)-4);
                echo "</option>\n";
          }
         echo "<option value=\"NULL\" ></option>\n"; // space
}

I hope this helps you out. Let me know if you can't understand anything :)

--
Burhan Khalid
phplist[at]meidomus[dot]com




-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to