erster tag eines Kalenders ist immer freitag, obwohl so nicht vorgesehen

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

  • erster tag eines Kalenders ist immer freitag, obwohl so nicht vorgesehen

    Ich wollte einen Kalender Programmieren und bin auch soweit fertig, nur ist bei mir jeder erste Tag im Monat auf den freitag gefallen und ich finde einfach den Fehler nicht...

    PHP-Code:
    <?php
    //übergabe der Parameter über die URL mittels GET
        
    $jahr=$_GET[year];
        
    $monat=$_GET[month];
    //setzen des Wertes $tag, damit dieser bei 1 anfaengt
        
    $tag="1";
    ?>
    <head>
        <title>
            Reservierungen für 
            <?php 
    //Austausch des Monats von einer Zahl zu einem Ausgeschriebenen deutschen Monat
                
    $monat2=$_GET[month];
                switch(
    $monat2){
                    case 
    "1"$monat2="Januar"; break;
                    case 
    "2"$monat2="Februar"; break;
                    case 
    "3"$monat2="Maerz"; break;
                    case 
    "4"$monat2="April"; break;
                    case 
    "5"$monat2="Mai"; break;
                    case 
    "6"$monat2="Juni"; break;
                    case 
    "7"$monat2="Juli"; break;
                    case 
    "8"$monat2="August"; break;
                    case 
    "9"$monat2="September"; break;
                    case 
    "10"$monat2="Oktober"; break;
                    case 
    "11"$monat2="November"; break;
                    case 
    "12"$monat2="Dezember"; break;
                }
    //Ausgabe der Überschrift für die Titelleiste als Monat (ausgeschrieben und deutsch)
                
    echo($monat2);
    //mit Leerzeichen 
                
    echo " "
    //und dem Jahr
                   
    echo($_GET[year]);
            
    ?>
        </title>
    </head>
    <body>
        <DIV align="center">
        <h1>
            <?php
    //Ausgabe der Überschrift
                
    echo($monat2); 
                echo 
    " "
                echo(
    $_GET[year])
            
    ?>
        </h1>
    <p>
    <!--Erstellen der Tabellenüberschrift-->
    <table Border=1>
        <tr>
            <td>
                MONTAG
            </td>
            <td>
                DIENSTAG
            </td>
            <td>
                MITTWOCH
            </td>
            <td>
                DONNERSTAG
            </td>
            <td>
                FREITAG
            </td>
            <td>
                SAMSTAG
            </td>
            <td>
                SONNTAG
            </td>
        </tr>
        <tr>
        <?php 
    //Zaehler wird auf Null gesetzt
            
    $zaehler=0;
    /*Die einzelnen Datumsteile werden in einer Variablen 
    zusammengefasst, damit strtotime damit was anfangen kann*/
            
    $datum2=$tag.".".$monat.".".$jahr;
    //ermitteln des benötigten Datums
            
    $maxtage=date('t'strtotime($datum2));
    /*Beginn der Schleife mit der Vorraussetzung, dass der wert $tag 
    nicht höher sein darf, als die gesammtzahl der Tage des gesuchten 

    Monats*/
            
    while($tag<=$maxtage){
    /*Abfrage ob der Zaehler bei Null gelandet ist, wenn ja, wird er 
    zurück gesetzt und eine neue Zeile in der Tabelle angefangen*/
                
    if($zaehler==7){
                    
    $zaehler=0;
                    echo 
    "</tr><tr>";
                }
    /*Abfrage nach dem Wochentag, wenn ja, dann wird das datum in 
    die Zelle geschrieben*/
                
    if (date('w'strtotime($datum))==$zaehler){
    //Nochmals zusammenführen der Datumsteile
                    
    $datum=$tag.".".$monat.".".$jahr;
    //Erzeugung einer Zelle mit Datum als Inhalt
                    
    echo "<td>"
    //Ausgabe des Datums
                    
    echo date('d'strtotime($datum));
                    echo 
    "<br>";
    //Dieser Block dient einzig der Fehlerdiagnose
                    
    echo date('w'strtotime($datum));
                    echo 
    "<br>";
                    echo 
    $zaehler;
    //Ab hier gehört wieder alles dazu
                    
    echo "</td>";
    //Hochsetzen des $tag-zaehlers
                    
    $tag=$tag+1
    //andernfalls wird eine leere Zelle erzeugt
                
    }else{
                    echo 
    "<td></td>";
                }
    //hochsetzen des Zaehlers
                    
    $zaehler=$zaehler+1;
                }
    //ausgabe des Tabellen endes 
                    
    echo "</tr></table>";
        
    ?> 
    </DIV>
    </body>
    </html>
    Zuletzt geändert von Grey_Wolf; 26.12.2007, 01:56.
    Jup, ich habe Google bis Seite 215 durchsucht und nichts gefunden...

  • #2
    Den Bananen-Code soll irgendjemand lesen können?

    Weißt du wozu die Taste mit dem Pfeil, links auf der Tastatur, über der Shift-Taste, auch Tab genannt, ist?
    Weißt du wofür die große breite Taste unten mittig auf der Tastatur, auch Leertaste genannt, ist?

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      sry, aber ich erspar mir dieses aufgedrösel des Quelltextes immer, weil ich darin meist keinen sinn sehe.
      hoffe, es ist nu übersichtlich
      Jup, ich habe Google bis Seite 215 durchsucht und nichts gefunden...

      Kommentar


      • #4
        sry, aber ich erspar mir dieses aufgedrösel des Quelltextes immer, weil ich darin meist keinen sinn sehe.
        tja - jetzt weißt ja warum es Sinn macht.
        Außerdem ist der Code nicht kommentiert und
        die Variablen sind saublöd benannt.

        Ich blick da nicht durch.

        Hast es schon mal mit Debuggen versucht ?

        Man läßt sich wichtige Variableninhalte per echo ausgeben.

        Und schreib oben drüber: error_reporting(E_ALL);

        Kommentar


        • #5
          Beim ersten Schleifendurchlauf existiert $f noch gar nicht.

          error_reporting(E_ALL);
          sag ich dazu nur...

          Vernünftig einrücken und Fehlerfrei coden ist schon die halbe Miete~

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Nu hab ichs gerade fertig dokumentiert...

            THX, hast recht.
            Nu muss ich nur gucken, dass ich das wieder zurechtgerückt bekomme, da nun alles einen tag weitergeschoben wurde
            aber danke erstmal
            Jup, ich habe Google bis Seite 215 durchsucht und nichts gefunden...

            Kommentar


            • #7
              "zähler" - Du machst aber nicht ernsthaft Umlaute in Variablennamen rein ?

              Kommentar


              • #8
                jetzt nimmer, mir is nur auf die schnelle das net aufgefallen
                Jup, ich habe Google bis Seite 215 durchsucht und nichts gefunden...

                Kommentar


                • #9
                  So, hier mal der entgültige (und funktionierende) Quelltext, falls es jemanden interessiert oder wer ein Kalendergrundgerüst braucht:

                  PHP-Code:
                  <?php
                  //error_reporting(E_ALL);
                  //übergabe der Parameter über die URL mittels GET
                      
                  $jahr=$_GET[jahr];
                      
                  $monat=$_GET[monat];
                  //setzen des Wertes $tag, damit dieser bei 1 anfaengt
                      
                  $tag="1";
                  ?>
                  <head>
                      <title>
                          Reservierungen für 
                          <?php 
                  //Austausch des Monats von einer Zahl zu einem Ausgeschriebenen deutschen Monat
                              
                  $monat2=$_GET[monat];
                              switch(
                  $monat2){
                                  case 
                  "1"$monat2="Januar"; break;
                                  case 
                  "2"$monat2="Februar"; break;
                                  case 
                  "3"$monat2="März"; break;
                                  case 
                  "4"$monat2="April"; break;
                                  case 
                  "5"$monat2="Mai"; break;
                                  case 
                  "6"$monat2="Juni"; break;
                                  case 
                  "7"$monat2="Juli"; break;
                                  case 
                  "8"$monat2="August"; break;
                                  case 
                  "9"$monat2="September"; break;
                                  case 
                  "10"$monat2="Oktober"; break;
                                  case 
                  "11"$monat2="November"; break;
                                  case 
                  "12"$monat2="Dezember"; break;
                              }
                  //Ausgabe der Überschrift für die Titelleiste als Monat (ausgeschrieben und deutsch)
                              
                  echo($monat2);
                  //mit Leerzeichen 
                              
                  echo " "
                  //und dem Jahr
                                 
                  echo($_GET[year]);
                          
                  ?>
                      </title>
                  </head>
                  <body>
                      <DIV align="center">
                      <h1>
                          <?php
                  //Ausgabe der Überschrift
                              
                  echo($monat2); 
                              echo 
                  " "
                              echo(
                  $_GET[jahr])
                          
                  ?>
                      </h1>
                  <p>
                  <!--Erstellen der Tabellenüberschrift-->
                  <table Border=1>
                      <tr>
                          <td>
                              MONTAG
                          </td>
                          <td>
                              DIENSTAG
                          </td>
                          <td>
                              MITTWOCH
                          </td>
                          <td>
                              DONNERSTAG
                          </td>
                          <td>
                              FREITAG
                          </td>
                          <td>
                              SAMSTAG
                          </td>
                          <td>
                              SONNTAG
                          </td>
                      </tr>
                      <tr>
                      <?php 
                  //Zähler wird auf Null gesetzt
                          
                  $zaehler=0;
                  /*Die einzelnen Datumsteile werden in einer Variablen 
                  zusammengefasst, damit strtotime damit was anfangen kann*/
                          
                  $datum2=$tag.".".$monat.".".$jahr;
                  //ermitteln des benötigten Datums
                          
                  $maxtage=date('t'strtotime($datum2));
                  /*Beginn der Schleife mit der Vorraussetzung, dass der wert $tag 
                  nicht höher sein darf, als die gesammtzahl der Tage des gesuchten Monats*/
                          
                  while($tag<=$maxtage){
                  /*Abfrage ob der Zähler bei Null gelandet ist, wenn ja, wird er zurück
                   gesetzt und eine neue Zeile in der Tabelle angefangen*/
                              
                  if($zaehler==7){
                                  
                  $zaehler=0;
                                  echo 
                  "</tr><tr>";
                              }
                  //Korrektur des Zählers
                              
                  switch($zaehler){
                                  case 
                  "1"$zaehler2="2"; break;
                                  case 
                  "2"$zaehler2="3"; break;
                                  case 
                  "3"$zaehler2="4"; break;
                                  case 
                  "4"$zaehler2="5"; break;
                                  case 
                  "5"$zaehler2="6"; break;
                                  case 
                  "6"$zaehler2="0"; break;
                                  case 
                  "0"$zaehler2="1"; break;
                                  }
                  //Nochmals zusammenführen der Datumsteile
                              
                  $datum=$tag.".".$monat.".".$jahr;
                  /*Abfrage nach dem Wochentag, wenn ja, dann wird das datum in 
                  die Zelle geschrieben*/
                              
                  if (date('w'strtotime($datum))==$zaehler2){
                  //Erzeugung einer Zelle mit Datum als Inhalt
                                  
                  echo "<td>"
                  //Ausgabe des Datums
                                  
                  echo date('d'strtotime($datum));
                                  echo 
                  "<br>";
                  /*Dieser Block dient einzig der Fehlerdiagnose
                                  echo date('w', strtotime($datum));
                                  echo "<br>";
                                  echo $zaehler;
                  Ab hier gehört wieder alles dazu*/
                                  
                  echo "</td>";
                  //Hochsetzen des $tag-zaehlers
                                  
                  $tag=$tag+1
                  //andernfalls wird eine leere Zelle erzeugt
                              
                  }else{
                                  echo 
                  "<td></td>";
                              }
                  //hochsetzen des Zaehlers
                                  
                  $zaehler=$zaehler+1;
                              }
                  //ausgabe des Tabellen endes 
                                  
                  echo "</tr></table>";
                      
                  ?> 
                  </DIV>
                  </body>
                  </html>
                  Jup, ich habe Google bis Seite 215 durchsucht und nichts gefunden...

                  Kommentar


                  • #10
                    "zähler" - Du machst aber nicht ernsthaft Umlaute in Variablennamen rein ?
                    Sollte imho kein Problem sein!

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      Sollte imho kein Problem sein!
                      Schlechter Stil. Spätestens, wenn jemand versucht die Datei als anderer Zeichensatz zu öffnen, ist alles kaputt. Auch sehr unlustig sind gemischte Line-Endings... da bricht PHP ggf. einfach ab und man merkt nicht mal was davon~


                      @TO
                      Man muss übrigens nicht jede Zeile kommentieren...
                      ein
                      }else{
                      echo "<td></td>";
                      }
                      mit "andernfalls wird eine leere Zelle erzeugt" zu kommentieren, macht den Code nicht verständlicher, sondern schlichtweg länger.
                      Für gewöhnlich können Programmierer Code lesen und lesen auch deutlich lieber Code, als Kommentare, dementsprechend solltest du die Kommentare eventuell doch auf wichtige Passagen zusammen kürzen~

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar

                      Lädt...
                      X