Kalender - Verflixter Oktober!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kalender - Verflixter Oktober!

    Huhu!

    Einleitung:
    Ganz kurz nur...:
    Ich hab hier einen kleinen Kalender (Monatsansicht) der eigentlich jeden Monat außer im Oktober super läuft!

    Der Fehler:
    Siehe: http://nichtsooft.at/Marianum/test/month.php?month=10

    Dier Frage:
    Kann mir jmd sagen was ich so falsch mache!?

    PHP-Code:
    <?php

    define
    ("EINTAG", (60*60*24));

    $monate[] = 'Jänner';
    $monate[] = 'Februar';
    $monate[] = 'März';
    $monate[] = 'April';
    $monate[] = 'Mai';
    $monate[] = 'Juni';
    $monate[] = 'Juli';
    $monate[] = 'August';
    $monate[] = 'September';
    $monate[] = 'Oktober';
    $monate[] = 'November';
    $monate[] = 'Dezember';

    $tage[] = 'Montag';
    $tage[] = 'Dienstag';
    $tage[] = 'Mittwoch';
    $tage[] = 'Donnerstag';
    $tage[] = 'Freitag';
    $tage[] = 'Samstag';
    $tage[] = 'Sonntag';

    $tagk[] = 'Mo';
    $tagk[] = 'Di';
    $tagk[] = 'Mi';
    $tagk[] = 'Do';
    $tagk[] = 'Fr';
    $tagk[] = 'Sa';
    $tagk[] = 'So';

    $dbgs[] ='#fffce3';
    $dbgs[] ='#fffce3';
    $dbgs[] ='#fffce3';
    $dbgs[] ='#fffce3';
    $dbgs[] ='#fffce3';
    $dbgs[] ='#e3ecff';
    $dbgs[] ='#b4cbff';


    $tablewidth 300;

    IF (!isset(
    $_GET[month])) {
     
    $month getdate();
     
    $month =  $month[mon];
    } ELSE {
     
    $month $_GET[month];
    }
    IF (!isset(
    $_GET[year])) {
     
    $year getdate();
     
    $year =  $year[year];
    } ELSE {
     
    $year $_GET[year];
    }


    $hour 0;
    $minute 0;
    $secund 0;
    $day 1;
    $cellwidth round($tablewidth 70);
      
    $start mktime(000$month$day$year);

    echo 
    $month.'.'.$year;
    echo 
    "<TABLE CELLSPACING=\"1\" CELLPADDING=\"0\" STYLE=\"width: ".$tablewidth."px; border: 0px;";
    echo 
    "background-color: #b4b4b4; font-family: Arial;\">\n";
    echo 
    "\t<TR>\n";
    $cnt 0;
     FOREACH (
    $tagk as $tag) {
      IF (
    $cnt == 6) {
       echo 
    "\t<TD STYLE=\"width: auto; height: 21px; font-size: 12px; background-color: #fff;"
       
    echo "text-align: center;\"><B>".$tag."</B></TD>\n";
      } else {
       echo 
    "\t<TD STYLE=\"width: ".$cellwidth."px; height: 21px;"
       
    echo "font-size: 12px; background-color: #fff;"
     
    text-aligncenter;\"><B>".$tag."</B></TD>\n";
      }
      
    $cnt++;
     }
     echo 
    "\t</TR>\n";
     echo 
    "\t<TR>\n";
     
    $cnt 0;
     FOR (
    $zaehler 1$zaehler < (6*7); $zaehler++) {
      
    $daterun getdate($start);

       IF (((
    $cnt) % 7) == && $cnt 0) {
           IF (
    $daterun[mon] != $month) {
                break;
           }
           echo 
    "\t</TR><TR>\n";
           
    $cnt 0;
       }

       IF (
    $zaehler $daterun[wday] || $daterun[mon] != $month) {
           echo 
    "\t<TD STYLE=\"font-size: 12px; background-color: #fff;\">&nbsp;</TD>\n";

       } ELSEIF (
    $daterun[mon] == $month && $vortag != $daterun[mday]) {

           echo 
    "\t<TD STYLE=\"font-size: 12px; background-color: ".$dbgs[$cnt].";"
           
    echo "text-align: center;\" TITLE=\"".$title."\">\n";
           echo 
    "\t\t".$daterun[mday]."\n";
    //       echo "\t\t (".$zaehler.")\n";
           
    echo "\t</TD>\n";
           
    $vortag $daterun[mday];
           
    $start += EINTAG;
       }
       
    $cnt++;
     }




     echo 
    "\t</TR>\n";
    echo 
    "</TABLE><BR>\n";

    ?>
    Danke für eure Hilfe!
    Zuletzt geändert von nichtsooft; 21.01.2008, 17:46.
    WHILE (!$asleep) { $sheep++; }

  • #2
    Lesen und ändern http://www.php-resource.de/forum/sho...threadid=50454 aber dalli

    Kommentar


    • #3
      Post ist abgeändert!
      Ich muß dazu sagen, daß ich mit dem PHP-Tag bei echo mit Anführungszeichen an Stelle von Hochkomma hier schon mal probs hatte. Darum wollte ich den CODE-Tag einsetzen.
      Den Code hab ich mal umgebrochen, daß nicht irgendjmd mit 1024px meint es gäbe Scrollbalken.
      Den fehler hab ich als Link hinzugepckt.
      WHILE (!$asleep) { $sheep++; }

      Kommentar


      • #4
        erstmal dein Script http://de3.php.net/manual/en/languag...es.array.donts entsprechend korrigieren, dann können wir weiter gucken, falls der Fehler noch da ist.

        Kommentar


        • #5
          Gut korrigiert....

          Läuft trotzdem nicht! Der Oktober wird weiterhin nur bis zum 26. angezeigt.
          WHILE (!$asleep) { $sheep++; }

          Kommentar


          • #6
            Dein Code ist unlesbar und enthält sehr viel Mist. Da kann doch niemand durchsteigen.

            Zu deinem Problem: du gehst hier fälschlicherweise davon aus, dass ein Tag 60 * 60 * 24 (= 86400) Sekunden hat. Das ist bei der Zeitumstellung aber nicht der Fall. Und die ist nun mal am letzten Sonntag im Oktober - genau da, wo dein Code versagt.

            Also am besten nochmal von vorne anfangen und vorher überlegen, was der Code eigentlich machen soll. Und beim Rechnen mit Timestamps nicht einfach Sekunden dazuzählen, sondern die Datumsfunktionen, insbesondere mktime und strtotime, benutzen.
            hopka.net!

            Kommentar


            • #7
              ok wenn die Annahme daß ein Tag 86400sec. dauert falsch ist, was ja definitiv bewiesen ist...
              Kann mir jmd ne bessere Methode verraten!?
              Ich könnte mir schon vorstellen im $day-wert von mktime() immer +1 weiterzuschreiten, jedoch wie soll ich vorab wissen bis wohin ich gehen darf/soll? Manche Monate haben mehr Tage als andere... ^^
              WHILE (!$asleep) { $sheep++; }

              Kommentar


              • #8
                Vielleicht ist auch diese Klasse recht nützlich für dich, damit bleibts übersichtlich!

                Kommentar


                • #9
                  irre ich mich oder gibt nicht date ein paar funktionen vor, um festzustellen wieviel tage ein bestimmter monat hat :P

                  Kommentar


                  • #10
                    es ist sogar so dass wenn man z.b. 32 mai eingibt automatisch der 1. juni genommen wird oder irre ich mich?
                    ansonsten hast du recht das man mit "t" bei date die anzahl der tage im monat erhält.
                    ansonsten wär da noch strtotime("+1 day", $timestamp)
                    ich habe mal bei nem terminplaner immer mit überschreiten von 24uhr gearbeitet was mir bei den zeitumstellungstagen dann auch aus dem ruder lief.
                    zudem kann man prüfen ob das datum in die sommerzeit fällt oder nicht usw
                    Die Milch bleibt ranzig!

                    Kommentar

                    Lädt...
                    X