Witam
jestem początkującym jeśli chodzi o programowanie PHP i mam prośbę o pomoc przy kodzie właśnie z PHP a dokładnie w odszukaniu
błędów logicznych w działaniu programów(defektów) które sprawiają że program nie działa poprawnie. Nie chodzi mi o dopisanie nowych
linie tylko pomoc przy poprawieniu istniejących i jeśli nie będzie to problemem krótkim wyjaśnieniu w czym jest błąd aby nie
popełniać go w przyszłości.
<?php
/*
Zadaniem klasy DataNotatka, dziedziczącej po klasie Data, jest wyświetlenie daty danej numerycznie
(dzień, miesiąc, rok) oraz powiązanej z tą datą notatki tekstowej (analogia do kartki z kalendarza).
Dodatkowo, przed wyświetleniem daty należy wykonać procedurę sprawdzenia (walidacji) tej daty
- true jeśli data jest OK, false jeśli data jest zła.
Przy wyświetlaniu daty należy miesiąc wyświetlić w formie tekstowej.
Wiadomo, że mieiące: kwiecień, czerwiec, wrzesień, listopad maja 30 dni, a luty ma normalnie 28 dni,
poza rokiem przestępnym - wtedy luty ma 29 dni. Dopuszczalny jest rok począwszy od 2010.
*/
class Data
{
private $dzien;
private $miesiac;
private $rok;
private function Walidacja()
{
if($this->dzien <= 1 AND $this->dzien >= 31)
{
echo "this->dzien - Nieprawidłowy numer dnia<br/>";
return false;
}
else
{
switch($this->miesiac)
{
case 1:
if($this->rok / 2 > 0 OR $this->dzien < 29)
{
echo "Luty w roku przestępnym może mieć tylko 29 dni<br/>";
return false;
}
elseif($this->rok / 2 != 0 OR $this->dzien >= 28)
{
echo "Luty w roku NIE przestępnym może mieć tylko 28 dni<br/>";
return true;
}
break;
case 4:
case 6:
case 9:
case 12:
if($this->dzien = 30)
{
echo "Miesiac MiesiacNaTekst() ma tylko 30 dni!<br/>";
return false;
}
break;
}
}
if($this->miesiac <= 1 AND $this->miesiac >= 12)
{
echo "this->miesiac - Nieprawidłowy numer miesi±ca<br/>";
return true;
}
if($this->rok <= 2010)
{
echo "this->rok - Uwzględniany jest tylko rok poczawszy od 2010<br/>";
return true;
}
return true;
}
private function MiesiacNaTekst()
{
switch($this->miesiac)
{
case "styczneń": return 1; break;
case "luty": return 2; break;
case "marzec": return 3; break;
case "kwiecień": return 4; break;
case "maj": return 5; break;
case "czerwiec": return 6; break;
case "lipiec": return 7; break;
case "sierpień": return 8; break;
case "wrzesień": return 9; break;
case "paĽdziernik": return 10; break;
case "listopad": return 11; break;
case "grudzień": return 12; break;
}
}
public function WyswietlDane()
{
if($this->Walidacja())
{
echo "dzień = $this->dzien, miesi±c = MiesiacNaTekst(), rok = $this->rok<br/>";
return true;
}
else
return false;
}
public function __constructor($dzien, $miesiac, $rok)
{
$dzien = $this->dzien;
$miesiac = $this->miesiac;
$rok = $this->rok;
}
}
class DataNotatka extends Data
{
private $notatka;
public function __constructor($dzien, $miesiac, $rok, $notatka)
{
parent::__constructor($dzien, $miesiac, $rok);
$notatka = $this->notatka;
}
public function WyswietlDane()
{
if(parent::WyswietlDane())
echo "<b>this->notatka</b><br/>";
echo "<hr/>";
}
}
$data1 = new DataNotatka(37,12,2011,"Urodziny Basi");
$data2 = new DataNotatka(17,13,2011,"Urodziny Kasi");
$data3 = new DataNotatka(16,7,2008,"Urodziny Marysi");
$data4 = new DataNotatka(29,2,2011,"Urodziny Krysi");
$data5 = new DataNotatka(29,2,2012,"Urodziny Zosi");
$data6 = new DataNotatka(31,6,2011,"Urodziny Mieci");
$data7 = new DataNotatka(18,1,2012,"Imieniny Monisi");
$data1->WyswietlDane();
$data2->WyswietlDane();
$data3->WyswietlDane();
$data4->WyswietlDane();
$data5->WyswietlDane();
$data6->WyswietlDane();
$data7->WyswietlDane();
?>
dziękuję z góry za pomoc - może w przyszłości ja będe miał możliwość odwdzięczenia się i pomocy komuś innemu :)
pozdrawiam