Avatar billede whyme Nybegynder
19. juli 2004 - 14:17 Der er 6 kommentarer og
1 løsning

Mangler en funktion til at udskrive mapper som findes i dir.

Hej Eksperter,

Jeg står og skal bruge en funktion/class som kan følgende:

1. Finde alle undermapper i en given mappe
2. Generer en menu ud fra disse fundne mapper.

Det skal være muligt at kunne ændre mappe navnene som bliver udskrevet.

Så ledes at der ikke står i menuen: mappe_med_billeder

Hvis i forstår hvad jeg mener.

Håber det kan lade sig gøre, jeg ved bare ikke hvad jeg skal søge på, på google :)

På forhånd tak
Avatar billede whyme Nybegynder
20. juli 2004 - 01:55 #1
lukker
Avatar billede dejbjerg Nybegynder
21. juli 2004 - 08:42 #2
Måske kan det her bruges...

//////////////////////////////////////

//DIRECTORY-NAVIGATION-LINKS.PHP
/*
Do you have a website with a navigation system that follows its directory structure? If so, these functions can be just what you need. combined with my Absolute Include function, you can implement a navigation solution that requires very little maintenance.

directories() returns an array of directories: The one containing the script itself, and its parents. directory_navigation_links() calls directories() and uses the return value to create a navigation bar.
*/

<?
function directories()
        {
        $directory = $_SERVER["PHP_SELF"];
       
        $directories = array();
       
        $next_slash = 0;       
       
        do {//Creates an array with all the parent folders
            //of the file where this function is called.
            $next_slash = strpos($directory, "/", $next_slash);
       
            if($next_slash !== false)
              { 
              $next_slash++;                             
              $directories[count($directories)] = substr($directory, 0, $next_slash);
              }
                                                       
            } while($next_slash !== false);
       
        return($directories);
        }
       
//Uses the directories() function to create the links.
function directory_navigation_links()
        {
        $directories = directories();
       
        $links = "";
       
        for($index = 0; $index < count($directories); $index++)
            {
            //Handling the display is a little harder than the links themselves.
            $dir_name = substr($directories[$index], 0, strlen($directories[$index]) - 1);
                                   
            $dir_name = substr($dir_name, strrpos($dir_name, "/") + 1, strlen($dir_name) - 1);
           
            if($dir_name == "") $dir_name = "home";
           
            $links .= "<a href=\"" . $directories[$index] . "\">" . $dir_name . "</a>  ";
            }
           
        return($links);
        }       
?>


//////////////////////////////////////////

//  ABSOLUTE-INCLUDE.PHP
/*
A small but useful wrapper function for include(). It allows the same include statement to be used in all the files in a website, regardless of which folder they are located in.
This is handy for sites that are hosted on servers that have PHP open_basedir protection enabled. This tends to cause calls like include("/folder/file.inc"); to generate error messages.
*/

<?
function absolute_include($file)
        {
        /*
        $file is the file url relative to the root of your site.
        Yourdomain.com/folder/file.inc would be passed as
        "folder/file.inc"
        */
                 
        $folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");
       
        if($folder_depth == false)
            $folder_depth = 1;
                             
        include(str_repeat("../", $folder_depth - 1) . $file);       
        }
?>
Avatar billede whyme Nybegynder
21. juli 2004 - 19:45 #3
dejbjerg: det lyder hen af noget jeg har ledt efter, men den ser ikke ud til at virke når jeg sætter koden ind.

Kan du kort forklare hvordan det skal sættes rigtigt op?
- sikkert mig som roder rundt i noget forkert...

hvis det er det jeg skal bruge, opretter jeg et nyt spørgsmål du kan svare på ;)
Avatar billede dejbjerg Nybegynder
05. august 2004 - 13:54 #4
Sry, havde ikke set din kommentar :/

Det var bare noget klip jeg havde liggende til senere brug, så jeg har ikke rodet med det selv.

Men jeg går ud fra at du kalder det med noget ala:
echo directory_navigation_links();
Avatar billede whyme Nybegynder
05. august 2004 - 17:19 #5
dejbjerg: Den udskriver kun mapperne man er i. Hvis man er i domain.dk/produkter/ udskriver den: "Produkter" (altså en slags breadcrump funktion)

