kelompok06-2048/Leaderboard.php
Evelyn Sucitro d706a5f1c6 Leaderboard
2025-12-01 15:45:41 +07:00

58 lines
1.7 KiB
PHP

<?php
header('Content-Type: application/json');
require 'Connection.php';
session_start(); // Penting untuk tahu siapa yang login
$response = [
"status" => "error",
"leaderboard" => [],
"user_rank" => null
];
// 1. Ambil Top 10 Global
$query = "SELECT username, score FROM leaderboard ORDER BY score DESC LIMIT 10";
$result = $conn->query($query);
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$response['leaderboard'][] = $row;
}
}
// 2. Ambil Ranking User yang sedang Login (Jika ada session)
if (isset($_SESSION['user_id'])) {
$my_id = $_SESSION['user_id'];
// Ambil score user saat ini
$scoreQuery = $conn->prepare("SELECT username, score FROM leaderboard WHERE user_id = ?");
$scoreQuery->bind_param("i", $my_id);
$scoreQuery->execute();
$scoreResult = $scoreQuery->get_result();
if ($scoreRow = $scoreResult->fetch_assoc()) {
$myScore = $scoreRow['score'];
$myUsername = $scoreRow['username'];
// Hitung Ranking (Count berapa orang yang score-nya lebih tinggi)
// Logika: Jumlah orang dengan score > score saya, ditambah 1
$rankQuery = $conn->prepare("SELECT COUNT(*) as rank_above FROM leaderboard WHERE score > ?");
$rankQuery->bind_param("i", $myScore);
$rankQuery->execute();
$rankResult = $rankQuery->get_result();
$rankRow = $rankResult->fetch_assoc();
$myRank = $rankRow['rank_above'] + 1;
$response['user_rank'] = [
"username" => $myUsername,
"score" => $myScore,
"rank" => $myRank
];
}
}
$response['status'] = "success";
echo json_encode($response);
$conn->close();
?>