Habe mich für die 2. Möglichkeit entschieden
:
/* Erzeuge Timestamps */
srand ((double)microtime()*1000000);
for ($i=0;$i<=20;$i++)
$ts[]=rand(947000000, time());
/* Erzeuge Kontrollausgabe */
foreach ($ts as $k=>$v)
{
echo "$v ".date("m-Y",$v)."
n";
}
echo "
n";
/* erwartet Jahr, bei 0, werden alle Jahre berücksichtigt */
function makelist($year)
{global $ts;
/* Sortiere Timestamps */
sort($ts);
if ($year==0)
{
/* Erzeuge Strings im Format mm-yyyy */
foreach ($ts as $k=>$v)
{
$alle[]=date("m-Y",$v);
}
}
else
{
$startts=mktime(0,0,0,1,1,$year);
$endts=mktime(23,59,59,12,31,$year);
foreach ($ts as $k=>$v)
{
if (($v>=$startts) && ($v<=$endts))
$alle[]=date("m-Y",$v);
}
}
$liste=array_unique($alle);
return ($liste);
}
$foo=makelist(2001);
foreach ($foo as $k=>$v)
echo "$v
n";
?>
Bis zur "function" werden nur Testdaten erzeugt, ist also für Dich nicht nötig, Du musst aber die Timestamps aus der DB in einem Array ($ts[]) zur Verfügung stellen.
Außerdem gibt es die Möglichkeit eine komplette Liste über Jahresgrenzen hinweg zu erstellen, wenn man makelist eine 0 übergibt. Falls Du diese Teilfunktionalität nicht brauchst, kannst Du auch den ersten Teil der if-else-Anweisung weglassen.
_________________
---