Dash-Da-Dash-DX-2023-Fan-Pa.../ddd_scores.php

120 lines
3.5 KiB
PHP
Executable File

<?php
echo file_get_contents("ddd_source.html");
// Parse the config file
$config = parse_ini_file('config.cfg', true);
// Database connection
$db = null;
if (isset($config['options']) && isset($config['options']['database'])) {
$database = $config['options']['database'];
if ($database === 'mysql') {
$mysql_host = $config['mysql']['host'];
$mysql_username = $config['mysql']['username'];
$mysql_password = $config['mysql']['password'];
$mysql_database = $config['mysql']['database'];
$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_database);
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
} else {
$db = $mysqli;
}
} elseif ($database === 'sqlite') {
$db_path = 'db/ddd_db.sqlite';
if (file_exists($db_path)) {
try {
$db = new SQLite3($db_path);
} catch (Exception $e) {
die("Failed to open the SQLite database: " . $e->getMessage());
}
} else {
die("Database file does not exist: " . $db_path);
}
} else {
die("Unsupported database type specified in config.cfg");
}
} else {
die("Database configuration not found in config.cfg");
}
// Get mode from request
$mode = $_REQUEST['mode'] ?? 'DX';
// Construct query based on mode
if ($mode == "DX") {
echo "<img src='/ddddxhs_files/top100dx.png' alt='Top 100 DX Mode'>";
$query = "SELECT * FROM scores WHERE Mode = 'DX' ORDER BY Score DESC LIMIT 100";
} elseif ($mode == "EX") {
echo "<img src='/ddddxhs_files/top100ex.png' alt='Top 100 EX Mode'>";
$query = "SELECT * FROM scores WHERE Mode = 'EX' ORDER BY Score DESC LIMIT 100";
} else {
die("Invalid mode specified");
}
// Execute query and fetch results
$result = null;
if ($db instanceof SQLite3) {
$result = $db->query($query);
} elseif ($db instanceof mysqli) {
$result = $db->query($query);
}
if ($result) {
$counter = 1;
echo "<div class='top3'><ol>";
while ($row = ($db instanceof SQLite3) ? $result->fetchArray(SQLITE3_ASSOC) : $result->fetch_assoc()) {
$output = "<span id='player'>" . $counter . " " . $row["Name"] . "</span>" . "&nbsp;&nbsp;&nbsp;" .
"<span id='score'>" . number_format($row["Score"]) . "</span>";
// Retrieve the boss names and split them into an array
$bosses = explode(",", $row["Bosses"]);
echo "<li class='scoreEntry " . ($counter % 2 == 0 ? 'even' : 'odd') . "'>";
echo "<div class='scoreInfo'>";
echo $output;
echo "</div>";
if (!empty($bosses)) {
echo "<div class='bossImages'>";
// Display an image for each boss name
foreach ($bosses as $boss) {
$bossImage = trim(strtolower($boss)) . ".png";
if ($bossImage != ".png") {
echo "<div class='bossImageWrapper'>";
echo "<img id='boss_image' src='/boss_images/" . $bossImage . "' alt='" . $boss . "' title='" . $boss . "'>";
echo "<div class='bossLabel'>" . $boss . "</div>";
echo "</div>";
}
}
echo "</div>";
}
echo "</li>";
$counter++;
}
echo "</ol></div>";
} else {
echo "<br>0 results";
}
// Close database connection
if ($db instanceof SQLite3) {
$db->close();
} elseif ($db instanceof mysqli) {
$db->close();
}
?>
<br>
<a class='ddd' href='ddd_index.php'>Back</a>