Array in while-schleife abfragen

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

  • Array in while-schleife abfragen

    Hallo,

    ich habe hier ein kleines Problem bei der Erstellung eines Kalenders.
    Eigentlich funktioniert alles wunderbar, nur kriege ich die Abfrage des
    Feiertagsarrays in der while-Schleife nicht hin (habe schon for und foreach
    probiert, jedoch würfelt er mir dann die restlichen Tage durcheinander.

    Bin für jede Anregung dankbar

    PHP-Code:
    <?
        // Monatsberechnung

        $tag=01;
        $jahr=2010;
        $monat=04;

        $monatsauswahl=mktime(0,0,0,$monat,01,$jahr);



        $monatstage = date("t",$monatsauswahl);
        
        // Feiertage

        $neujahr = mktime(0,0,0,1,1,$jahr); // 1. Januar
        $heiligendreikoenige = mktime(0,0,0,6,1,$jahr); // 6.Januar
        $rosenmontag = date(easter_date($jahr)-4147200); // 48 Tage vor Ostern
        $aschermittwoch = date(easter_date($jahr)-3974400); // 46 Tage vor Ostern
        $karfreitag = date(easter_date($jahr)-172800); // 2 Tage vor Ostern
        $ostersonntag = date(easter_date($jahr));
        $ostermontag = date(easter_date($jahr)+86400); // 1 Tag nach Ostern
        $maifeiertag = mktime(0,0,0,5,1,$jahr); // 1. Mai
        $christihimmelfahrt = date(easter_date($jahr)+3369600); // 39 Tage nach Ostern
        $pfingstsonntag = date(easter_date($jahr)+4233600); // 49 Tage nach Ostern
        $pfingstmontag = date(easter_date($jahr)+4320000); // 50 Tage nach Ostern
        $fronleichnam = date(easter_date($jahr)+5184000); // 60 Tage nach Ostern
        $mariahimmelfahrt = mktime(0,0,0,8,15,$jahr); // 15.August
        $deutscheeinheit = mktime(0,0,0,10,3,$jahr); // 3. Oktober
        $reformationstag = mktime(0,0,0,10,31,$jahr); // 31. Oktober
        $allerheiligen = mktime(0,0,0,11,1,$jahr); // 1. November
        $ersterweihnachtstag = mktime(0,0,0,12,25,$jahr); // 25. Dezember
        $zweiterweihnachtstag = mktime(0,0,0,12,26,$jahr); // 26. Dezember    

        $feiertag = Array("$neujahr", "$heiligendreikoenige", "$rosenmontag",
     "$aschermittwoch", "$karfreitag", "$ostersonntag", "$ostermontag", 
    "$maifeiertag", "$christihimmelfahrt", "$pfingstsonntag", "$pfingstmontag", 
    "$fronleichnam", "$mariahimmelfahrt", "$deutscheeinheit", "$reformationstag", 
    "$allerheiligen", "$ersterweihnachtstag", "$zweiterweihnachtstag");

        $ftcounter=count($feiertag);

        // LOESCHEN ->

        echo ("Ostern :".$ostersonntag."Neujahr :".$neujahr);
        
        echo ("Tag :".$tag);
        echo ("Tage des Monats :".$monatstage);
        echo ("Feiertag : ".$feiertag[0]);
        echo ("Feiertagszaehler:".$ftcounter);
        echo ("<br>");
        
        // <- LOESCHEN

        echo ("<table border><tr><td>".date("F Y",$monatsauswahl)."</td>");

        while ($tag<=$monatstage) {

        $tageszaehler=mktime(0,0,0,$monat,$tag,$jahr);

            // Feiertagscheck

                if ($tageszaehler==$feiertage) {
                    echo ("<td bgcolor=#FF0000>".$tag."</td>");
                    $tageszaehler++;
                    $tag++;
                    }

            // Sonntagscheck

                elseif (date("w",$tageszaehler)==0) {
                    echo ("<td bgcolor=#CCCCCC>".$tag."</td>");    
                    $tageszaehler++;
                    $tag++;
                    }

            // Wochentage

                else {
                    echo ("<td bgcolor=#FFFFFF>".$tag."</td>");    
                    $tageszaehler++;
                    $tag++;
                    }
        }

        echo ("</tr></table>");

        
        echo date("D d M Y", easter_date($jahr));
        echo date(easter_date($jahr));
    Vielen Dank schonmals,

    cyberdyne

  • #2
    $feiertag ist nicht das selbe wie $feiertage, außerdem solltest du dir in_array() ansehen und die Basics über Variblen und Strings wiederholen - "$var" ist in keiner mir bekannten Sprache ein sinnvolles Konstrukt.

    Kommentar


    • #3
      Suchst du sowas? Hab das mal irgendwann gescripted:
      PHP-Code:
      <?
      function kirchenJahr($year = NULL,$output = false)
      {
          if(!empty($year))
              $year = $year;
          else
              $year = date("Y");
          
          // Kirchenjahr
          $datum["Hl. Abend"]     = mktime(0,0,0,12,24,$year);
          $datum["Weihnachten"]     = mktime(0,0,0,12,25,$year);
          $datum["Neujahr"]         = mktime(0,0,0, 1, 1,$year);
          $datum["Erscheinung des Herrn"] = mktime(0,0,0,1,6,$year);
          
          $now = $datum["Erscheinung des Herrn"];
          do
          {
              $now = strtotime("+1 day",$now);
          } while(date("w",$now) != 0);
          $datum["Taufe des Herrn"] = $now; 
          
          $datum["Darstellung des Herrn"] = mktime(0,0,0,2,2,$year);
          
          $ostern = mktime(0,0,0,3,(21+easter_days($year)),$year);
          $fastensonntage = 6;
          while($i < 7)
          {
              $ostern = strtotime("-1 day",$ostern);
              if(date("w",$ostern) == 3)
              {
                  $i++;
                  if($i == 7)
                  {
                      $datum["Aschermittwoch"] = $ostern;
                      $fastenzeit["Start"] = $ostern;
                  }
              }
              elseif(date("w",$ostern) == 0)
              {
                  if($fastensonntage == 6)
                      $datum["Palmsonntag"] = $ostern;
                  else
                      $datum[$fastensonntage.". Fastensonntag"] = $ostern;
                  $fastensonntage--;
              }
              elseif(date("w",$ostern) == 4 && $gruendonnerstag == false)
              {
                  $gruendonnerstag = true;
                  $datum["Gründonnerstag"] = $ostern;
                  $datum["Karfreitag"] = strtotime("+1 day",$ostern);
                  $datum["Karsamstag"] = strtotime("+2 day",$ostern);
                  $datum["Ostersonntag"] = strtotime("+3 day",$ostern);
                  $fastenzeit["Ende"] = $datum["Ostersonntag"];
                  $datum["Ostermontag"] = strtotime("+4 day",$ostern);
                  $datum["Weißer Sonntag"] = strtotime("+2 week",$datum["Ostersonntag"]);
                  $datum["Christi Himmelfahrt"] = strtotime("+39 day",$datum["Ostersonntag"]);
                  $datum["Pfingsten"] = strtotime("+49 day",$datum["Ostersonntag"]);
                  $datum["Pfingstmontag"] = strtotime("+50 day",$datum["Ostersonntag"]);
                  $datum["Fronleichnam"] = strtotime("+60 day",$datum["Ostersonntag"]);
              }
          }
          
          $datum["Mariä Himmelfahrt"] = mktime(0,0,0,8,15,$year);
          
          $erntedank = mktime(0,0,0,10,1,$year);
          while(date("w",$erntedank) != 0)
          {
              $erntedank = strtotime("+1 day",$erntedank);
          }
          $datum["Erntedankfest"] = $erntedank;
          $datum["Allerheiligen"] = mktime(0,0,0,11,1,$year);
          
          $adventssonntage = 4;
          $hlabend = $datum["Hl. Abend"];
          while($adventssonntage > 0)
          {
              if(date("w",$hlabend) == 0)
              {
                  $datum[$adventssonntage.". Advent"] = $hlabend;
                  $adventssonntage--;
              }
              $hlabend = strtotime("-1 day",$hlabend);
          }
          
          if($datum["4. Advent"] == $datum["Hl. Abend"])
          {
              $datum["Hl. Abend / 4. Advent"] = $datum["4. Advent"];
              $datum["4. Advent"] = NULL;
              $datum["Hl. Abend"] = NULL;
          }
          
          if(time() >= $fastenzeit["Start"] && time() <= $fastenzeit["Ende"])
              $arr[] = "Fastenzeit";
          
          $aktuell = array_keys($datum,mktime(0,0,0));
          
          $arr = array_merge($arr,$aktuell);
              
          if($output)
          {
          ?>
          <table>
              <?
              // Ausgabe
              asort($datum);
              foreach($datum as $what => $date)
              {
                  echo "\t<tr>\n";
                  echo "\t\t<td style=\"width: 170px;\">".$what.":</td>\n";
                  echo "\t\t<td style=\"width: 200px;\">".wochentag(date("w",$date)).",</td>\n";
                  echo "\t\t<td style=\"width: 170px;\">".date("d.m.Y",$date)."</td>\n";
                  echo "\t</tr>\n";
              }
              ?>
          </table>
      <?
          }
          
          return $arr;
      }
      ?>
      Und so sieht die Ausgabe aus (zusätzlich noch mit Lesejahr):
      http://messdiener-buer.de/kirchenjahr.htm
      Liebe Grüße,
      SteKoe!

      PHP Tutorials
      Peter Kropff | Quakenet | Schattenbaum.net

      Kommentar


      • #4
        Hallo,

        @onemorenerd : Vielen Dank für den Tipp !! in_array funktioniert fantastisch !

        PHP-Code:
        // Feiertagscheck

                    
        if (in_array($tageszaehler$feiertag)) {
                        echo (
        "<td bgcolor=#FF0000>".$tag."</td>");
                        
        $tageszaehler++;
                        
        $tag++;
                        } 
        P.S. : was meinst Du mit
        "$var" ist in keiner mir bekannten Sprache ein sinnvolles Konstrukt.
        ??

        @stekoe2000 : Vielen Dank für das interessante Script, ist aber nicht genau
        dass, was ich suche

        Danke nochmals und bis bald,

        Gruss cb

        Kommentar


        • #5
          Original geschrieben von cyberdyne
          P.S. : was meinst Du mit ...
          "$var" ist einfach immer Unsinn!

          $foo="$bar" ist ein deutliches Zeichen für mangelnde Grundkentnisse.
          Richtig wäre $foo=$bar oder $foo=(string)$bar.

          Kommentar

          Lädt...
          X