Hallo Rolf,
D.h. die Monate in der Tabelle befinden sich in der Vergangenheit. Wenn der Startzeitpunkt der März wäre, würde man heute (01.07.) die Monate März bis Juni sehen, und in 3 Wochen (22.07.) die Monate März bis Juli?
Genau.
Zu deinem Code: Der Startzeitpunkt ist nur indirekt erkennbar. Deine Schleife beginnt bei 1, d.h. der Startmonat in deinem Code ist der Januar?!
Eigentlich gar nicht erkennbar, hätte ich gedacht. Schleife bei 1 ist korrekt, das Moatsarray hat hier den Januar.
// wenn über Startmonat, dann Eintrag
Das ist dann wieder seltsam, denn in $Monat steht ja das Ergebnis der Rechnerei mit this/next month, also eigentlich eine Variante von "heute".
Oh, das wird grad zu kompliziert, ich liefere mal Code nach.
$thisMonth = new DateTime('this month');
$heutigerTag = $thisMonth->format('d');
echo $heutigerTag;
if ($heutigerTag > 19) {
$nextMonth = new DateTime('next month');
} else {
$nextMonth = new DateTime('this month');
}
$Monat = $nextMonth->format('m');
$Jahr = $nextMonth->format('Y');
$arr_monate=array('0','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$query_alle = "SELECT
ID,
KundenID,
Ab_Monat,
Ab_Jahr
FROM table
";
$result_alle = mysqli_query($db,$query_alle);
if($result_alle == FALSE) {
error($query_alle);
}
while($row_alle = mysqli_fetch_row($result_alle)) {
for($i = 1;$i <= $Monat;$i++) {
if ($i >= $row_alle[2] && $Jahr >= $row_alle[3]) {
//Insert
...
}
}
}
Dieses Codeszenario funktioniert bei meinen Tests bisher. Aber wie das bei Tests so ist, man weiß nie so recht, ob man alle in der Praxis denkbaren Szenarien damit auch wirklich erfasst hat.
Jörg