Hallo,
Da Du hier nicht sagst, ob Du POSIX- oder MySQL-Timestamps meinst, halte ich die Antwort so allgemein, dass sie für beide gilt.
Wenn ich den ältesten und neusten timestamp der gesamten Tabelle abrufe, wie kann ich dann überprüfen wieviele und welche Monate in dieser Spanne liegen?
Naja, Du kannst ja Nummer des Jahres und Monats der beiden Timestamps bestimmen und der Rest ist relativ simpel (Du hast 12 Monate pro Jahr, Jahre werden kontinuierlich gezählt). D.h. wenn der erste Timestamp Jahr 2006, Monat 4 hat und der letzte Timestamp Jahr 2008, Monat 3, dann weißt Du, dass da genau 24 Monate eingeschlossen sind (inkl. ersten und letzten Monat). Dein Code sähe schematisch so aus:
$monat = [monat des 1. timestamps];
$jahr = [monat des 1. timestamps];
$ende_monat = [monat des 2. timestamps];
$ende_jahr = [monat des 2. timestamps];
// solange wir das End-Datum noch nicht erreicht haben
while ($jahr < $ende_jahr || $monat < $ende_monat) {
// hier würde man den Link ausgeben
echo "Jahr: " . $jahr . ", Monat: " . $monat . "<br />\n";
$monat++;
// übertrag
if ($monat == 13) {
$monat = 1;
$jahr++;
}
}
Wenn ich das dann mal geschafft habe, bruache ich ja um die passenden Daten aus der Tabelle zu hohlen den Monats-Beginn-Timestamp und den Monats-Ende-Timestamp, wie bekomme ich diese zu einem Variablen Monat?
Naja, Du bekommst dann genau die Information "Monat" und "Jahr" - d.h. Du kannst den Timestamp berechnen, der am 1. Tag des Monats um Mitternacht liegt und Du kannst den Timestamp berechnen, der am letzten Tag des Monats um 23:59:59 liegt - und alles, was zwischen den beiden Timestamps (einschließlich dieser beider) liegt, liegt innerhalb des Monats - MySQL kann ja Vergleiche sowohl auf Zahlenfelder als auch auf Datumsfelder durchführen (WHERE feld >= anfang AND feld <= ende
).
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup