Solved

include foldername in the href links

Posted on 2013-11-18
5
321 Views
Last Modified: 2013-11-22
Using php, I want to list all the filenames in a folder as hyperlinks


folder
<a href="file1.wmv" target="_blank">file1.wmv</a>
<a href="file2.wmv" target="_blank">file2.wmv</a>
<a href="file3.wmv" target="_blank">file3.wmv</a>

<?php
$folder    = '.';
$files = scandir($folder);

foreach ($files as $file):
	printf("<p><a href='%s' target='_blank'>%s</p>",urlencode($file), $file);
endforeach;
?>

Open in new window



I want code that is outside the folder.
www/file.php
www/folder/file1.wmv
www/folder/file2.wmv
www/folder/file3.wmv


the problem is that the links are
www/file1.wmv
www/file2.wmv
www/file3.wmv

which do not contain the wmv files because the wmv files are in the folder

I want
www/folder/file1.wmv
www/folder/file2.wmv
www/folder/file3.wmv
0
Comment
Question by:rgb192
  • 2
  • 2
5 Comments
 
LVL 13

Expert Comment

by:duncanb7
ID: 39656866
Is it that what you want ?

<?php
$folder    = '.';
$files = scandir($folder);

foreach ($files as $file){
$file="www/folder/".$file;
	printf("<p><a href='%s' target='_blank'>%s</p>",urlencode($file), $file);
}
?>

Open in new window

0
 
LVL 13

Assisted Solution

by:duncanb7
duncanb7 earned 50 total points
ID: 39656887
you can use dirname(__FILE__) to display your existing full path name
and you change it around for your expect for $file

Hope it will help ;


<?php
chdir(dirname(__FILE__));
echo dirname(__FILE__)."==x=\n";
$folder    = '.';
$files = scandir($folder);

foreach ($files as $file){
$file=dirname(__FILE__)."/".$file;
	printf("<p><a href='%s' target='_blank'>%s</p>",urlencode($file), $file);
}
?>

Open in new window

0
 
LVL 109

Accepted Solution

by:
Ray Paseur earned 450 total points
ID: 39656950
Obviously I am not going to leave this on my server, but you can install it and test it for yourself.  A sensible design might collect the list of directories and create a table with radio buttons to facilitate the client choice of the directory.  HTH, ~Ray

<?php // RAY_temp_rgb192.php
error_reporting(E_ALL);


// http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28297125.html
// http://www.php.net/manual/en/class.directoryiterator.php#88459
// PUT THIS SCRIPT IN THE WEB ROOT DIRECTORY


clearstatcache();

// IF THERE IS A GET-METHOD REQUEST
$dir = !empty($_GET['dir']) ? $_GET['dir'] : NULL;

if ($dir)
{
    $arr = scandir($dir);
    $hed = '<h3>' . $dir . '</h3>' . PHP_EOL;
    $dir .= DIRECTORY_SEPARATOR;
}
else
{
    $arr = scandir(getcwd());
    $hed = '<h3>WEB ROOT</h3>' . PHP_EOL;
}

foreach ($arr as $file)
{
    if ($file ==  '.') continue;
    if ($file == '..') continue;
    $url = $dir . $file;

    // SEE http://php.net/manual/en/function.is-file.php#107403
    if (!is_dir($url))
    $links[] = '<a target="_blank" href="' . $url . '">' . $file . '</a>' . PHP_EOL;
}

// SHOW THE LINKS
echo $hed;
foreach ($links as $link)
{
    echo "<br>$link";
}

// A FORM TO GET THE NAME OF THE DIRECTORY
$form = <<<EOD
<form>
Directory: <input name="dir" />
</form>
EOD;

echo $form;

Open in new window

0
 

Author Closing Comment

by:rgb192
ID: 39669039
Duncanb7 had slashes that change direction in windows

C:\Users\Acer\Documents\NuSphere PhpED\Projects/array.php

and not proper href in linux

/home/content/27/89397/html/folder/001.Welcome.f4v

But I can not find errors in Ray's code

Thanks both.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 39669053
Instead of using slashes, you want to use the context-aware predefined PHP constant:

DIRECTORY_SEPARATOR

If you find that you don't want to type that much when you're doing a lot of file system work, you can do something like this:

define('DS', DIRECTORY_SEPARATOR);
0

Featured Post

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
These days socially coordinated efforts have turned into a critical requirement for enterprises.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question