Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Feiertage berechnen und ausgeben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Feiertage berechnen und ausgeben

    Hallo PHP-Experten,
    habe da eine frage wie kann ich feiertage berechnen für NRW und diese dann in mein Kalender nur farblich sichtbar machen. Habe leider keine Ahnung.
    Hintergrund: Ich habe ein Kalender erstellt, wo ich meine Termine und meinen Urlaub eintragen möchte. Mein Urlaub speichere ich in eine DB und gib dieses aus. Nun möchte ich aber das er mir auch die feiertage anzeigt. DAS IST MEIN PROBLEM
    Mein Kalender Script:

    PHP-Code:
            <table border='1' align='center'>
                <tr>
                    <td><input style='width:50px;' type='button' value='<' name='back' onclick="goLastMonat(<?php echo $monat.",".$jahr;?>)"></td>
                    <td colspan='5'><?php echo $monate.", ".$jahr ?></td>
                    <td><input style='width:50px;' type='button' value='>' name='next' onclick="goNextMonat(<?php echo $monat.", ".$jahr;?>)"></td>
                </tr>
                <tr>
                    <td width='50px'>Mo</td>
                    <td width='50px'>Di</td>
                    <td width='50px'>Mi</td>
                    <td width='50px'>Do</td>
                    <td width='50px'>Fr</td>
                    <td width='50px'>Sa</td>
                    <td width='50px'>So</td>
                </tr>
                <?php 
                           
                    
    //erstellung der Tage
                    
    echo "<tr>";
                    for(
    $i 1$i<$tage+1$i++, $zaehler++)
                    {
                        
    $timeStamp strtotime("$jahr-$monat-$i");
                        if(
    $i == 1)
                        {
                            
    $ersterTag date("w",$timeStamp);
                            
                            for(
    $j 0$j $ersterTag$j++, $zaehler++)
                            {
                                echo 
    "<td>&nbsp;</td>";
                            }
                        }
                        if(
    $zaehler %==0)
                        {
                            echo
    "<tr></tr>";
                        }
                        
    $monatstring $monat;
                        
    $monatlaenge strlen($monatstring);
                        
    $tagstring $i;
                        
    $taglaenge strlen($tagstring);
                        if(
    $monatlaenge <= 1)
                        {
                            
    $monatstring ="0".$monatstring;
                        }
                        if(
    $taglaenge <= 1)
                        {
                            
    $tagstring ="0".$tagstring;
                        }
                        
    $heutedatum date("Y-m-d");
                        
    $datum_vergleichen $jahr .'-'.$monat'-'.$tagstring;
                        echo 
    "<td align='center' ";
                        if(
    $heutedatum == $datum_vergleichen)
                        {
                            
    //Aktuelles Datum farblich abheben
                            
    echo "class='heute'";
                        }
                        else
                        {
                            
    //Termine farblich abheben
                            
    $sql="SELECT * FROM tbl_Urlaubsplan WHERE Datum='$datum_vergleichen'";
                            
                            
    $ist_termin=mysqli_num_rows(mysqli_query($verbindung,$sql));
                            
                            if(
    $ist_termin >=1)
                            {
                                echo 
    "class='termin'";
                            }
                        }
                        echo
    "><a href='".$_SERVER['PHP_Self']."?month=".$monatstring."&day=".$tagstring."&year=".$jahr."&v=true'>".$i."</td>";
                    }
                    echo
    "</tr>";
                
    ?>
            </table>
    Vielen dank schon im Vorraus

  • #2
    Zitat von ac2111 Beitrag anzeigen
    wie kann ich feiertage berechnen für NRW
    Es gibt keine Möglichkeit der 'Berechnung' von Feiertagen für ein bestimmtes Bundesland (Ostern ausgenommen).
    Die Feiertage muß du dir schon irgendwie als Tabelle holen und pflegen.

    Edit: Das hab ich nach 3 Sek Suche noch gefunden:
    Wochendenden und Feiertage mit PHP berechnen

    Kommentar


    • #3
      Zitat von jspit Beitrag anzeigen
      Es gibt keine Möglichkeit der 'Berechnung' von Feiertagen für ein bestimmtes Bundesland (Ostern ausgenommen).
      Die Feiertage muß du dir schon irgendwie als Tabelle holen und pflegen.
      ok verstanden.
      Dann anders gesagt wie bekomme ich das hin das z.b Allerheiligen ist ja jedes Jahr anders wie berechne ich das und gebe das dann in meinem Kalender aus

      Kommentar


      • #4
        Wieso ist Allerheiligen jedes Jahr anders?
        http://www.schnelle-online.info/NRW/Feiertage.html

        Dort steht der 01.11 fest.
        Wenn du nicht weißt, wie bestimmte Tage berechnet werden, schaue in der Wikipedia nach, wann dieser Tag fällt.

        Dann hast du auch die Bedingungen, um den Tag zu berechnen.

        Kommentar


        • #5
          Zitat von jspit Beitrag anzeigen

          Edit: Das hab ich nach 3 Sek Suche noch gefunden:
          Wochendenden und Feiertage mit PHP berechnen
          habe ich auchgefunden mein Problem ist nur das dann in meinem Kalender auszugeben

          Kommentar


          • #6
            Naja es gibt "fixe" Feiertage (01.11., 24.12., 01.01. etc..) und Datums-Variable (Ostern, Pfingsten (das wiederrum von Ostern abhängt (was wiederrum vom Vollmond und den Jahreszeiten abhängt)). Die fixen hast Du ja schon als Datum und für die Variablen entweder Wikipedia schauen und/oder Formel googeln

            zB google "php feiertage berechnen OR ermitteln"
            http://www.patrick-gotthard.de/5680/...-php-berechnen

            oder - Ansatz Spalte "Datum"
            http://msdn.microsoft.com/de-de/library/bb979477.aspx

            etc...

            LG
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Du wirst nicht umhin kommen für jeden Tag zu testen, ob dies ein "freier Tag" ist. Am Besten über eine funktion. Nutze dann eine CSS-Klasse um dein Eintrag farblich hervorzuheben oder was auch immer.

              Kommentar


              • #8
                ok habe aber noch eine frage mir ist gerade aufgefallen, dass mein kalender falsch ist und zwar zeigt der mit an das Heute 19.07.2012 Freitag ist und nicht Donnerstag.
                Bin mein Code nochmal durchgegangen aber habe kein Fehler gefunden habt ihr eine Ahnung

                Kommentar


                • #9
                  guck mal / bzw setze die richtige Locale - dein PHP glaubt offenbar in Japan zu stehen , dort ist ja schon "morgen"
                  "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                  Kommentar


                  • #10
                    Füg das zu Beginn des Scriptes mal ein und versuch es nochmals...

                    PHP-Code:
                    date_default_timezone_set('Europe/Berlin'); 
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Zitat von hausl Beitrag anzeigen
                      Füg das zu Beginn des Scriptes mal ein und versuch es nochmals...

                      PHP-Code:
                      date_default_timezone_set('Europe/Berlin'); 
                      leider keine Änderung

                      Kommentar


                      • #12
                        dann lass dir wenigstens mal ausgeben, was bei den beiden betreffenden Zeichenketten drin steht ...

                        du vergleichst ja date("Y-m-d") mit dem zusammengebastelten String für "heute"

                        da kann durch deinen "typunsicheren" Vergleich eventuell auch noch die automatische Typkonvertierung dazwischen hauen....
                        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                        Kommentar


                        • #13
                          Hö?, und was gibt das aus:

                          PHP-Code:
                          date_default_timezone_set('Europe/Berlin');  
                          echo 
                          date('Y-m-d, H:i:s');

                          // hier: 2012-07-19, 15:41:10 
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Zitat von eagle275 Beitrag anzeigen
                            dann lass dir wenigstens mal ausgeben, was bei den beiden betreffenden Zeichenketten drin steht ...

                            du vergleichst ja date("Y-m-d") mit dem zusammengebastelten String für "heute"

                            da kann durch deinen "typunsicheren" Vergleich eventuell auch noch die automatische Typkonvertierung dazwischen hauen....
                            sry bin relativ neu im thema php

                            das heißt im klaren

                            Kommentar


                            • #15
                              bitte beide ausgeben lassen, und auch mal anschauen, was dein if dort vergleicht
                              PHP-Code:

                              $heutedatum 
                              date("Y-m-d");
                              $datum_vergleichen $jahr .'-'.$monat'-'.$tagstring;
                              echo 
                              '<pre>';
                              var_dump($heutedatum);
                              var_dump($datum_vergleichen);
                              var_dump($heutedatum==$datum_vergleichen);
                              echo 
                              '</pre>';
                              echo 
                              "<td align='center' ";
                              if(
                              $heutedatum == $datum_vergleichen
                              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                              Kommentar

                              Lädt...
                              X