Log In · Register

 
 
Closed TopicStart new topic
PHP List all files in directory
Mikeplyts
post Aug 28 2010, 10:51 AM
Post #1


Mel Blanc was allergic to carrots.
*******

Group: Official Designer
Posts: 6,371
Joined: Aug 2008
Member No: 676,291



I was working on a little file upload thing for a website and I'm pretty much done. However, I have a page where I list all files based on the current user. My current script works fine, but it only lists the most recent file uploaded. I'd rather have a full list of all files in the directory instead of the most recent one.

Here's my current script:

CODE
<?php
$directory = $user;
if (!is_dir($directory)) {
mkdir($directory);
$list = '<tr>
<td>No files to display.</td>
</tr>';
}

else {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$name = ucfirst($file);
$list = '<tr>
<td>' . $name . '</td>
<td><a href="/files/' . $directory . '/?delete=' . $file . '" class="delete">Delete this file</a> <a href="/files/' . $directory . '/?open=' . $file . '">Open this file</a></td>
</tr>';
}

else {
$list = '<tr>
<td>No files to display.</td>
</tr>';
}
}
closedir($handle);
}

echo $list;
}
?>


It works exactly like I want it to when it comes to listing, but I want to make it so it lists all files as opposed to one. Oh, and, $user is just variable I defined in another script that contains the current user's username.

Hilfe?
 
louiohjkjhlhklkh...
post Aug 28 2010, 06:38 PM
Post #2


Member
**

Group: Member
Posts: 22
Joined: Dec 2008
Member No: 702,109



CODE
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$name = ucfirst($file);
$list = '<tr>
<td>' . $name . '</td>
<td><a href="/files/' . $directory . '/?delete=' . $file . '" class="delete">Delete this file</a> <a href="/files/' . $directory . '/?open=' . $file . '">Open this file</a></td>
</tr>';

}

else {
$list = '<tr>
<td>No files to display.</td>
</tr>';
}
}


IF you look at this part of your code is where your error lies. The WHILE LOOP iterate over the $file which is an array... and you are store the data in a variable which is not an array $list, so it just keeps overwriting the file name with a new one every time.

CODE
<?php
$directory = $user;

$list = array();

if (!is_dir($directory)) {
mkdir($directory);
$list = '<tr>
<td>No files to display.</td>
</tr>';
}

else {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if( $file != "." && $file != ".." )
$list[] .= $file;
}
}
else {
$list = '<tr>
<td>No files to display.</td>
</tr>';
}
}
closedir($handle);


foreach ( $list as $key => $val )
{
echo "<tr><td> {$val} </td></tr>";
}
?>
 
Mikeplyts
post Aug 29 2010, 05:19 AM
Post #3


Mel Blanc was allergic to carrots.
*******

Group: Official Designer
Posts: 6,371
Joined: Aug 2008
Member No: 676,291



Oh, okay. Thanks man, worked great!
 
manny-the-dino
post Aug 30 2010, 04:06 PM
Post #4


Senior Member
*******

Group: Administrator
Posts: 8,629
Joined: Jan 2007
Member No: 498,468



Topic Closed and Moved
 

Closed TopicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members: