Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błędy logiczne w kodzie PHP
Forum PHP.pl > Forum > Przedszkole
wazamo05
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.

Kod
<?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 smile.gif

pozdrawiam

wookieb
Temat: Jak poprawnie zatytulowac watek
A żeby zmienić nazwę tematu musisz się teraz zarejestrować i wysłać mi PW.
wazamo05
Witam

prośba o pomoc zgodnie z powyższym - dziękuje z góry

pozdrawiam
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.