Solved

display from directory

Posted on 2008-06-24
5
173 Views
Last Modified: 2010-04-06
Hi,

I need to know how I can get last ten file in the directory using PHP ?? Thanks
0
Comment
Question by:usmbay
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 1

Expert Comment

by:Neoific
ID: 21856557
How do you want them to be sorted?
0
 
LVL 1

Expert Comment

by:morristhebear
ID: 21858664
I've just written this for you, hopefully it will do the trick.  It's a function that returns the last 10 files modified in a given directory.  It has an optional parameter so you can specify how many files to return, if left blank, it defaults to 10.  The files are returned sorted in descending order.  You could list the files using a foreach loop.

E.G:

$files = list_files ("C:\\");
foreach ($files as $k => $v) {
    echo "$v<br />\n";
}

Hope this helps.

More Example Usage:

print_r ( list_files ("C:\\"));    //  Lists the last 10 modified files in the C:\ drive.
print_r ( list_files ("C:\\Program Files\\", 20));   // Lists the last 20 modified files in Program Files


<?php
	
	function list_files ($string_dir, $int_limit = 10) {
		$files = array();
		//	Get all the files in the directory, along with the last modified date.
		if ($dir_handle = opendir ($string_dir)) {
			while (false !== ($file = readdir ($dir_handle))) {
				$files[date("YmdHis", filemtime($string_dir . $file))] = $file;
	    	}
	    	krsort ($files);
	    	$files = array_chunk ($files, $int_limit, true);
	    	return $files[0];
		}
		return false;
	}
?>

Open in new window

0
 

Author Comment

by:usmbay
ID: 21860178
in this query the file_name represent the file name but the problem is the pdf_files includes all the files name either exist or not so when I excute the query it return all files name but  they're not physically exist
so I need to return file_name physically exist only in the directory

SELECT      file_name  FROM pdf_files;

file_name from the database
101
102
103
104
105

but what's in the directory is till 103 only so in the query return only up to 103.pdf  

Thanks
0
 
LVL 1

Accepted Solution

by:
morristhebear earned 500 total points
ID: 21860289
OK.  You can use the file_exists function with a loop and break out of it once you find a file that isn't found.  The snippet below should send you in the right direction, you will need to change the file_exists part where it says path to point to your directory where the PDF files are stored.

Hope this helps.
<?php
	
	$query = "SELECT file_name FROM pdf_files";
	while ($row = mysql_fetch_array($query)) {
		if (file_exists('path' . $row['file_name'] . '.pdf')) {
			echo $row['file_name'] . "<br />\n";
		} else {
			break;
		}
	}
	
?>

Open in new window

0
 

Author Comment

by:usmbay
ID: 22000811
ok it works but it return the files from last year it's log list , is there a way to return last 10 file only
Thanks
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

726 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