Moin!
Ich entnehme Deinem Skript, dass die Datumsangaben im ISO-Format (YYYY-MM-DD) gespeichert sind.
Ok. Welchen Typ hat Dein Datenfeld?
Ist es vom Typ datetime? Dann beginne hier zu lesen:
http://dev.mysql.com/doc/mysql/de/datetime.html
dann weiter mit:
http://dev.mysql.com/doc/mysql/de/date-calculations.html (besonders ganz unten ... MONTH())
Dazu:
http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
und nun zum 'Gruppieren':
http://dev.mysql.com/doc/mysql/de/select.html
SELECT ,,,,MOUNTH('t.von') AS monat, YEAR('t.von') AS Jahr
FROM
...
ORDER BY Jahr, Monat
...
In der Konsequenz kannst Du auf den inperformanten Regex verzichten und auch das Sortieren / Gruppieren dem DBMS übertragen. Das hat dafür heftig schnelle Routinen.
Du kannst die Funktionen auch in der WHERE Klausel verwenden:
SELECT ,,,,MOUNTH('t.von') AS monat, YEAR('t.von') AS Jahr
...
WHERE Monat=12 AND Jahr=2005
Du kannst also die Arbeit beruhigt der Datenbank überlassen, die macht das schon.
===========================================
In jedem anderen Fall: (Ich wüsset nur gerade keinen, es sei denn Du willst unbedingt vermeiden die DB mehrfach zu fragen:
Schreibe den Termin nicht einfach zum Useragent, sondern speichere das Ergebnis in einen Array:
$termin=array();
while ($row = mysql_fetch_array ($result_vorschau)) {
$termin[]=array();
...
$termin[]['Monat']=$row['Monat'];
$termin[]['Jahr']=$row['Jahr'];
# Nur wenn Du die Monate brauchst, an denen was los ist:
#=======================================================
$arJahreMonate[$row['Monat'].'-'.$row['Jahre']]=true;
# erzeugt sowas wie $arJahre_Monate[2005-09]=true;
# Dieses Array kannst Du später mit
# array_keys ($arJahreMonate) ausgeben.
# http://de2.php.net/manual/de/function.array-keys.php
...
}
$arJahreMonateListe= array_keys ($arJahreMonate);
$arJahreMonateListe enthält jetzt eine Liste der Jahre-Monate in denen was los ist.
oder ausgeben oder sortieren oder ...
http://de2.php.net/manual/de/ref.array.php
foreach ($arJahreMonate AS $strJahrMonat) {
}
oder eben auch direkt adressieren:
echo $arJahreMonate['2005-12'];
oder ... oder ...
Ich denke, das genügt als Sammlung von Denkanstößen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development