-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathget_leaderboard.php
More file actions
75 lines (59 loc) · 2.41 KB
/
get_leaderboard.php
File metadata and controls
75 lines (59 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
header('Content-Type: application/json');
$servername = "localhost";
$DBUsername = "root";
$DBPassword = "root";
$dbname = "new_unity";
// Get JSON data from request body
$json = file_get_contents('php://input');
$data = json_decode($json, true);
// Check if JSON was decoded successfully
if ($data === null) {
die(json_encode(array("success" => false, "message" => "Invalid JSON data")));
}
// Extract request parameters
$difficulty = $data["difficulty"] ?? "NORMAL";
$limit = isset($data["limit"]) ? intval($data["limit"]) : 10;
// Connect to database
$conn = new mysqli($servername, $DBUsername, $DBPassword, $dbname);
if($conn->connect_error) {
die(json_encode(array("success" => false, "message" => "Connection to database failed")));
}
try {
// Query to get the top scores for the specified difficulty
$query = "SELECT u.username, s.completion_time, s.difficulty, s.timestamp
FROM scores s
JOIN users u ON s.user_id = u.user_id
WHERE s.difficulty = ?
ORDER BY s.completion_time ASC
LIMIT ?";
$stmt = $conn->prepare($query);
if (!$stmt) {
die(json_encode(array("success" => false, "message" => "Failed to prepare leaderboard query: " . $conn->error)));
}
$stmt->bind_param("si", $difficulty, $limit);
if (!$stmt->execute()) {
die(json_encode(array("success" => false, "message" => "Leaderboard query failed: " . $stmt->error)));
}
$result = $stmt->get_result();
$scores = array();
while ($row = $result->fetch_assoc()) {
$scores[] = array(
"username" => $row["username"],
"completion_time" => floatval($row["completion_time"]),
"difficulty" => $row["difficulty"],
"timestamp" => $row["timestamp"]
);
}
$stmt->close();
// Return the scores
echo json_encode(array(
"success" => true,
"message" => "Leaderboard retrieved successfully",
"scores" => $scores
));
} catch(Exception $e) {
die(json_encode(array("success" => false, "message" => "Database error: " . $e->getMessage())));
}
$conn->close();
?>