Sélectionner une révision Git
-
Eliah REBSTOCK a rédigéEliah REBSTOCK a rédigé
Partie.php 4,45 Kio
<?php
/**
* Created by PhpStorm.
* User: phoenix
* Date: 25/04/16
* Time: 15:27
*/
class Partie extends Model
{
public $joueurs, $scores, $lejeu, $date, $slug;
public static function getFromSlug($slug_partie) {
$db = Database::getInstance();
$sql = "SELECT * FROM R_partie WHERE slug = :slug";
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_CLASS, "Partie"); // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
$stmt->execute(array(":slug" => $slug_partie));
return $stmt->fetch();
}
public static function getList() {
$db = Database::getInstance();
$sql = "SELECT * FROM R_partie";
$stmt = $db->query($sql);
$stmt->setFetchMode(PDO::FETCH_CLASS, "Partie");
return $stmt->fetchAll();
}
public static function checkExists($slug_partie) { // méthode permettant de vérifier si un jeu existe dans la BDD
$db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "SELECT * FROM R_partie WHERE slug = :slug";
$req = $db->prepare($sql); // on prépare la requête
$req->execute(array(":slug" => $slug_partie)); // on remplace les variables dans la requête
if ($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
return 1;
}
return 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
}
private static function calcul_classement($R){
$m = count($R);
$R_classement = array_fill(0, $m, 0);
asort($R);
$i = 1;
foreach ($R as $k => $val){
$R_classement[$k] = $i;
$i++;
}
return $R_classement;
}
public static function addPartie($date, $joueurs, $diff_scores, $nom_jeu, $slug_partie) {
$db = Database::getInstance();
$sql0 = "SELECT id_jeu FROM R_jeu WHERE :nom_jeu;";
$sql1 = "INSERT INTO R_partie (id_jeu, date) VALUES (:id_jeu, :date);";
$sql2 = "SELECT slug FROM R_joueur WHERE pseudo = :joueur;";
$sql3 = "SELECT score FROM R_joueur_jeu WHERE joueur = :id_joueur AND jeu = :id_jeu;";
$sql4 = "INSERT INTO R_joueur_partie (partie, joueur, classement, score)
VALUES ((:id_jeu, :date), :id_joueur, :classement, :score);";
$sql5 = "UPDATE INTO R_joueur_jeu (score) VALUES (:new_score);";
$stmt0 = $db->prepare($sql0);
$stmt1 = $db->prepare($sql1);
$stmt2 = $db->prepare($sql2);
$stmt3 = $db->prepare($sql3);
$stmt4 = $db->prepare($sql4);
$stmt5 = $db->prepare($sql5);
if($stmt0->execute(array(":nom_jeu" => $nom_jeu))) {
if($row = $stmt0->fetch()) {
$id_jeu = $row[0];
if($stmt1->execute(array(":id_jeu" => $id_jeu, ":date" => $date)))
{
$m = count($joueurs);
for($j = 0; $j<$m; $j++){
if($stmt2->execute(array(":joueur" => $joueurs[$j])))
{
if($row = $stmt2->fetch()) {
$id_joueur = $row[0];
$classement = self::calcul_classement($diff_scores);
if ($stmt3->execute(array(":id_joueur" => $id_joueur, ":id_jeu" => $id_jeu)))
{
if($row = $stmt3->fetch()) {
$old_score = $row[0];
if($stmt4->execute(array(":id_jeu" => $id_jeu, ":date" => $date,
":id_joueur" => $id_joueur,
":classement" => $classement, ":score" => $old_score))){
if($stmt5->execute(array(":new_score"=> $old_score + $diff_scores[$j])))
{
//C'est dans la boite
}
}
}
}
}
}
}
}
}
}
else {
echo "Arise, ça marche pas..."; die();
}
}
}