Reputation: 3
Related to this post: "PHP list all files in directory" , specifically the code displayed by "Apr 19 '12 at 12:24 " Kiko"
I was wondering if anyone can suggest how to determine the folder path to the file itself: i.e.
$html .= "<li><span class='file'><a href='???' target='_blank'>". $eachDirectory ."</a></span></li>";
S I can wrap an HREF around it so it. The functions are recursive so I'm not sure at which stage I can determine the path of the file. Anyone have a way to do this? Thanks!
Upvotes: 0
Views: 1945
Reputation: 4484
I've looked at the referenced code and I have modified it to suite your needs. Replace ONLY the createTree function with this and try it
function createTree($directory,$parent = '')
{
$html = "<ul>";
foreach($directory as $keyDirectory => $eachDirectory)
{
if(is_array($eachDirectory))
{
$html .= "<li class='closed'><span class='folder'>" . $keyDirectory . "</span>";
$html .= createTree($eachDirectory,$keyDirectory);
$html .= "</li>";
}
else
{
$origin = 'imgs';
if(trim($parent) !== ''){
$path = $origin . '/' . $parent . "/" .$eachDirectory;
}else{
$path = $origin . '/' . $eachDirectory;
}
$html .= "<li><span class='file'><a href='" . $path . "' target='_blank'>". $eachDirectory ."</a></span></li>";
}
}
$html .= "</ul>";
return $html;
}
You will notice that I've added a new argument item to the argument list of that function called $parent. This is used to carry the folder name of the parent folder of the item that will be linked. The folder name is then appended to the $origin variable (which is the name of the folder you traversed using the getFolderTree function , in my case it's 'imgs'.
There is an if-else statement that checks if the $parent is empty, it's pretty self explanatory from there. If you want clarification please ask.
NOTE 1: You need to replace the $origin value to the name of the folder at the root to get full paths
NOTE 2: You need to replace the forwardslash (/) to that of your system e.g. for *NIX it's a backslash so for PHP you need to use a double-backslash when working inside of strings but if you're on Windows my edit will work fine
Upvotes: 1