'."\n"; echo ''."\n"; echo ''."\n"; echo ''."\n"; echo ''.$title.''."\n"; echo ''."\n"; echo ''."\n"; echo ''."\n"; echo '

'.$h1.'

'."\n"; } // tulostaa XHTML-sivun lopputagit public function tulosta_loppu() { echo ''."\n"; echo ''."\n"; } } // luokka tietokannan käsittelylle class kanta { private $dbh; // konstruktori, jossa kantaan luodaan yhteys function __construct($kanta) { try { $this->dbh = new PDO($kanta); } catch(PDOException $e) { print($e->getMessage()); } } function __destruct() { } // metodi hakee kaikki elokuvat ja niihin liittyvät näyttelijät kannasta // aakkosten mukaan järjestäminen tehdään jo SQL-lauseessa public function hae_elokuvat_ja_nayttelijat() { $sql = $this->dbh->prepare('SELECT Movie.MovieName AS MovieName, Actor.ActorName AS ActorName FROM Movie LEFT OUTER JOIN Participates ON Movie.MovieID = Participates.Movie_MovieID LEFT OUTER JOIN Actor ON Participates.Actor_ActorID = Actor.ActorID ORDER BY Movie.MovieName, Actor.ActorName ASC'); if(!$sql) { print_r($this->dbh->errorInfo()); return false; } $ok = $sql->execute(); if(!$ok) { print_r($sql->errorInfo()); return false; } else { return $sql; } } // metodi hakee kaikki näyttelijät kannasta public function hae_nayttelijat() { $sql = $this->dbh->prepare('SELECT * FROM Actor ORDER BY ActorName ASC'); if(!$sql) { print_r($this->dbh->errorInfo()); return false; } $ok = $sql->execute(); if(!$ok) { print_r($sql->errorInfo()); return false; } else { return $sql; } } // metodi lisää kantaan uuden elokuvan ja kiinnittää siihen valitut näyttelijät // lisättävät tiedot tuodaan parametreinä // rajoitteet (ei saa lisätä kahta samannimistä) hoidetaan suoraan kannassa UNIQUE:n avulla // lisäyksessä käytetään transaktioita public function lisaa_elokuva($leffa,$nayttelijat) { $this->dbh->beginTransaction(); $sql = $this->dbh->prepare('INSERT INTO Movie (MovieName) VALUES (:elokuva)'); if(!$sql) { print_r($this->dbh->errorInfo()); $this->dbh->rollBack(); return false; } $sql->bindParam(":elokuva",trim($leffa)); $ok = $sql->execute(); if(!$ok) { //print_r($sql->errorInfo()); $this->dbh->rollBack(); return false; } $leffaid = $this->dbh->lastInsertID(); foreach($nayttelijat as $nayttelija) { if($nayttelija!=0) { $sql = $this->dbh->prepare('INSERT INTO Participates VALUES (:elokuva, :nayttelija)'); if(!$sql) { print_r($this->dbh->errorInfo()); $this->dbh->rollBack(); return false; } $sql->bindParam(":elokuva",$leffaid); $sql->bindParam(":nayttelija",$nayttelija); $ok = $sql->execute(); if(!$ok) { print_r($sql->errorInfo()); $this->dbh->rollBack(); return false; } } } $this->dbh->commit(); return true; } // metodi tulostaa elokuvat ja niihin liittyvät näyttelijät taulukon riveinä public function tulosta_elokuvat_ja_nayttelijat($sql) { while($rivi = $sql->fetch(PDO::FETCH_ASSOC)) { echo "".htmlentities($rivi['MovieName'])."".htmlentities($rivi['ActorName'])."\n"; } } // metodi tulostaa näyttelijät valintalistan kohteina public function tulosta_nayttelijat($sql) { while($rivi = $sql->fetch(PDO::FETCH_ASSOC)) { echo ''."\n"; } } } ?>