Kalender Skript (Meinungen|Ratschläge)

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

  • Kalender Skript (Meinungen|Ratschläge)

    Ersteinmal Guten Tag und schön so kurz vor weihnachten ^^.

    Halben Tag damit verbracht, selber ein kleines Jahreskalender Skript zu schreiben.
    Nach mehren versuchen und unzähligen verzweiflungsakten hat es dann doch irgenntwie geklapt und raus gekommen ist nun dieser kleine *g* PHP Code

    PHP-Code:
    function cal_tab($monat)
      {
      
    $mo=strftime("%B",mktime(000$monat)); //Wandelt den Monat von Zahl ins Wort.
      
    $jahr=date("Y"); // Sorgt für das Aktuelle Jahr
      
    echo "<table width='100%' border='0'>";
      echo 
    "<tr>";
      echo 
    "<th colspan='7'>$mo</th>"// Ausgabe des Monats
      
    echo "</tr>
            <tr>"
    ;
      for(
    $tag_i=0;$tag_i<7;$tag_i++)
        {
        
    $tage=array("Mo","Di","Mi","Do","Fr","Sa","So");
        echo 
    "<th>".$tage[$tag_i]."</th>"
        }
      echo 
    "</tr>";
      
    $da=1;
      for(
    $tab_g=0;$tab_g<6;$tab_g++)
        {
        echo 
    "<tr>";
        for(
    $tab_g_td=0;$tab_g_td<7;$tab_g_td++)
          {
          echo 
    "<td width='14,2%'>";
          
    // Bis hier hin dürfte soweit alles Klar sein
    if($tage[$tab_g_td]==strftime("%a",mktime(0,0,0,$monat,$da,$jahr)))
    //Prüft ob der angegeben Wochentag mit der zahl
    //übereinstimmt (ob Montag z.b wirklich der 01 des
    //Monats ist ansonsten bleibt es nachher im Else Block leer 
            
    {
    // Dieses Kleine Teil macht mir zwar etwas Sorgen aber
    // Schien mir aber die Einziege Plausieble Lösung 
    //das er nach erreichen des letzten Tages aufhört
            
    if(
    (
    $da>31&&($monat=="1"||$monat=="3"||$monat=="5"
    ||$monat=="8"||$monat=="10"||$monat=="12"))
    || 
    (
    $da>30&&($monat=="4"||$monat=="6"||$monat=="7"
    ||$monat=="9"||$monat=="11"))
    || 
    (
    $da>28 && $monat=="2")
              )
              {
              echo 
    "&nbsp;";
              }
            else
              {
              echo 
    $da;
              }
            }
          else
            {
            echo 
    "&nbsp;";
            
    $da=0
            }
          echo 
    "</td>";
          
    $da++;
          }
        echo 
    "</tr>";
        }
      echo 
    "</table>";
      }  
      
    function 
    jahresplan()
      {
     
    setlocale(LC_ALL'GE'); //Setzt alles Auf Deutsch
      
    $i=1;
      echo 
    "<table width='100%' border='0'>";
      for(
    $tab_g=0;$tab_g<3;$tab_g++)
        {
        echo 
    "<tr>";
        for(
    $tab_g_td=0;$tab_g_td<4;$tab_g_td++)
          {
          echo 
    "<td width='16,7%'>";
          echo 
    cal_tab($i);
          echo 
    "</td>";
          
    $i++;
          }
        echo 
    "</tr>";
        }
      echo 
    "</table>";
      } 
    So sollte nun irgenntwer vorschläge haben wie ich diesen Kleinen SkriptSalat noch vereinfachen kann falls es denn möglich ist so sage er oder sie mir bitte wie und wo ich eventuell hilfe stellungen finde

    ansonsten have fun mit dem skript xP
    Bitte Beachten.
    Foren-Regeln
    Danke

  • #2
    1. Warum mehrere echo's hintereinander, das kann man mit einem echo lösen
    2. Ein Array in einer Schleife definieren, ist nicht gerade schön
    3. Statt der riesigen if-Abfrage würde ich eher switch nehmen
    4. Ordentlicher Einrücken würde die Sache lesbarer machen

    Kommentar


    • #3
      der setlocale-Aufruf mit GE ist wohl auch ein Witz, oder? Da sollte wohl eher de_DE übergeben werden...

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

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

      Kommentar


      • #4
        Original geschrieben von ghostgambler
        der setlocale-Aufruf mit GE ist wohl auch ein Witz, oder? Da sollte wohl eher de_DE übergeben werden...
        Nein die setlocale GE ist kein witz xP da er auf meinem rechner mit de_DE einstellung rein garnix tut null nada ... naja bis auf mir die englischen namen für die monate raus werfen xP

        und ich brauch deutsche und naja was soll ich Sagen GE war halt die einziege einstellung die er bei mir sauber nimmt frag mich nicht warum -.- ich verstehe es selber nicht obwohl ich es eigentlich auch mit de_DE gelernt habe.

        ---

        das mit der switch werd ich wohl einbauen xP garnicht dran gedacht einfach mal ausprobieren ^^
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #5
          PHP-Code:
          $monat=="1"||$monat=="3"||$monat=="5" ..... 
          Ich denke hier würde es auch

          PHP-Code:
          $monat%!= 
          tun.

          Kommentar


          • #6
            Moin,

            werden da eigentlich Schaltjahre berücksichtigt?
            Guck Dir auch mal die Funktion "cal_days_in_month()" an, vielleicht kannst Du noch was abkürzen?

            Gruß,
            Dennis

            Kommentar


            • #7
              Original geschrieben von Dennis79
              Moin,

              werden da eigentlich Schaltjahre berücksichtigt?
              Guck Dir auch mal die Funktion "cal_days_in_month()" an, vielleicht kannst Du noch was abkürzen?

              Gruß,
              Dennis
              args den 29 Ferbuar xP denn hab ich ja vollkommen vergessen dieser miese tag ><... jetzt weis ich wieder warum ich Kalender proggen eingentlich immer gehasst habe xP

              -.-

              werd ich berücksichten ...

              was die ausgabe der tage betrifft XP die abfrage is wirklich schrecklich da werd ich mir noch was besseres einfallen lassen dürfen ... aber 1. der kunde der des will hat null blick für php ... der will nur sein ergebnis ...

              ich hasse Kundenverwaltungsprogramme in PHP schreiben zu müssen -.-
              Bitte Beachten.
              Foren-Regeln
              Danke

              Kommentar


              • #8
                PHP-Code:
                function tage_im_monat($monat$jahr)
                  {
                       if(
                checkdate($monat31$jahr)) return 31;
                       if(
                checkdate($monat30$jahr)) return 30;
                       if(
                checkdate($monat29$jahr)) return 29;
                       if(
                checkdate($monat28$jahr)) return 28;
                       return 
                0// error
                  
                }

                function 
                cal_tab($monat)
                  {
                //Umwandlung von der Zahl in den Entsprechenden Monat als Wort.
                //z.b 4 in April
                  
                $mo=strftime("%B",mktime(000$monat)); 
                //Angabe für das Jahr (kann mit variablen belegt werden ^^
                  
                $jahr="2007";
                //aufbau des Tages array  
                  
                $tage=array("Mo","Di","Mi","Do","Fr","Sa","So");
                //setzen des Zähles für die tage im monat auf 1   
                  
                $da=1;
                  
                  echo 
                "<table>
                          <tr>
                            <th>
                $mo</th> // Ausgabe des Monats
                          </tr>
                          <tr >"
                ;
                //for schleife für den durchlauf der Tage (Mo,Di usw.)    
                  
                for($tag_i=0;$tag_i<7;$tag_i++)
                    {
                    echo 
                "<th>".$tage[$tag_i]."</th>";
                    }
                  echo 
                "</tr>";

                //aufbau der tabelle für die tage 
                  
                for($tab_g=0;$tab_g<6;$tab_g++)
                    {
                    echo 
                "<tr>";
                    for(
                $tab_g_td=0;$tab_g_td<7;$tab_g_td++)
                      {
                      echo 
                "<td>";
                // Die neue Dank euer anregung vereinfachte  If abfrage, 
                // Sie prüft ob ein Tag z.b der 1 des Monats auch ein montag ist. 
                //zweitbedigung das der Tag der übergeben wird über
                // $da auch im monat vorhanden ist und nicht grösser als in der
                //Funtion Tage_im_Monat angegeben. 
                if($tage[$tab_g_td]==strftime("%a",mktime(0,0,0,$monat,$da,$jahr))
                && 
                (
                tage_im_monat($monat,$jahr)>=$da))
                        {
                        echo 
                $da// ausgabe des tages z.b. 15
                        
                $da++; // danach erhöhung 
                        
                }
                      else
                        {
                // ansonsten leerzeichen ausgabe.
                // damit die tabellen zelle auch gezeichnet wird.
                        
                echo "&nbsp;"
                        }
                      echo 
                "</td>";
                       }
                    echo 
                "</tr>";
                    }
                  echo 
                "</table>";
                  }  
                  
                function 
                jahresplan()
                  {
                //Vieleicht kann mir ja jetzt endlich mal jemand verraten 
                //Warum es anscheind nur mit 'GE' funzt das die namen
                //vom Englischen ins Deutsche übersetzt werden
                // versuch ich es mit der eigentlich Üblichen 'de_DE'
                //lässt er alle felder leer und Gibt Englische Monats Namen aus 
                  
                setlocale(LC_TIME'GE');
                  
                $i=1;
                  echo 
                "<table>";
                  for(
                $tab_g=0;$tab_g<3;$tab_g++)
                    {
                    echo 
                "<tr>";
                    for(
                $tab_g_td=0;$tab_g_td<4;$tab_g_td++)
                      {
                      echo 
                "<td>";
                      echo 
                cal_tab($i);
                      echo 
                "</td>";
                      
                $i++;
                      }
                    echo 
                "</tr>";
                    }
                  echo 
                "</table>";
                  } 
                So sollte noch wem was auffallen bis auf mein problem mit der setlocal einstellung was mich selber ziemlich verwundert so teile er oder sie es mir mit bin für ratschläge immer offen ^^
                Bitte Beachten.
                Foren-Regeln
                Danke

                Kommentar


                • #9
                  falls es dir weiterhilft, anbei ein kalenderscript, dass ich um 204 herum zusammengehauen habe. sogar die feiertage sind schon drin.

                  gruß
                  peter
                  Angehängte Dateien
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Danke für das Skript ^^

                    Feiertage sind in der Späteren Verwendung in der ich dieses Skript brauche nicht von relevanz.

                    aber ich behalt das im hinterkopf vieleicht brauch ich es anderweitig ja mal.

                    is fürn belegungsplan einer ferienanlage xP Und ferien kann man ja bekanntlich immer mache ^^ ob nun feiertag ist oder nicht.

                    die haben 365 oder halt alle 4 jahre 366 tage offen ...
                    (erlich bin froh drüber)

                    ---

                    ich habs gerade gefunden waurm das set local bei mir mit de_DE spinnt xP kein wunder wenn man die stelle in php.net einfach überliest ^^

                    ich liebe windoof ich könnt im dreieck kotzen ... muss ich mir jetzt nur merken *notiz im kopf anleg windoof ist kein geeignetes programm für ein Apache zu testzwecken ><*
                    Bitte Beachten.
                    Foren-Regeln
                    Danke

                    Kommentar

                    Lädt...
                    X