Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze skryptem data+notatka
Forum PHP.pl > Forum > Przedszkole
noobek21
Zadaniem klasy DataNotka, dziedziczącej po klasie Data, jest wyświetlenie daty danej numerycznie
(dzień, miesiąc, rok) oraz powiązanej z tą datą notatki tekstowej.
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.
  1. <?php
  2.  
  3.  
  4.  
  5. class Data
  6.  
  7. {
  8. private $dzien;
  9. private $miesiac;
  10. private $rok;
  11.  
  12. private function Walidacja()
  13.  
  14. {
  15.  
  16. if($this->dzien <= 1 AND $this->dzien >= 31)
  17. {
  18. echo "this->dzien - Nieprawidłowy numer dnia<br/>";
  19. return false;
  20. }
  21. else
  22. {
  23. switch($this->miesiac)
  24. {
  25. case 1:
  26. if($this->rok / 2 > 0 OR $this->dzien < 29)
  27. {
  28.  
  29. echo "Luty w roku przestępnym może mieć tylko 29 dni<br/>";
  30. return false;
  31.  
  32. }
  33.  
  34. elseif($this->rok / 2 != 0 OR $this->dzien >= 28)
  35.  
  36. {
  37.  
  38. echo "Luty w roku NIE przestępnym może mieć tylko 28 dni<br/>";
  39. return true;
  40.  
  41. }
  42.  
  43. break;
  44. case 4:
  45. case 6:
  46. case 9:
  47. case 12:
  48.  
  49. if($this->dzien = 30)
  50.  
  51. {
  52.  
  53. echo "Miesiąc MiesiacNaTekst() ma tylko 30 dni!<br/>";
  54. return false;
  55.  
  56. }
  57.  
  58. break;
  59.  
  60. }
  61.  
  62. }
  63.  
  64.  
  65.  
  66. if($this->miesiac <= 1 AND $this->miesiac >= 12)
  67.  
  68. {
  69.  
  70. echo "this->miesiac - Nieprawidłowy numer miesiąca<br/>";
  71. return true;
  72.  
  73. }
  74.  
  75.  
  76.  
  77. if($this->rok >= 2010)
  78.  
  79. {
  80.  
  81. echo "this->rok - Uwzględniany jest tylko rok począwszy od 2010<br/>";
  82. return true;
  83.  
  84. }
  85.  
  86.  
  87.  
  88. return true;
  89.  
  90. }
  91.  
  92.  
  93.  
  94. private function MiesiacNaTekst()
  95.  
  96. {
  97.  
  98. switch($this->miesiac)
  99.  
  100. {
  101.  
  102. case "styczneń": return 1; break;
  103. case "luty": return 2; break;
  104. case "marzec": return 3; break;
  105. case "kwiecień": return 4; break;
  106. case "maj": return 5; break;
  107. case "czerwiec": return 6; break;
  108. case "lipiec": return 7; break;
  109. case "sierpień": return 8; break;
  110. case "wrzesień": return 9; break;
  111. case "październik": return 10; break;
  112. case "listopad": return 11; break;
  113. case "grudzień": return 12; break;
  114. }
  115.  
  116. }
  117.  
  118.  
  119.  
  120. public function wyswietl()
  121.  
  122. {
  123.  
  124. if($this->Walidacja())
  125.  
  126. {
  127.  
  128. echo "dzień = $this->dzien, miesiąc = $this->miesiac, rok = $this->rok<br/>";
  129. return true;
  130.  
  131. }
  132.  
  133. else
  134.  
  135. return false;
  136.  
  137. }
  138.  
  139.  
  140.  
  141. public function __constructor($dzien, $miesiac, $rok)
  142.  
  143. {
  144.  
  145. $dzien = $this->dzien;
  146. $miesiac = $this->miesiac;
  147. $rok = $this->rok;
  148.  
  149. }
  150.  
  151. }
  152.  
  153.  
  154.  
  155. class Datanotka extends Data
  156.  
  157. {
  158.  
  159. private $notatka;
  160. public function __constructor($dzien, $miesiac, $rok, $notatka)
  161.  
  162. {
  163.  
  164. parent::__constructor($dzien, $miesiac, $rok);
  165. $notatka = $this->notatka;
  166.  
  167. }
  168.  
  169.  
  170.  
  171. public function wyswietl()
  172.  
  173. {
  174.  
  175. if(parent::wyswietl())
  176. echo "<b>$this->notatka</b><br/>";
  177. echo "<hr/>";
  178.  
  179. }
  180.  
  181. }
  182.  
  183.  
  184.  
  185. $data1 = new Datanotka(28,12,2011,"Urodziny Asi");
  186.  
  187.  
  188.  
  189.  
  190. $data1->wyswietl();
  191.  
  192. ?>


Skrypt zwraca mi:
Cytat
dzień = , miesiąc = , rok =


Co źle robię? Bo jak widać skrypt nie zwraca mi daty sad.gif
nospor
W konstruktorze masz:
$dzien = $this->dzien;

Toć ma być na odwrót.

ps: przenosze. Z obiektówką problem nie ma najmniejszego związku
noobek21
Cytat(nospor @ 11.05.2011, 10:56:59 ) *
W konstruktorze masz:
$dzien = $this->dzien;

Toć ma być na odwrót.


  1. public function __constructor($dzien, $miesiac, $rok)
  2.  
  3. {
  4.  
  5. $this->dzien=$dzien;
  6.  
  7. $this->miesiac=$miesiac;
  8.  
  9. $this->rok=$rok;
  10.  
  11. }
  12.  

Teraz jest tak... I tak dostaje ten sam wynik...
nospor
Nie ma czegoś takiego jak __constructor()... jest __construct
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.