Den skulle helst udskrive mapperne som finder i/under mappen /produkter/
Avatar billede dejbjerg Nybegynder
06. august 2004 - 08:41 #6
Har ikke PHP på denneher maskine, så jeg kan ikke teste/rode, men jeg fandt et andet script, som måske kan bruges...til et eller andet

//example showing how to "index" the directory that the script resides in.
//also allows you to browse directorys within that directory.
//only allows people to browse your web directory and not your whole file system

<?php
unset($dir);
if(!empty($HTTP_GET_VARS['dir'])&&!strpos($HTTP_GET_VARS['dir'],'..')&&!strpos($HTTP_GET_VARS['dir'],'\.\.'))
{

    $dir=$HTTP_SERVER_VARS['DOCUMENT_ROOT'].'/'.$HTTP_GET_VARS['dir'];
    $d=&$HTTP_GET_VARS['dir'];
}
else
{
    $dir='.';
    $d='.';
}
clearstatcache();
if($a=@opendir($dir))
{
    $dir=htmlspecialchars($dir);
    $d=htmlspecialchars($d);
    while(false!==($b=readdir($a)))
    {
        if(ereg("^\.",$b))
            continue; // ignore hidden files
        echo (is_dir($b))?"<li> <a href=?dir=$d/$b>$b</a>":"<li> <a href=$d/$b>$b</a>";
    }
    closedir($a);
}
else
{
    echo 'unable to open directory';
}
?>
Avatar billede dejbjerg Nybegynder
06. august 2004 - 10:00 #7
Her er et til:

<?php
/**
    * array getFolder(string $path[, int $sort])
    *
    * Gets a list of files and returns them in a multidimensional array having the format
    *
    * $array['dir'][] = "directory";
    * $array['file'][] = "filename";
    *
    * $path is a string containing a valid path on the local filesystem
    * $sort is an integer with a value of 1 or 0, 1 sorts in descending order, 0 sorts in ascending.
    * $sort defaults to ascending order if omitted
    *
    **/
   
function getFolder($path, $sort = 0)
{
   
    // typecast our integer, to be on the safe side
    $sort = (int)$sort;
   
    // check to see if there was a trailing slash.  if no slash, add one
    if (substr($path, -1) != '/')
    {
        $path.='/';
    }
   
    // confirm that the path exists
    if (!file_exists($path))
    {
        die("$path does not exist");
    }
   
    // confirm that the path is readable
    elseif (!is_readable($path))
    {
        die("no permissions to view $path with this user");
    }
   
    // confirm that $path is a directory
    elseif(!is_dir($path))
    {
        die("$path is not a directory");
    }   
   
    $directory = array();
    $hp = opendir($path);

    // build a multidimensional array of files and folders
    while (false !== ($file = readdir($hp)))
    {
        if (($file!='..') && ($file!='.'))
        {
            if (is_dir($path.$file))
            {
                $directory['dir'][] = $file;
            }
            elseif (is_file($path.$file))
            {
                $directory['file'][] = $file;
            }
        }
    }
   
    switch($sort)
    {
        case 1:
            arsort($directory['dir']);
            arsort($directory['file']);
        break;
        default:
            asort($directory['dir']);
            asort($directory['file']);
        break;
    }
   
    reset($directory['dir']);
    reset($directory['file']);
   
    return $directory;
} // end function getFolder()

$files = getFolder('/path/to/your/files');

// IMPORRTANT NOTE:  A lot of people will be tempted to use foreach() here.  It's strongly
// suggested that you don't unless you need to modify the array while looping over it.
// The reason you shouldn't is that PHP will make a copy of the array needlessly to loop over.
// each() on it's own does not have that effect.

while (list($key, $val) = each($files['dir']))
{
    echo "[$val]<br>";
}

while (list($key, $val) = each($files['file']))
{
    echo '<a href="web/path/to/files/'.urlencode($val).'">'.$val.'</a><br>';
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester