Hallo allemaal, ik ben opzoek naar wat hulp en hoop dat hier te krijgen.
Ik heb zelf geen verstand van PHP dus moet ik alles op het www zoeken.
Ik wil het nieuwste plaatje wat in een directory geplaatst wordt (door mijn webcam) er uit halen.
Ik heb een script gevonden wat werkt, alleen pakt die het oudste plaatje.
<?php

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

$num_of_files = 1; //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;
}

?>


Hopelijk mag ik deze vraag hier stellen, want dat is mij niet helemaal duidelijk als ik de regels lees?

Alvast bedankt voor de hulp
Uit het hoofd dus niet getest.

In $latest_image staat de src van de afbeelding.
In $time_created[$latest_image] de tijd waarop deze als laatste is aangepast.

Het zou kunnen dat de laatste regel korter kan maar ik kom er effe niet op.

EDIT: Er zat een fout in de laatste regel.


<?php

# Afbeeldingen opvragen.

$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE);


# Voor het opslaan van de tijden waarop de afbeeldingen voor het laatst zijn aangepast.

$time_created = array();


# Alle afbeeldingen doorlopen en de tijd waarop de afbeelding voor het laats is aangepast opslaan.

foreach($images as $img) $time_created[$img] = filemtime($img);


# De laatste afbeelding zoeken.

$latest_image = array_search(max($time_created), $time_created);


?>
We komen in de buurt, maar hij pakt nu het eerste plaatje van vandaag.
Zet er eens het volgende onder. Wat krijg je dan te zien?

<?php

print_r($time_created);

?>
Onder de afbeelding een lijst van de plaatjes de nieuwste onderaan.
Het gaat me om de tijden die erachter staan. Zitten daar dubbele tussen of zijn ze uniek?
kun je geen (u)sort oid erin gooien, ik weet alleen niet hoe je dat op datum/tijd doet, alleen op naam.

EDIT:
Opgezocht, volgens mij usort($time_created)
Er zitten geen dubbele tussen
Geen dubbele tijden? Dan loop ik vast helaas. Als de tijden uniek zijn dan zou hij in theorie de laatste afbeelding moeten weergeven.
In ieder geval bedankt Mark
@ Tobias, waar zou ik die usort dan moeten plaatsen?
Ik zou het ongeveer zo doen:

<?php
$imagesdir = 'images';
$images = glob($imagesdir.'/*.{gif,png,jpg,jpeg,bmp}', GLOB_BRACE);

foreach($images as $image) {
	if( count($images) == 1 ) {
		if( substr( filemtime($image), 0, 6 ) == substr( time(), 0, 6 ) ) {
			echo $image."<br>\n";
		} else {
			echo $image."<br>\n";
		}
	} else {
		echo $images[0]."<br>\n";
	}
}
?>

Reageren