frage zu dem php kalender tutorial

Rios

Erfahrenes Mitglied
Also hab den code bis auf bissel css und die veränderung, dass der kalender erst 2001 anfängt nicht verändert, hab dann aber festgestellt, dass bei oktober-november was nicht stimmt:
der 31.10.2002 is laut kalender ein freitag, der 1.11.2002 aber auch..
hier is das mal online, da mit man sehen kann was ich meine :)
online beispiel

PHP:
<?php
define("EINTAG", (60*60*24) );
if ( ! checkdate( $monat, 1, $jahr ) )
    {
     $heuteArr = getdate();
    $monat = $heuteArr[mon];
    $jahr = $heuteArr[year];
    }
$start = mktime ( 0, 0, 0, $monat, 1, $jahr );
$ersterArr = getdate($start);

?>


<html>
<head>
<title><?php print "Kalendar: $ersterArr[month]
        $ersterArr[year]" ?></title>
<style>P,TD,TH {color: #000000;font-size: 12px;font-family: Verdana, Arial, Helvetica, sans-serif;}</style>

</head>
<body>
<form action="<? print $PHP_SELF ?>" method="post">
<select name="monat">
<?php
$monate = Array("Januar", "Februar", "März", "April",
                "Mai", "Jui", "Juli", "August", "September",
                "Oktober", "November", "Dezember");
for ( $x=1; $x <= count( $monate ); $x++ )
    {
    print "\t<option value=\"$x\"";
    print ($x == $monat)?" SELECTED":"";
    print ">".$monate[$x-1]."\n";
    }
?>
</select>
<select name="jahr">
<?php
for ( $x=2001; $x<2010; $x++ )
    {
    print "\t<option";
    print ($x == $jahr)?" SELECTED":"";
    print ">$x\n";
    }
?>
</select>
<input type="submit" value="Los geht's!">
</form>

<p>
<?php
$days = Array("Sonntag", "Montag", "Dienstag", "Mittwoch",
              "Donnerstag", "Freitag", "Samstag");
print "<TABLE cellspacing='5' CELLPADDING=7 bgcolor='#eeeeee'>\n";
foreach ( $days as $day )
    print "\t<td style='border: 1px solid gray'  bgcolor='#dddddd'><b>$day</b></td>\n";


for ( $zaehler=0; $zaehler < (6*7); $zaehler++ )
    {
    $tagArr = getdate( $start );
if ( (($zaehler) % 7) == 0 )
        {
        if ( $tagArr[mon] != $monat )
            break;
        print "</tr><tr>\n";
        }
if ( $zaehler < $ersterArr[wday] || $tagArr[mon] != $monat )
        {
        print "\t<td style='border: 1px solid gray' bgcolor='#ffffff'><br></td>\n";
        }
else
        {
        print "\t<td style='border: 1px solid gray' bgcolor='#ffffff'>$tagArr[mday] $tagArr[month]</td>\n";
        $start += EINTAG;
        }
    }
print "</tr></table>";
?>
</body>

Die anderen monate hab ich jetzt nicht mitm kalender überprüft , ka ob das der einzige fehler ist, aber woran köntne das liegen?:-)
 
Bei mir der gleiche Fehler. Ist immer nur im Oktober, aber dafür in jedem Jahr! Immer der letzte das Datum des letzten Montags wird doppelt eingetragen!
Gruß Ronin
 
Naja, dann seht mal in der PHP Bug-List nach, ob dieser Bug schon aufgenommen wurde. Wenn nicht, postet diesen.
Dann erhaltet ihr auch weitere Informationen...
 
meinst du wirklich, dass das ein Bug von PHP ist und nicht irgendein Fehler im Programm? Außerdem müsste man noch wissen, welche Funktion den Fehler verursacht.

Gruß Ronin
 
Mal ganz langsam.....

Bei meinem selbst gecodeten Kalender ist der 31.10 ein Freitag und der 1.11 ein Samstag, so wie es auch sein soll!

Also fragt erstmal beim Tutorial Autor nach, wo auch immer ihr das her habt!

Oder am besten selber coden
 
Ich sagte ja, erst einmal nachsehen ob es sich um einen Bug handelt, bzw. ob ein solcher gelistet ist. Wenn es bei danube funktioniert, müsst ihr eben euren Code nochmal checken.
 
oh da hat jemand nen alten thread ausgegraben :-)
also das ist kein php bug, weil der fehler nicht daher kommt, dass irgend eine datumsfunktion falsche ergebniss ausgibt, sondern die schleife wo die variable $zaehler erhöht wird, komischerweise im oktober 2 mal hintereinander den gleichen wert ausgibt. Zu sehen wenn man sich mal an jedem tag mit echo $zaehler den wert anschaut.

keine ahnung mehr von welchem tutorial der code ist, glaube aber aus dem forum hier, habs auch nie geschafft rauszufinden woran es liegt
 
Aber dann muss es doch letzendlich ein Bug von PHP sein, wenn dieser Befehl:
PHP:
for ( $zaehler=0; $zaehler < (6*7); $zaehler++ )
zweimal den gleichen Wert ausgibt. Die Frage ist nur, warum das gerade im Oktober passiert.

Gruß Ronin
 
Zurück