tyyppi = $tyyppi; } // destruktori function __destruct() { $this->tyyppi = NULL; $this->lista_alkiot = NULL; } // metodi palauttaa listan tyypin public function anna_tyyppi() { return $this->tyyppi; } // metodi lisää alkion, jos sitä ei ollut olemassa public function lisaa_alkio($alkio) { if(!$this->onko_olemassa($alkio->anna_arvo())) { array_push($this->lista_alkiot, $alkio); return true; } return false; } // metodi poistaa alkion taulukosta public function poista_alkio($arvo) { foreach($this->lista_alkiot as $indeksi => $alkio) { if($alkio->anna_arvo() == $arvo) { unset($this->lista_alkiot[$indeksi]); return true; } } return false; } // metodi päivittää parametrina tuodun alkion // myös uusi arvo tuodaan parametrina // paivitys voi olla myös lisäys // ennen lisäystä/päivitystä tarkistetaan ettei löydy saman nimistä ennalta // lisays tehdään silloin, jos paivitettävää alkiota ei löydy public function paivita_alkio($paivitettava,$uusi_arvo) { if($this->onko_olemassa($uusi_arvo)) { return false; } foreach($this->lista_alkiot as $indeksi => $alkio) { if($alkio->anna_arvo() == $paivitettava) { $this->lista_alkiot[$indeksi]->aseta_arvo($uusi_arvo); return true; } } $uusi_alkio = new lista_alkio($uusi_arvo); return $this->lisaa_alkio($uusi_alkio); } // metodi muuttaa listan tyyppiä public function muuta_tyyppi($uusi_arvo) { $this->tyyppi = $uusi_arvo; } // metodi tarkistaa alkion olemassaolon public function onko_olemassa($alkion_arvo) { foreach($this->lista_alkiot as $alkio) { if($alkio->anna_arvo() == $alkion_arvo) return true; } return false; } // metodi palauttaa taulukkona kaikkien lista-alkioiden sisällöt public function anna_arvot() { $arvotaulukko = array(); foreach($this->lista_alkiot as $alkio) { $arvo = $alkio->anna_arvo(); array_push($arvotaulukko,$arvo); } return $arvotaulukko; } // metodi tulostaa listan sisällön public function tulosta_lista() { echo "<$this->tyyppi>\n"; foreach($this->lista_alkiot as $alkio) { $alkio->tulosta(); echo "\n"; } echo "tyyppi>\n"; } } // luokka lista-alkiolle, sisältää lista-alkion sisällön class lista_alkio { // attribuutit private $arvo; // konstruktori function __construct($arvo) { $this->arvo = $arvo; } // destruktori function __destruct() { $this->arvo = NULL; } // palauttaa lista-alkion sisällön public function anna_arvo() { return $this->arvo; } // asettaa lista-alkiolle sisällön public function aseta_arvo($arvo) { $this->arvo = $arvo; } // tulostaa lista-alkion public function tulosta() { echo "
  • ".$this->arvo."
  • "; } } ?> '."\n"; ?> VT4

    Viikkotehtävä 4, taso 3

    Edellisen kierroksen listan tulostaminen\n"; // luodaan uusi olio hidden-kenttien arvojen perusteella $lista = new lista($_REQUEST['h_tyyppi']); foreach($_REQUEST['h_alkio'] as $arvo) { if($arvo!="") { $alkio = new lista_alkio($arvo); $lista->lisaa_alkio($alkio); } } $lista->tulosta_lista(); } ?>

    Listan luominen

    Valitse listan tyyppi

    muuta_tyyppi($_REQUEST['tyyppi']); } foreach($_REQUEST['alkio'] as $indeksi => $arvo) { $onnistui = false; // jos arvo on tyhjä, mutta vastaava hidden-kenttä ei, tulee tehdä poisto if($arvo=="" && $_REQUEST['h_alkio'][$indeksi]!="") { $onnistui = $lista->poista_alkio($_REQUEST['h_alkio'][$indeksi]); // if(!$onnistui) { echo "

    VIRHE POISTOSSA!

    \n"; } } // jos arvot ovat erit tulee tehdä päivitys // päivitys voi olla myös uuden lisäys, jos alkuperäinen arvo oli tyhjä elseif($arvo!=$_REQUEST['h_alkio'][$indeksi] && $arvo!="") { $onnistui = $lista->paivita_alkio($_REQUEST['h_alkio'][$indeksi],$arvo); // if(!$onnistui) { echo "

    VIRHE PÄIVITYKSESSÄ!

    \n"; } } } // tässä tapauksessa listaa ei löytynyt, mutta löytyy kuitenkin // listan tyyppi, eli sivulla ollaan toista kertaa // tällöin luodaan lista } elseif(isset($_REQUEST['tyyppi'])) { $toka = true; $lista = new lista($_REQUEST['tyyppi']); for($i=1; $i<=count($_REQUEST['alkio']); $i++) { if($_REQUEST['alkio'][$i]!="") { $alkio = new lista_alkio($_REQUEST['alkio'][$i]); $lista->lisaa_alkio($alkio,$i); } } } // tulostetaan listan tyyppi // jos lista oli olemassa, niin kysytään arvo oliolta echo 'anna_tyyppi() == "ul")) { echo 'checked="checked" '; } echo '/>

    '."\n"; echo '

    '; echo 'anna_tyyppi() == "ol") { echo 'checked="checked" '; } echo '/>

    '."\n"; // hidden-kenttä myös, jos ollaan lomakkeella vähintään toista kertaa if($lahetetty) { echo '

    '."\n"; } ?>

    Anna arvot lista-alkioille

    anna_arvot(); } for($i=1; $i '; echo '

    '."\n"; // ekaa kertaa lukuun ottamatta tulostetaan myös vastaava hidden-kenttä if($lahetetty) { echo '

    '."\n"; } } ?>

    Muutetun listan tulostaminen\n"; } else { echo "

    Ensimmäisen listan tulostaminen

    \n"; } $lista->tulosta_lista(); } ?>