Toon laatste plaatje in map
Hallo,
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 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?
Even los uit de pols en niet getest:
Ik hoop er op dat php de bestanden op volgorde pakt zoals ze naar de directory geschreven zijn.
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
Bedankt ten eerste!
Ik heb hem in dezelfde directory gezet als de plaatjes en de regel hieronder aangepast:
Maar krijg een leeg scherm, of doe ik nog wat verkeerd?
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?
Plaats eens een paar echo's in de eerste foreach:
komen er bestandsnamen in beeld? zo niet dan is de directory niet goed denk ik.
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.
komt niets. Ik heb de php bestand in dezelfde directory als de plaatjes.
Ik heb ook dit script gevonden:
alleen toont deze mij alleen de eerste
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.
de bestanden hebben wel herleidbare namen.
Schedule_20150216-091200.jpg
Schedule_YYYYMMDD-UUMMSS.jpg
Als ik de 1 in 5 wijzig krijg ik de eerste 5
Schedule_20150216-091200.jpg
Schedule_YYYYMMDD-UUMMSS.jpg
Als ik de 1 in 5 wijzig krijg ik de eerste 5
Glob sorteert al alfabetisch.
Dan moet je dus de laatste 5 items hebben:
Dan moet je dus de laatste 5 items hebben:
Hallo,
Heb het doorgelezen en het eea geprobeerd met samenvoegen, maar mijn kennis met php is hiervoor nog niet doorontwikkeld :)
Heb het doorgelezen en het eea geprobeerd met samenvoegen, maar mijn kennis met php is hiervoor nog niet doorontwikkeld :)




