From 56cc2d81b1053e285b9234bd2d91e0747061c341 Mon Sep 17 00:00:00 2001 From: SASSU Thomas <thomas.sassu5@etu.univ-lorraine.fr> Date: Tue, 10 Mar 2020 18:46:07 +0100 Subject: [PATCH] TD2 maj --- GamePedia/php/script_TD2.php | 17 +- .../src/controleurs/ControleurScript.php | 166 ++++++++++++++---- GamePedia/src/modeles/Genre.php | 9 + 3 files changed, 152 insertions(+), 40 deletions(-) diff --git a/GamePedia/php/script_TD2.php b/GamePedia/php/script_TD2.php index e9ac05f..ef675ca 100644 --- a/GamePedia/php/script_TD2.php +++ b/GamePedia/php/script_TD2.php @@ -14,5 +14,18 @@ $db->addConnection(parse_ini_file('../conf/conf.ini')); $db->setAsGlobal(); $db->bootEloquent(); -$c = new ControleurScript(); -$c->td2(); +echo ("<!DOCTYPE html> +<html> + <body> + <div> + <h1> Script TD2 </h1> + <h2> Consignes : </h2> + <p> Pour chaque requête, mettre le paramètre dans l'url ?requete='Numero de la requete'</p> + </div>"); +if(isset($_GET['requete']) && $_GET['requete']>0 && $_GET['requete']<=9) { + $nb = $_GET['requete']; + $c = new ControleurScript(); + $function = 'td2_q'. $nb; + $c->$function(); +} +echo ("</body> </html>"); \ No newline at end of file diff --git a/GamePedia/src/controleurs/ControleurScript.php b/GamePedia/src/controleurs/ControleurScript.php index 85656f8..83e18b0 100644 --- a/GamePedia/src/controleurs/ControleurScript.php +++ b/GamePedia/src/controleurs/ControleurScript.php @@ -4,72 +4,79 @@ namespace gp\controleurs; +use gp\modeles\Game_rating; +use gp\modeles\Genre; use gp\modeles\Platform; use gp\modeles\Game; use gp\modeles\Company; use gp\modeles\Character; +use gp\modeles\Rating_board; class ControleurScript { - public function td1(){ + public function td1() + { echo "script TD1"; - $tab=null; + $tab = null; $tab[] = $this->gameByName('Mario')->get(); $tab[] = $this->CompanyByCountry('Japan')->get(); $tab[] = $this->platformByBase('10000000')->get(); $tab[] = Game::skip(21173)->take(442)->get(); $data = Game::simplePaginate(500); - $s = "<p>--------------------------------------------------------<br>". - "Jeu contenant dans leur nom 'Mario'<br>". - "--------------------------------------------------------</p>"; + $s = "<p>--------------------------------------------------------<br>" . + "Jeu contenant dans leur nom 'Mario'<br>" . + "--------------------------------------------------------</p>"; echo $s; - foreach ($tab[0] as $game){ - echo ("<p>{$game->name}</p>"); + foreach ($tab[0] as $game) { + echo("<p>{$game->name}</p>"); } - $s= "<p>--------------------------------------------------------<br>". - "Compagnies installées au 'Japon'<br>". + $s = "<p>--------------------------------------------------------<br>" . + "Compagnies installées au 'Japon'<br>" . "--------------------------------------------------------</p>"; echo $s; - foreach ($tab[1] as $company){ - echo ("<p>{$company->name}</p>"); + foreach ($tab[1] as $company) { + echo("<p>{$company->name}</p>"); } - $s = "<p>--------------------------------------------------------<br>". - "Plateformes dont la base installée est >= 10 000 000<br>". + $s = "<p>--------------------------------------------------------<br>" . + "Plateformes dont la base installée est >= 10 000 000<br>" . "--------------------------------------------------------</p>"; echo $s; - foreach ($tab[2] as $plat){ - echo ("<p>{$plat->name}</p>"); + foreach ($tab[2] as $plat) { + echo("<p>{$plat->name}</p>"); } - $s = "<p>--------------------------------------------------------<br>". - "liste de 442 jeux à partir du 21173ème<br>". + $s = "<p>--------------------------------------------------------<br>" . + "liste de 442 jeux à partir du 21173ème<br>" . "--------------------------------------------------------</p>"; echo $s; - foreach ($tab[3] as $game){ - echo ("<p>{$game->name}</p>"); + foreach ($tab[3] as $game) { + echo("<p>{$game->name}</p>"); } - $s = "<p>--------------------------------------------------------<br>". - "liste des jeux en paginant (taille des pages : 500)<br>". + $s = "<p>--------------------------------------------------------<br>" . + "liste des jeux en paginant (taille des pages : 500)<br>" . "--------------------------------------------------------</p>"; echo $s; $res = ""; - foreach ($data as $t){ + foreach ($data as $t) { $res = $res . "<p>$t->name</p>"; } - $res = "<div class=\"container\"> + $res = "<div class=\"container\"> $res </div>"; - echo $res; + echo $res; } - private function gameByName($name){ + private function gameByName($name) + { return Game::where("name", "like", "%{$name}%"); } - private function companyByCountry($country){ + private function companyByCountry($country) + { return Company::where("location_country", "like", "{$country}"); } - private function platformByBase($base){ + private function platformByBase($base) + { return Platform::where("install_base", ">=", "{$base}"); } @@ -77,28 +84,35 @@ class ControleurScript * TD_2 */ - public function td2(){ + public function td2_q1() + { $q = $this->nameDeckByGame(12342)->get(); - echo ("<p>---------------------------------------------<br>" . + echo("<p>---------------------------------------------<br>" . "<p>(name, deck) des personnages du jeu 12342<br>" . "<p>---------------------------------------------<br>"); foreach ($q as $item) { echo "<p>nom :$item->name , deck : $item->deck</p>"; } + } - $q = Game::where('name','like',"Mario%")->get(); - echo ("<p>---------------------------------------------<br>" . + public function td2_q2() + { + $q = Game::where('name', 'like', "Mario%")->get(); + echo("<p>---------------------------------------------<br>" . "<p>les personnages des jeux dont le nom (du jeu) débute par 'Mario<br>" . "<p>---------------------------------------------<br>"); foreach ($q as $game) { echo "<p>Characters from :$game->name</p>"; $list = $game->characters()->get(); foreach ($list as $char) - echo "<p>nom : $char->name</p>"; + echo "<p>nom : $char->name</p>"; } + } + public function td2_q3() + { $q = Company::where("name", "like", "%sony%")->get(); - echo ("<p>---------------------------------------------<br>" . + echo("<p>---------------------------------------------<br>" . "<p>les jeux développés par une compagnie dont le nom contient 'Sony<br>" . "<p>---------------------------------------------<br>"); foreach ($q as $company) { @@ -107,9 +121,12 @@ class ControleurScript foreach ($list as $game) echo "<p>nom : $game->name</p>"; } + } - $q = Game::where('name','like',"Mario%")->get(); - echo ("<p>---------------------------------------------<br>" . + public function td2_q4() + { + $q = Game::where('name', 'like', "Mario%")->get(); + echo("<p>---------------------------------------------<br>" . "<p>le rating initial (indiquer le rating board) des jeux dont le nom contient Mario<br>" . "<p>---------------------------------------------<br>"); foreach ($q as $game) { @@ -118,14 +135,87 @@ class ControleurScript foreach ($list as $rate) echo "<p>id rating_board : $rate->rating_board_id, name : {$rate->rating_board()->first()->name}</p>"; } + } - echo ("<p>---------------------------------------------<br>" . + public function td2_q5() + { + $q = Game::where('name', 'like', "Mario%")->get(); + echo("<p>---------------------------------------------<br>" . "<p>les jeux dont le nom débute par Mario et ayant plus de 3 personnages<br>" . "<p>---------------------------------------------<br>"); foreach ($q as $game) { - $list = $game->characters()->get(); - if(count($list)>3) echo "<p>$game->name</p>"; + $list = $game->characters()->get(); + if (count($list) > 3) echo "<p>$game->name</p>"; + } + } + + public function td2_q6() + { + echo("<p>---------------------------------------------<br>" . + "<p>les jeux dont le nom débute par Mario et dont le rating initial contient \"3+\"<br>" . + "<p>---------------------------------------------<br>"); + $list = Game_rating::select('name')->where('name', 'like', "%3+%")->get(); + foreach ($list as $rate) { + echo "<p>$rate->name</p>"; + $games = $rate->games()->where('name', 'like', "Mario%")->get(); + echo $games; + foreach ($games as $game) echo "<p>$game->name</p>"; + } + } + + public function td2_q8() + { + $tmpGames = null; + $tmpBoard = null; + echo("<p>---------------------------------------------<br>" . + "<p>les jeux dont le nom débute par Mario, publiés par une compagnie dont le nom contient \"Inc.\" et dont le rating initial contient \"3+\"<br>" . + "<p>---------------------------------------------<br>"); + $list = Game_rating::select('name')->where('name', 'like', "%3+%")->get(); + foreach ($list as $rate) { + echo "<p>$rate->name</p>"; + $games = $rate->games()->where('name', 'like', "Mario%")->get(); + echo $games; + foreach ($games as $game) if($game->developers()->where('name', 'like', '%Inc.%')->get != null) $tmpGames[] = $game; + } + $tmpBoard = Game_rating::where('name', 'like', 'CERO')->first(); + if($tmpBoard!=null) $tmpBoard = $tmpBoard->games()->get(); + $res = array_intersect((array)$tmpGames, (array)$tmpBoard); + foreach ($res as $games){ + echo "<p> {$games->nom} </p>"; + } + } + + public function td2_q7() + { + echo("<p>---------------------------------------------<br>" . + "<p>les jeux dont le nom débute par Mario, publiés par une compagnie dont le nom contient \"Inc.\" et dont le rating initial contient \"3+\" t ayant reçu un avis de la part du rating board nommé \"CERO\"<br>" . + "<p>---------------------------------------------<br>"); + $list = Game_rating::select('name')->where('name', 'like', "%3+%")->get(); + foreach ($list as $rate) { + echo "<p>$rate->name</p>"; + $games = $rate->games()->where('name', 'like', "Mario%")->get(); + echo $games; + foreach ($games as $game) if($game->developers()->where('name', 'like', '%Inc.%')->get != null) echo "<p>$game->name</p>"; + } + } + + public function td2_q9() + { + echo "q9"; + $games = Game::where('id', '=', 12)->orWhere('id', '=', 56)->orWhere('id', '=', 345)->get(); + if(Genre::where('name', 'like', '')->first() == null) { + $genre = Genre::create('Hardcore', 'Hardcore is hard.','<p style="">Hardcore games where you die a lot to succed.</p>'); + foreach ($games as $game){ + if($game->genres()->where('id', '=', $genre->id)->first() == null) $game->genres()->attach([$genre->id]); + } } + foreach ($games as $game) { + echo "<p>Id : $game->id : </p>"; + $genres = $game->genres()->get(); + foreach ($genres as $genre){ + echo "<p> Cat : $genre->name</p>"; + } + } } private function nameDeckByGame($id){ diff --git a/GamePedia/src/modeles/Genre.php b/GamePedia/src/modeles/Genre.php index 0700c6f..1f9253d 100644 --- a/GamePedia/src/modeles/Genre.php +++ b/GamePedia/src/modeles/Genre.php @@ -7,6 +7,15 @@ class Genre extends \Illuminate\Database\Eloquent\Model protected $primaryKey = 'id'; public $timestamps = false ; + public static function create($name, $deck, $desc){ + $obj = new Genre(); + $obj->name = $name; + $obj->deck = $deck; + $obj->description = $desc; + $obj->save(); + return $obj; + } + function games(){ return $this->BelongsToMany('gp\modeles\Game', 'game2genre','genre_id'); } -- GitLab