Prowadzę małą stronkę katolicką www.miserere.pl opartą na cms-ie php-fusion. Po php poruszam się intuicyjnie, czyli po omacku;-). Na stronie tutaj znalazłem skrypt kalendarza liturgicznego. Kalendarz składa się z pliku kalendarz.php z kodem:
, oraz pliku tekstowego z danymi dane.txt.
<? echo Kalendarz('<div id="kalendarz-tlo" class="margin-0"> </div><div id="kalendarz-lewy" class="margin-0">%n</div><div id="kalendarz-prawy" class="margin-0">%d %m %rr.</div>'); function Kalendarz($format, $d='', $m='', $r='') { global $dni, $tabela_waznosci, $liczby_rzymskie, $dni_tygodnia, $lista_miesiecy, $miesiace, $tydzien; //klasa Dzien class Dzien { var $nazwa; var $opis; var $typ; var $kiedy; function Dzien($nazwa, $kiedy, $typ, $opis='') { global $dni, $tabela_waznosci, $liczby_rzymskie, $dni_tygodnia, $lista_miesiecy, $miesiace, $tydzien; if($opis) $this->opis=$opis; else $this->opis=$typ.' '.$nazwa; $this->typ=$typ; } function oblicz($rok) //zmienia datę z formatu kalendarza ($this->kiedy) na datę normalnę (d.m) { global $dni, $tabela_waznosci, $liczby_rzymskie, $dni_tygodnia, $lista_miesiecy, $miesiace, $tydzien; if($c==2) //data, np.: 3 grudnia { $ilosc=$this->kiedy[0]; if($this->kiedy[1]=='tygodnie' || $this->kiedy[1]=='tygodni') $ilosc*=7; if($this->kiedy[2]=='przed') $ilosc*=-1; return dodaj($ilosc, $this->kiedy[3], $miesiace[$this->kiedy[4]], $rok); $nazwa=''; for($x=3;$x<$c;$x++) $nazwa.=$this->kiedy[$x].' '; list($d, $m)=obliczObchod($nazwa, $rok); return dodaj($ilosc, $d, $m, $rok); } if($this->kiedy[0]=='ostatni' || $this->kiedy[0]=='ostatnia' || $this->kiedy[0]=='pierwszy' || $this->kiedy[0]=='pierwsza') { { $d=$this->kiedy[3]; $m=$miesiace[$this->kiedy[4]]; } else { $nazwa=''; for($x=3;$x<$c;$x++) $nazwa.=$this->kiedy[$x].' '; list($d, $m)=obliczObchod($nazwa, $rok); } $_dt=$tydzien[$this->kiedy[1]]; } if($this->kiedy[0]=='ostatni' || $this->kiedy[0]=='ostatnia') { if($dt<=$_dt) return dodaj($dt-$_dt+7, $d, $m, $rok); else return dodaj($dt-$_dt, $d, $m, $rok); } elseif($this->kiedy[0]=='pierwszy' || $this->kiedy[0]=='pierwsza') { if($_dt<=$dt) return dodaj($_dt-$dt+7, $d, $m, $rok); else return dodaj($_dt-$dt, $d, $m, $rok); } } } //Funkcja wczytuje zawartość pliku do tablicy $dni function wczytaj($rok) { global $dni, $tabela_waznosci, $liczby_rzymskie, $dni_tygodnia, $lista_miesiecy, $miesiace, $tydzien; { { { $nazwa=$w; } else { $a[$tab[0]]=$tab[1]; } } $dni[$nazwa]['o']=new Dzien($nazwa, $a['kiedy'], $a['typ'], $a['opis']); $dni[$nazwa]['u']['wyświetl_okres']=$a['wyświetl_okres']; } foreach($dni as $nazwa=>$wartosc) obliczObchod($nazwa, $rok); $s=create_function('$a,$b', 'if($b["m"]>$a["m"]) return -1; if($b["m"]<$a["m"]) return 1; if($b["d"]>$a["d"]) return -1; if($b["d"]<$a["d"]) return 1; return 0;'); } //dodaje do podanej daty $x dni function dodaj($x, $d, $m, $r) { } //wylicza różnicę dni między podanymi datami function odejmij($d1, $m1, $r1, $d2, $m2, $r2) { return $t/(24*60*60); } //oblicza obchód $nazwa w roku $rok function obliczObchod($nazwa, $rok) { global $dni, $tabela_waznosci, $liczby_rzymskie, $dni_tygodnia, $lista_miesiecy, $miesiace, $tydzien; if($dni[$nazwa]['r']==$rok && $dni[$nazwa]['d'] && $dni[$nazwa]['m']) switch($nazwa) //daty "sztywne" { case 'Wielkanoc': $dni[$nazwa]['d']=$a[0]; $dni[$nazwa]['m']=$a[1]; $dni[$nazwa]['r']=$rok; return $a; case 'Świętej Rodziny': $o=new Dzien($nazwa, 'pierwsza niedziela po 25 grudnia', 'Święto'); $a=$o->oblicz($rok); if($a[1]==1) $dni[$nazwa]['d']=$a[0]; $dni[$nazwa]['m']=$a[1]; $dni[$nazwa]['r']=$rok; return $a; } $a=$dni[$nazwa]['o']->oblicz($rok); $dni[$nazwa]['d']=$a[0]; $dni[$nazwa]['m']=$a[1]; $dni[$nazwa]['r']=$rok; return $a; } //tablice pomocnicze ( 'Uroczystość', 'Święto', 'Niedziela', 'Wspomnienie obowiązkowe', 'Wspomnienie dowolne' ); ( 'I','II','III','IV','V','VI','VII','VIII','IX','X', 'XI','XII','XIII','XIV','XV','XVI','XVII','XVIII','XIX','XX', 'XXI','XXII','XXIII','XXIV','XXV','XXVI','XXVII','XXVIII','XXIX','XXX', 'XXXI','XXXII','XXXIII','XXXIV' ); ( 'Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota' ); ( 'stycznia','lutego','marca','kwietnia','maja','czerwca','lipca','sierpnia','września','października','listopada','grudnia' ); ( 'stycznia'=>1, 'styczeń'=>1, 'lutego'=>2, 'luty'=>2, 'marca'=>3, 'marzec'=>3, 'kwietnia'=>4, 'kwiecień'=>4, 'maja'=>5, 'maj'=>5, 'czerwca'=>6, 'czerwiec'=>6, 'lipca'=>7, 'lipiec'=>7, 'sierpnia'=>8, 'sierpień'=>8, 'września'=>9, 'wrzesień'=>9, 'października'=>10, 'październik'=>10, 'listopada'=>11, 'listopad'=>11, 'grudnia'=>12, 'grudzień'=>12 ); ( 'niedziela'=>0, 'poniedziałek'=>1, 'wtorek'=>2, 'środa'=>3, 'czwartek'=>4, 'piątek'=>5, 'sobota'=>6 ); //właściwa funkcja if(!$d) if(!$m) if(!$r) wczytaj($r); foreach($dni as $nazwa=>$dzien) { if($dzien['d']>$d && $dzien['m']==$m) break; if($dzien['m']>$m) break; if($dzien['o']->typ=='Okres') { $okr=$nazwa; continue; } if($dzien['d']==$d && $dzien['m']==$m) } function znajdzWazneSwieto($a, $b) { } if($a) $x=odejmij($d, $m, $r, $dni[$okr]['d'], $dni[$okr]['m'], $r); switch($okr) { case 'Okres zwykły 2': $chrz=obliczObchod('Chrzest Pański', $r); $popi=obliczObchod('Środa popielcowa', $r); $y=odejmij($popi[0], $popi[1], $r, $chrz[0], $chrz[1], $r); break; } if($dt==0) else if($a[0]['u']['wyświetl_okres']=='nie' || $dni[$okr]['u']['wyświetl_okres']=='nie') $n=$a[0]['opis']; elseif(!$a[0]['opis']) $n=$okres; else $n=$okres.', '.$a[0]['opis']; '%n'=>$n, '%d'=>$d, '%m'=>$lista_miesiecy[$m-1], '%r'=>$r )); } ?>
Zainstalowałem go sobie na próbę na lokalhoście. Wywołałem go kodem:
Kalendarz wyświetlił się prawidłowo, ale nad nim pojawiły się 3 rodzaje komunikatów o błędach powtórzone kilkadziesiąt razy:
include('kalendarz.php');
Kod
Notice: Undefined index: wyświetl_okres in C:\xampplite\htdocs\miserere\kalendarz.php on line 199
Kod
Notice: Undefined index: opis in C:\xampplite\htdocs\miserere\kalendarz.php on line 198
Kod
Notice: Undefined index: r in C:\xampplite\htdocs\miserere\kalendarz.php on line 224
Nie potrafię rozwiązać tego problemu. Może ktoś z Was mógłby mi pomóc?