Witam wszystkich!
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:
<?
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
return array($this->kiedy[0
],$miesiace[$this->kiedy[1
]]);
if(is_numeric($this->kiedy[0])) //ileś dni/tygodni przed/po jakiejś dacie {
$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; $fp=fopen('dane.txt', 'r'); {
{
{
$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)
{
$t=mktime(0
,0
,0
,$m,$d,$r)+$x*24
*60
*60; }
//wylicza różnicę dni między podanymi datami
function odejmij($d1, $m1, $r1, $d2, $m2, $r2)
{
$t=(mktime(0
,0
,0
,$m1,$d1,$r1)-mktime(0
,0
,0
,$m2,$d2,$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'])
return array($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)
$a[]=array('opis'=>$dzien['o']->opis, 'typ'=>$dzien['o']->typ, 'u'=>$dzien['u']); }
function znajdzWazneSwieto($a, $b)
{
}
if($a)
uasort($a, 'znajdzWazneSwieto');
$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)
$okres=sprintf($dni[$okr]['o']->opis, $liczby_rzymskie[$x-1].' Niedziela'); else
$okres=sprintf($dni[$okr]['o']->opis, $dni_tygodnia[$dt].' '.$liczby_rzymskie[$x-1].' tydzień');
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
));
}
?>
, oraz pliku tekstowego z danymi dane.txt.
Zainstalowałem go sobie na próbę na lokalhoście. Wywołałem go kodem:
include('kalendarz.php');
Kalendarz wyświetlił się prawidłowo, ale nad nim pojawiły się 3 rodzaje komunikatów o błędach powtórzone kilkadziesiąt razy:
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?
Powód edycji: [Cysiaczek]: