Ik gebruik op mijn website het fotoalbum van Arjan Kapteijn (v2), een prima fotoalbum waar voor mij 1 functie aan ontbreekt, en dat is dat de albums niet op datum worden gesorteerd.
Vandaag ben ik de hele dag bezig geweest om dit voor elkaar te krijgen.
De laatst gewijzigde datum van de map heb ik inmiddels weten te achterhalen.
Het lukt me echter niet om aan de hand van deze datum de volledige lijst op datum te sorteren.
Het gaat om dit stukje code:
<?
if(!empty($directories))
{
foreach($directories as $directory)
{
$laatstgewijzigd = date ("d F Y H:i:s", filemtime($map.$directory));
echo '<img src="images/folder.gif" class="albumicoon" alt="" /><a href="?pagina=smoelenboek&map='.$map.$directory.'">'.str_replace("-"," ", $directory).'</a><br />';
echo $laatstgewijzigd;
echo '<br />';
}
echo '<img src="images/lijn.gif" alt=""/>';
}
?>
<?
if(is_dir($map.$file))
{
//... kijken we eerst of het niet onze thumbs of thumbsgroot map is.
if($file != 'thumbs' && $file != 'thumbsgroot' && $file != 'Geheim')
{
//Toevoegen aan de directories array!
$directories[] = $file;
}
?>
Wil je er naartoe dat ik de datum/tijd toe moet voegen aan de array?
Na wat gegoogled te hebben heb ik het geprobeerd om op de array op basis van datum/tijd te sorteren maar dat lukt ook niet.
Ik heb dat op deze manier gedaan:
<?
if(is_dir($map.$file))
{
//... kijken we eerst of het niet onze thumbs of thumbsgroot map is.
if($file != 'thumbs' && $file != 'thumbsgroot' && $file != 'Geheim')
{
//Toevoegen aan de directories array!
$datumtijd = date ("d F Y H:i:s", filemtime($map.$file));
$directories [] = array ($file, $datumtijd);
function DateCmp($a, $b)
{
return ($a[1] < $b[1]) ? -1 : 0;
}
usort ($directories, 'DateCmp');
}
?>
Vandaag weer verder gaan proberen, hij sorteert nu op datum!
Echter loop ik nog tegen 1 probleem aan, hij laat nu ook de datums als album namen zien. Dit moet natuurlijk niet.
Ik vul de array nu op deze manier:
<?
if($file != 'thumbs' && $file != 'thumbsgroot' && $file != 'Geheim')
{
//Toevoegen aan de directories array!
$directories [] = $file;
$directories [] = date ("d F Y H:i:s", filemtime($map.$file));
}
?>
Echter loop ik nog tegen 1 probleem aan, het sorteren gebeurd nu ascending terwijl ik in het script aangeef dat dit descending moet gebeuren. Ik heb geprobeerd om het op ascending te zetten om te kijken of dit het omgekeerde effect geeft maar de oudste mappen blijven dan bovenaan staan. Omdat ik de indeling van de datum en tijd iets heb aangepast heb ik geprobeerd deze naar standaard te zetten omdat ik dacht dat PHP hier misschien door in de war raakte. Echter lossen beide acties het probleem niet op, de oudste mappen blijven bovenaan staan.
Uhm... geef de mappen de naam van de datum, en dan daarin de map met de naam van de foto's bijv: naam evenement o.i.d. en dan daarin de foto's dan order je bij datum daarna kijk je in die mappen en die naam echo je, dan link je de mensen daarheen en echo je de foto's.........
Ik zie nu overigens dat er niet goed wordt gesorteerd, ik riep dat het wel zo was omdat inderdaad wel de meest oude map bovenaan staat en de meest nieuwe map onderaan. Als ik wat verder door de lijst scroll zie ik dat het geheel toch nog aardig door elkaar staat, zie: http://www.dj-lars.com/test.php
Ik heb de array_multisort er uitgehaald en vervangen door een arsort.
Daarnaast heb ik de tijd/datum notatie op standaard gezet en hij sorteert nu netjes op datum. Het heeft me dan in totaal bijna 8 uur werk gekost, maar het werkt!