kostenloser Webspace werbefrei: lima-city


Fatal error: Call to undefined function cal_days_in_month()

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nt-clan

    nt-clan hat kostenlosen Webspace.

    Hi
    Ich habe ein tool installiert, doch leider bekomm ich diese fehlermeldung:
    Fatal error: Call to undefined function cal_days_in_month() in /home/webpages/lima-city/nt-clan/html/******.php on line 1161


    dort steht folgendes:
    $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);


    was soll ich nun machen? wer hilft mir dieses modul zum laufen zu bringen?

    Gruss
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Das ist keine PHP-interne tag/funktion">Funktion. Man kann unter PHP selber Funktionen entwickeln, diese Funktion kann jedoch nirgendwo gefunden werden. Wende dich am besten an den/die Entwickler des Scriptes oder gebe uns genauere Informationen über dein Script.
  4. Autor dieses Themas

    nt-clan

    nt-clan hat kostenlosen Webspace.

    Kann mir jemand per icq witerhelfen?

    Ich wäre sehr froh, und auch zu grösstem dank verpflichtet
  5. Die Funktion steht auf lima nicht zur Verfügung, da es keine wirkliche Standardfunktion ist. Um sie zu aktivieren müsste PHP auf dem Server mit dem Parameter --enable-calendar neu comiliert werden. Auf lima ist das leider nicht möglich.
  6. Hallo nt-clan,


    Diese Funktion gibt die Anzahl der Tage in einem Monat eines Jahres für den angegebenen Kalender zurück. (Quelle php.net)

    Du könntest Probieren dir die Funktion selber zu schreiben. Dürfte nicht so kompliziert sein, da hier nur der Gregorianische Kalender verwendet wird. (= unserer)

    if(!function_exists("cal_days_in_month"))
    {
     function cal_days_in_month($calendar, $month, $year)
     {
     $newtag = 28;
     for($i = 28; $i <= 31; $i++)
     {
      $timestmp = mktime(0,0,0, $Monat, $i, $Jahr);
      $newtag = intval(date("j", $timestmp));
      if($newtag < $i) break;
     }
     return $i-1;
     }
    }


    Diesen Code fügst du zum Beispiel in diese Datei ein in der der Fehler auftritt (am anfang nach dem <?php oder <?).

    Sie macht genau das selbe wie die andere PHP Funktion. Achtung allerdings nur für den Gregorianischen Kalender.
  7. http://de.php.net/manual/de/function.cal-days-in-month.php

    Diese Funktion gehört zur PHP-Kalender-Erweiterung.
    http://de.php.net/manual/de/book.calendar.php

    Diese ist nicht Bestandteil des PHP-Kerns. Aber alle Webhoster (die ich kenne) außer Lima haben sie installiert.
    Keine Ahnung warum.

    Ich hab meine eigene Kalender-Library.
    Um die Anzahl der Tage eines Monats zu berechnen, musst du zuerst feststellen, ob ein Schaltjahr ist.
    Das geht für den Gregorianischen Kalender so:

    /// returns 1 if given year is a leap year in a proleptic gregorian calendar; 0 otherwise
      /// return INT(0...1)
      function leap_year(
        $year = NULL
      ) {
        if (
            $year & 0x03 || //0 !== $year % 4 ||
            0 === $year % 100 &&
            0 !== $year % 400
        ) {
          return 0;
        }
        return 1;
      }


    Dann kannst du an die Monate gehen. Meine Funktion hat andere Parameter als cal_days_in_month() und kann nur im Gregorianischen Kalender rechnen, also aufpassen:

    * cal_days_in_month($calender, $monat, $jahr);
    * days_in_month($jahr, $monat, $optionen); // Optionen einfach weglassen

    /// number of days in given month
      function days_in_month(
        $year = NULL,
        $month = NULL,
        $options = 0 /// 1: use %-division on $month allowing a carryover
      ) {
        if (!empty($options)) {
          $month = $month % 12;
          if ($month < 0) {
            $month += 12; // mathematically correct remainder of the modulo division
          }
          if (0 === $month) { // normalize from 0...11 (dec...nov) to 1...12 (jan...dec)
            $month = 12;
          }
        }
        elseif ($month < 1 || $month > 12) {
          return FALSE;
        }
    
        static $months_containing_30_days = array (4, 6, 9, 11);
    
        if (in_array($month, $months_containing_30_days, TRUE)) {
          return 30;
        }
        if (2 === $month) {
          return 28 + leap_year($year);
        }
        return 31;
      }
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!