MudGuard: Daten eintragen (Lösungsansatz)

Beitrag lesen

Hi,

ich möchte in eine Tabelle Monate ab einem bestimmten Zeitpunkt eintragen.

ist das eine persistente Tabelle?

Dann müßtest Du, bevor Du einzutragen versuchst, erst mal den neuesten Eintrag ermitteln.

Ich möchte aber, dass ich niemals den nächsten Monat vor dem 20. des laufenden Monats eintrage.

Ok, der Endzeitpunkt ist also entweder der vorige oder der jetzige Monat.

for($i = 1;$i <= $Monat;$i++) {

Damit bekommst Du maximal 12 Monate in Deine Tabelle, angefangen mit Januar.

Was, wenn der letzte Lauf im Juli des vergangenen Jahres stattgefunden hat?

Mein Ansatz wäre:

  • Ermittle das Start-Datum (fix oder aus der bestehenden Tabelle)
  • Ermittle das Ende-Datum (1. Tag von diesem/vorigem Monat abhängig vom Tag im Monat)
  • aus dem Start-Datum erzeuge das Datum für den 1. des Start-Datum-Monats (sei Start-Datum der 17.06.2019, dann nimm den 01.06.2019)
  • aktuellesDatum = startDatum (mit Tag = 1)
  • solange aktuellesDatum <= endeDatum, erzeuge den Eintrag, und addiere 1 Monat auf das aktuelle Datum

Den 1. des Monats würde ich für das Datum verwenden anstelle des aktuellen Tags, da das sonst ggf. Probleme gibt: was ist der 31. Januar + 1 Monat? Der 31. Februar? Der 3. März? Der 28. Februar (bzw. im Schaltjahr der 29. Februar?)

cu,
Andreas a/k/a MudGuard