Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 1fe5a0e2d6063d64881753d7d822bbf087cb4dbd
  • master par défaut protégée
  • dev
  • dev-admin
  • migration-pg
  • dev-partie
  • dev-deplacement-msg-erreurs
  • dev-jeux-favoris
  • dev-update-forms
  • dev-header-profil-deconnexion
  • dev-contact
  • dev_page_accueil
  • dev-edit-profil
  • dev-classement
  • dev_espace_membre
  • dev-images
  • javascript_valid_form
  • application_design_views
  • dev-table
  • dev-nestor
20 résultats

Partie.php

Blame
  • 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();
            }
        }
    
    }