dedlfix: Fehler in Schleife, nur wo?

Beitrag lesen

echo $begrüßung;

Hehe, also die Termine liegen im Format 2009-01-05 08:00:00 in der Datenbank. Als Datetime.

Wenn du ein für PHP brauchbares Format haben möchtest, dann lass dir den Unix-Timestamp davon geben (MySQL vorausgesetzt. Wenn nicht, weiterlesen, strtotime() verwenden).

Den ersten Tag der Woche und den aktuellen Tag hole ich mir über die Funktion:

Den kann man wunderbar mit MySQL ermitteln

SELECT datum - INTERVAL WEEKDAY(datum) DAY

WEEKDAY() ermittelt den Wochentag mit Montag als 0. Wenn man diese Angabe als Anzahl Tage vom gegebenen Datum abzieht, bekommt man den Montag:

SELECT '2009-01-07' - INTERVAL WEEKDAY('2009-01-07') DAY

ergibt 2009-01-05.

Andere DBMS haben ebenfalls nicht zu unterschätzende Datumsberechnungsfunktionen.

Aber auch mit PHP kann man sehr schön Datumsrechnen. Die Funktion strtotime() macht eine Menge Rechnungen im Klartext. Zum einen kann sie die Angabe im Format YYYY-MM-DD ohne weiteres in einen Unix-Timestamp umrechnen.

Als erstes kann man fragen, ob das Datum ein Montag ist:

date('N', strtotime($datum)) == 1

Wenn dies nicht der Fall ist, muss er ermittelt werden:

strtotime($datum . ' last monday');

Das ergibt den Unix-Timestamp vom nächsten zurückliegenden Montag (0 Uhr Ortszeit).

An der Addition des einen Tage skann es meiner Meinung nach nicht liegen, denn das funktioniert soweit. Er schreibt es einfach nicht in den Array. :-(

Debugging! Fehler bei denen Wunsch und Wirklichkeit nicht miteinander übereinstimmen sucht man mit Kontrollausgaben. Mit Spekulieren und Annahmen kommt man meist nicht weiter. Für Kontrollausgaben eignet sich weniger gut ein einfaches echo, besser ist ein var_dump(), weil das genauere Informationen zur Variablen oder zum Ergebnis des übergebenen Ausdrucks liefert.

echo "$verabschiedung $name";