tags:

views:

33

answers:

2

I have a camera server FTPing images to a webserver. Can anyone suggest the PHP snippet I'd need that would look through the server's public root directory (/public_html) and display the four most recent images?

I can tell the camera server to name uploaded images by date/time, however needed [eg. image-021020102355.jpg for an image created 2nd oct 2010 at 11:55pm]

thanks!

A: 

I've put together something that can help you. This piece of code displays the last recent images in the root directory of your server.

<?php

    $images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE); //formats to look for

    $num_of_files = 4; //number of images to display

    foreach($images as $image)
    {
         $num_of_files--;

         if($num_of_files > -1) //this made me laugh when I wrote it
           echo "<b>".$image."</b><br>Created on ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."'"."><br><br>" ; //display images
         else
           break;
    }
?>
Secko
+1  A: 

This should do it:

<?php
foreach (glob('*.jpg') as $f) {
    # store the image name with the last modification time and imagename as a key
    $list[filemtime($f) . '-' . $f] = $f;
}   

$keys = array_keys($list);      
sort($keys);                    # sort is oldest to newest,

echo $list[array_pop($keys)];   # Newest
echo $list[array_pop($keys)];   # 2nd newest

If you can make the filenames YYYYMMDDHHMM.jpg sort() can put them in the right order and this would work:

<?php 
foreach (glob('*.jpg') as $f) {
    # store the image name
    $list[] = $f;
}

sort($list);                    # sort is oldest to newest,

echo array_pop($list);   # Newest
echo array_pop($list);   # 2nd newest
lawnjam