Toon laatste plaatje in map
Ik zoek een script om uit 5 verschillende mapjes steeds het nieuwste plaatje te tonen, en die zich steeds refresh.
Mijn PHP kennis is te minimal op dit zelf te maken, heft iemand hier ervaring ermee?
Ik hoop er op dat php de bestanden op volgorde pakt zoals ze naar de directory geschreven zijn.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$fotos = [];
// pak alle bestanden uit een bepaalde directory
foreach (glob("directory/*.*") as $filename) {
// verkrijg informatie over de bestandsnaam in de vorm van een array
$path_parts = pathinfo($filename);
// als de extensie van het bestand jpg, png of gif is..
if(in_array(strtolower($path_parts['extension']), array('jpg', 'png', 'gif'))
{
$fotos[] = $filename; // voeg toe aan de lijst van foto's
}
}
// zet de array ondersteboven
$fotos = array_reverse($fotos);
// spuug de eerste vijf uit
$i = 0;
foreach($fotos as $foto) {
echo $foto . '<br>';
$i++;
if($i > 5)
break;
}
?>
$fotos = [];
// pak alle bestanden uit een bepaalde directory
foreach (glob("directory/*.*") as $filename) {
// verkrijg informatie over de bestandsnaam in de vorm van een array
$path_parts = pathinfo($filename);
// als de extensie van het bestand jpg, png of gif is..
if(in_array(strtolower($path_parts['extension']), array('jpg', 'png', 'gif'))
{
$fotos[] = $filename; // voeg toe aan de lijst van foto's
}
}
// zet de array ondersteboven
$fotos = array_reverse($fotos);
// spuug de eerste vijf uit
$i = 0;
foreach($fotos as $foto) {
echo $foto . '<br>';
$i++;
if($i > 5)
break;
}
?>
Gewijzigd op 16/02/2015 10:43:50 door Frank Nietbelangrijk
Ik heb hem in dezelfde directory gezet als de plaatjes en de regel hieronder aangepast:
Quote:
foreach (glob("*.*") as $filename) {
Maar krijg een leeg scherm, of doe ik nog wat verkeerd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
foreach (glob("directory/*.*") as $filename) {
echo $filename . '<br>';
// verkrijg informatie over de bestandsnaam in de vorm van een array
$path_parts = pathinfo($filename);
// als de extensie van het bestand jpg, png of gif is..
if(in_array(strtolower($path_parts['extension']), array('jpg', 'png', 'gif'))
{
$fotos[] = $filename; // voeg toe aan de lijst van foto's
}
}
?>
foreach (glob("directory/*.*") as $filename) {
echo $filename . '<br>';
// verkrijg informatie over de bestandsnaam in de vorm van een array
$path_parts = pathinfo($filename);
// als de extensie van het bestand jpg, png of gif is..
if(in_array(strtolower($path_parts['extension']), array('jpg', 'png', 'gif'))
{
$fotos[] = $filename; // voeg toe aan de lijst van foto's
}
}
?>
komen er bestandsnamen in beeld? zo niet dan is de directory niet goed denk ik.
Ik heb ook dit script gevonden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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>Capture van ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."'"."><br><br>" ; //display images
else
break;
}
?>
$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>Capture van ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."'"."><br><br>" ; //display images
else
break;
}
?>
alleen toont deze mij alleen de eerste
en als je van dat script van die 1 eens een 5 maakt op regel 5? ;-)
Quote:
het nieuwste plaatje
Bedoel je hiermee "de laatste toegevoegde afbeelding"?
Dan moet je aflopend op creatie-tijd sorteren en de eerste afbeelding selecteren. Of je zorgt ervoor dat je afbeeldingen zinnige namen hebben, of je houdt dit bij in een database. In jouw bovenstaande script wordt de directory in een volgorde uitgelezen die waarschijnlijk verschilt van de volgorde van toevoegen (dump $images maar eens).
Als je de directories zelf onderzoekt kan het zinnig zijn om van tevoren clearstatcache() aan te roepen, zodat de directory cache wordt ververst.
Schedule_20150216-091200.jpg
Schedule_YYYYMMDD-UUMMSS.jpg
Als ik de 1 in 5 wijzig krijg ik de eerste 5
Dan moet je dus de laatste 5 items hebben:
Heb het doorgelezen en het eea geprobeerd met samenvoegen, maar mijn kennis met php is hiervoor nog niet doorontwikkeld :)