query("SHOW TABLES LIKE 'leaderboard_sudoku'"); if ($checkTable->rowCount() == 0) { $createSql = " CREATE TABLE leaderboard_sudoku ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), difficulty VARCHAR(10), time_seconds INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"; $conn->exec($createSql); } } catch (PDOException $e) { } function getLeaderboard($conn, $difficulty) { $allowed = ['easy', 'medium', 'hard']; if (!in_array($difficulty, $allowed)) { return []; } $sql = " SELECT username, time_seconds, created_at FROM leaderboard_sudoku WHERE difficulty = :difficulty ORDER BY time_seconds ASC LIMIT 10 "; $stmt = $conn->prepare($sql); $stmt->execute(['difficulty' => $difficulty]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } if (isset($_GET['api']) && isset($_GET['difficulty'])) { header('Content-Type: application/json'); $data = getLeaderboard($conn, $_GET['difficulty']); echo json_encode($data); exit; } $easyData = getLeaderboard($conn, 'easy'); $mediumData = getLeaderboard($conn, 'medium'); $hardData = getLeaderboard($conn, 'hard'); ?>
| Rank | Player | Waktu |
|---|---|---|
| #{$rank} | "; echo "" . htmlspecialchars($row['username']) . " | "; echo "{$timeStr} | "; echo "