Met de volgende code wordt de directory pictures uitgelezen op mappen met de foto's daarin. Deze mappen worden onder elkaar weergegeven met een random foto uit dat album als voorbeeldje, de titel, het aantal foto's en de datum van laatst gewijzigd.

Ik zou deze opsomming van albums graag willen sorteren op datum gemaakt. Dus het nieuwste album bovenaan. Kan iemand mij daarbij helpen? Ik kom er namelijk niet uit. Bij voorbaat dank...

<?
function RandImg($map, $max_size) {
$a_bestanden = array();
$bestandstypes = array('gif','jpg','jpeg','png','bmp');
for ($i=0; $i < count($bestandstypes); $i++) {
$types[] = strtolower($bestandstypes[$i]);
}

if ($handle = opendir($map)) {
while (false !== ($bestand = readdir($handle))) {
$bestand_explode = explode('.', (strtolower($bestand)));
$lengte = (count($bestand_explode)-1);
$bestand_ext = $bestand_explode[$lengte];
if (in_array($bestand_ext, $types)) {
$a_bestanden[] = $bestand;
}
}
closedir($handle);
}
else {
echo "Map kon niet worden geopend";
}
$max = count($a_bestanden);
$foto = rand(0, ($max-1));
$dimensions = getimagesize($map.'/'.$a_bestanden[$foto]);
$width = $dimensions[0];
$height = $dimensions[1];

if ($width > $max_size) {
$width = $max_size;
}

$ret = '<img src="'.$map.'/'.$a_bestanden[$foto].'" alt="'.$a_bestanden[$foto].'" width="'.$width.'" />';
return ($ret);
}
?>
<br><br><table cellspacing="0" border="1" cellpadding="0" width="100%" class="plattetekst">
<?
$folder = opendir("files/Pictures");
while (($object = readdir($folder)) == true){
if(is_dir("files/Pictures/".$object) && $object != '..' && $object != '.'){
$titel = ucfirst($object);

$gewijzigd = "files/Pictures/".$object;
$gewijzigd = date ("d-m-Y H:i", filemtime($gewijzigd));
if( $handle = opendir("files/Pictures/" . $object) ){
while( false !== ($file = readdir($handle))){
if($file != '.' && $file != '..'){

$bestand_explode = explode('.', (strtolower($file)));

if(($bestand_explode[1] == "gif") or ($bestand_explode[1] == "jpg") or ($bestand_explode[1] == "jpeg") or ($bestand_explode[1] == "png") or ($bestand_explode[1] == "bmp")){

$bestanden[] = $file;

}

}
}

$aantal = count($bestanden);
unset($bestanden);

}

if($aantal == 0){
echo "";
}else{
?>
<tr>
<td rowspan="2" align="center" width="327">
<?
echo RandImg("files/Pictures/" . $object, 150);
?>
</td>
<td width="839" valign="top">Album: <? echo $titel; ?><br>
<font face="Arial" size="1">
<?
echo "<br>Foto's aanwezig: " . $aantal;
echo "<br>Laatst gewijzigd: " . $gewijzigd;
?>
</font><br>
</td>
</tr>
<tr>
<td valign="bottom"><a href="site.php?page=album&album=<? echo rawurlencode($object); ?>">Foto's bekijken</a></td>
</tr>
<tr><td colspan="2"><br><img src="images/oranje-lijn.gif" width="395" /><br><br></td></tr>

<?
}
}
}
?>
</table>
<?
//dit is voor files, maar je krijgt het zelf wel naar folders denk ik..

$mappen=array(); //lege array maken

if ($dir = @opendir("text")) { //deze map gaan we uitlezen
while (($file = readdir($dir)) !== false) {
if($file!=".." && $file!="."){ //is het wel een file
$datum=date ("Ymd", filemtime('text/'.$file)); //datum opzoeken voor bij de file
$mappen[$datum] = $file; //key en value maken voor element
}
}
closedir($dir);
}
ksort ($mappen); //sorteren op key
echo end($mappen) ; //de laatste laten zien
?>

edit comment aangepast..
Dan laat je alleen de laatste zien. Ik wil alle mappen laten zien, maar de volgorde is van de laatste naar eerste..

Reageren