From 93477e6e47407d2fe73e0e47855eb0bde3bc44be Mon Sep 17 00:00:00 2001 From: Whykioh Date: Tue, 3 Mar 2026 20:23:26 +0100 Subject: [PATCH] dfghj --- poker-paf/declare_winner.php | 66 +++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/poker-paf/declare_winner.php b/poker-paf/declare_winner.php index 98003e0..5d2ad29 100644 --- a/poker-paf/declare_winner.php +++ b/poker-paf/declare_winner.php @@ -1,51 +1,63 @@ prepare("SELECT id FROM players WHERE game_id = ? AND id = ?"); - $stmt->execute([$game_id, $winner_id]); - if (!$stmt->fetch()) { - throw new Exception("Le joueur n'est pas dans cette partie."); + if ($game_id === 0 || $winner_id === 0) { + throw new Exception("ID de partie ou de joueur invalide."); } - // 2. Récupérer le pot total de la partie + // 1. On récupère le pot de la table et le nom du gagnant $stmt = $db->prepare("SELECT pot FROM games WHERE id = ?"); $stmt->execute([$game_id]); $game = $stmt->fetch(); - $pot = $game['pot']; + + $stmt = $db->prepare("SELECT name FROM players WHERE id = ?"); + $stmt->execute([$winner_id]); + $player = $stmt->fetch(); - // 3. Mettre à jour le solde du gagnant + if (!$game || !$player) { + throw new Exception("Données introuvables en base."); + } + + $total_pot = intval($game['pot']); + $winner_name = $player['name']; + + // 2. On effectue les mises à jour + $db->beginTransaction(); + + // Ajouter l'argent au gagnant $stmt = $db->prepare("UPDATE players SET money = money + ? WHERE id = ?"); $stmt->execute([$total_pot, $winner_id]); - // 4. Remettre à 0 le pot total de la partie - $stmt = $db->prepare("UPDATE games SET pot = 0 WHERE id = ?"); + // Vider le pot de la partie et reset la mise actuelle + $stmt = $db->prepare("UPDATE games SET pot = 0, last_bet = 0 WHERE id = ?"); $stmt->execute([$game_id]); - // 5. Remettre à 0 les mises de tous les joueurs + // Reset les mises individuelles $stmt = $db->prepare("UPDATE players SET current_bet = 0 WHERE game_id = ?"); $stmt->execute([$game_id]); - // 6. Remettre à 0 la blind actuelle de la partie - $stmt = $db->prepare("UPDATE games SET last_bet = 0 WHERE id = ?"); - $stmt->execute([$game_id]); + $db->commit(); - // 7. Récupérer le nom du gagnant pour l'afficher - $stmt = $db->prepare("SELECT name FROM players WHERE id = ?"); - $stmt->execute([$winner_id]); - $winner = $stmt->fetch(PDO::FETCH_ASSOC); - - echo json_encode(['success' => true, 'winner_name' => $winner['name'] ?? "Inconnu", 'amount_won' => $total_pot]); + echo json_encode([ + 'success' => true, + 'winner_name' => $winner_name, + 'amount_won' => $total_pot + ]); } catch (Exception $e) { - echo json_encode(['success' => false, 'message' => $e->getMessage()]); + if (isset($db) && $db->inTransaction()) $db->rollBack(); + echo json_encode([ + 'success' => false, + 'message' => $e->getMessage() + ]); } - -?> \ No newline at end of file +exit; \ No newline at end of file