Hallo,
$starttag = "8";
$startmonat = "10";
$startjahr = "2007";
$endetag = "25";
$endemonat = "11";
$endejahr = "2007";$vdate = mktime(0,0,0,$startmonat,$starttag,$startjahr);
$bdate = mktime(0,0,0,$endemonat,$endetag,$endejahr);$tage = ($bdate-$vdate)/86400;
for ($i = 0; $i < $tage; $i++) {
$testdate = mktime(0,0,0,$startmonat,$starttag+$i,$startjahr);
$test = date("Y-m-d",$testdate);
echo "$i: $test<br>";
}
Der Code liefert Dir allerdings um die Zeitumstellungsgrenzen anderes Verhalten.
1. Beispiel: Ohne Umstellung dazwischen:
$starttag = "25";
$startmonat = "9";
$startjahr = "2007";
$endetag = "30";
$endemonat = "9";
$endejahr = "2007";
Ergibt:
0: 2007-09-25
1: 2007-09-26
2: 2007-09-27
3: 2007-09-28
4: 2007-09-29
2. Beispiel: Mit Umstellung Sommer- auf Winter dazwischen:
$starttag = "25";
$startmonat = "10";
$startjahr = "2007";
$endetag = "30";
$endemonat = "10";
$endejahr = "2007";
Ergibt:
0: 2007-10-25
1: 2007-10-26
2: 2007-10-27
3: 2007-10-28
4: 2007-10-29
5: 2007-10-30
3. Beispiel: Mit Umstellung Winter- auf Sommerzeit dazwischen:
$starttag = "25";
$startmonat = "3";
$startjahr = "2008";
$endetag = "30";
$endemonat = "3";
$endejahr = "2008";
Ergibt:
0: 2008-03-25
1: 2008-03-26
2: 2008-03-27
3: 2008-03-28
4: 2008-03-29
Im 2. Beispiel hast Du ein Datum mehr als in den anderen Fällen. Du kannst das Problem umgehen, indem Du round() durchführst:
$tage = round (($bdate-$vdate)/86400);
Dann funktioniert auch Deine Lösung in allen Fällen identisch.
Viele Grüße,
Christian