burger-quizz/dao/game_dao.php

121 lines
3.3 KiB
PHP

<?php
/**
* @brief Représente un objet d'accès à la base de données relatif à l'objet game
*/
class game_dao extends dao {
/**
* @brief Récupère un objet de game
* @arg $id identifiant de la partie à récupérer
*/
public function select($id) {
//Mise en place de la requête
$query = "SELECT * FROM `game` WHERE `id`='$id'";
//On récupère les données
$result = $this->db->query($query)->fetch();
//On retourne l'objet frâichement crée
return $result;
}
/**
* @brief Récupère toutes les partie relatives à un joueur
* @arg $login login du joueur permettant de récupérer les partie qui lui sont associée
* @return tableau de lignes de la base de données ou FALSE
*/
public function selectByLogin($login) {
//Mise en place de la requête
$query = "SELECT * FROM `game` WHERE `user_login`='$login' ORDER BY date DESC";
//On récupère les données
$result = $this->db->query($query)->fetchAll();
//On retourne les données
return $result;
}
/**
* @brief Compte le nombre de jeux effectués par chaque joueurs
*/
public function countGame() {
//Création de la requête
$query = "SELECT COUNT(*) AS nb, user_login FROM game GROUP BY user_login ORDER BY user_login ASC";
//Récupération des données
$result = $this->db->query($query)->fetchAll();
//On retourne les données
return $result;
}
/**
* @brief Insert une occurence game relative à l'objet passé
* @arg $objet objet game à ajouter dans la base de données
*/
public function insert(&$objet) {
//On stocke les données à ajouter
$user = $objet->getUserLogin();
$length = $objet->getLength();
//On met en place la requête
$query = "INSERT INTO `game`(`user_login`,`length`, `date`) VALUES ('$user','$length', NOW())";
//On envoie la requête
try {
$this->db->query($query);
return TRUE;
} catch (Exception $ex) {
if (config::$debug) {
echo $ex->getMessage();
}
return FALSE;
}
}
/**
* @brief Fonction obsolète
* @note il est impossible de faire une mise à jour d'une partie via le site
*/
public function update(&$objet) {
//On ne fait rien
}
/**
* @brief Supprime une occurence game de la base de données
* @arg $id identifiant de la partie à supprimer
* @note on utilise le ON DELETE CASCADE pour supprimer les réponses associées. La BDD reste donc cohérente
*/
public function delete($id) {
//Mise en place de la requête SQL
$query = "DELETE FROM `game` WHERE `id`='$id'";
//On envoie la requête SQL
$result = $this->db->query($query);
//On renvoie si oui ou non on a réussi la requête
if ($result->rowCount() == 0) {
return FALSE;
} else {
return TRUE;
}
}
public function getLastId() {
//Mise en place de la requête SQL
$query = "SELECT MAX(id) FROM game LIMIT 1";
//On envoie la requête SQL
$result = $this->db->query($query)->fetch();
//On retourne le résultat
return $result;
}
}
?>