fastix®: Gruppenwechsel

Beitrag lesen

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