ajout d'une option de tri à l'accueil
This commit is contained in:
parent
06b02f4b54
commit
79740e2c8f
@ -12,6 +12,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
const monsterSearchSelect = document.getElementById('monsterSearchSelect');
|
||||
const monsterSearchResults = document.getElementById('monsterSearchResults');
|
||||
const selectedMonsterId = document.getElementById('selectedMonsterId');
|
||||
const monsterSort = document.getElementById('monsterSort');
|
||||
|
||||
// Variables globales
|
||||
let monsters = [];
|
||||
@ -37,6 +38,16 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
});
|
||||
}
|
||||
|
||||
// Ajouter l'écouteur pour le tri des monstres
|
||||
if (monsterSort) {
|
||||
monsterSort.addEventListener('change', function() {
|
||||
// Rediriger vers la même page avec le paramètre de tri
|
||||
const sortValue = this.value;
|
||||
console.log("Changement de tri: " + sortValue); // Pour le débogage
|
||||
window.location.href = `index.php?sort=${sortValue}`;
|
||||
});
|
||||
}
|
||||
|
||||
// Ajouter les écouteurs pour les cartes de monstres
|
||||
if (monsterList) {
|
||||
monsterList.addEventListener('click', function(e) {
|
||||
|
@ -82,11 +82,58 @@ function init_database($db) {
|
||||
/**
|
||||
* Récupérer tous les monstres
|
||||
*
|
||||
* @param string $sort_by Critère de tri ('name_asc', 'name_desc', 'quests_count', 'recent_quests')
|
||||
* @return array Liste des monstres
|
||||
*/
|
||||
function get_all_monsters() {
|
||||
function get_all_monsters($sort_by = 'name_asc') {
|
||||
$db = get_db_connection();
|
||||
$stmt = $db->query('SELECT * FROM monsters ORDER BY name ASC');
|
||||
|
||||
// Pour déboguer - log le paramètre de tri et la requête SQL
|
||||
error_log("Tri demandé: " . $sort_by);
|
||||
|
||||
switch ($sort_by) {
|
||||
case 'name_desc':
|
||||
$sql = 'SELECT * FROM monsters ORDER BY name DESC';
|
||||
$stmt = $db->query($sql);
|
||||
error_log("SQL exécuté: " . $sql);
|
||||
break;
|
||||
|
||||
case 'quests_count':
|
||||
// Version compatible avec SQLite
|
||||
$sql = '
|
||||
SELECT m.*, COUNT(q.id) as quest_count
|
||||
FROM monsters m
|
||||
LEFT JOIN quests q ON m.id = q.monster_id
|
||||
GROUP BY m.id
|
||||
ORDER BY quest_count DESC, m.name ASC
|
||||
';
|
||||
$stmt = $db->query($sql);
|
||||
error_log("SQL exécuté: " . $sql);
|
||||
break;
|
||||
|
||||
case 'recent_quests':
|
||||
// Version compatible avec SQLite
|
||||
$sql = '
|
||||
SELECT m.*,
|
||||
CASE WHEN MAX(q.date) IS NULL THEN 0 ELSE 1 END as has_quests,
|
||||
MAX(q.date) as latest_quest
|
||||
FROM monsters m
|
||||
LEFT JOIN quests q ON m.id = q.monster_id
|
||||
GROUP BY m.id
|
||||
ORDER BY has_quests DESC, latest_quest DESC, m.name ASC
|
||||
';
|
||||
$stmt = $db->query($sql);
|
||||
error_log("SQL exécuté: " . $sql);
|
||||
break;
|
||||
|
||||
case 'name_asc':
|
||||
default:
|
||||
$sql = 'SELECT * FROM monsters ORDER BY name ASC';
|
||||
$stmt = $db->query($sql);
|
||||
error_log("SQL exécuté: " . $sql);
|
||||
break;
|
||||
}
|
||||
|
||||
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
|
20
index.php
20
index.php
@ -18,6 +18,9 @@ require_once 'includes/functions.php';
|
||||
$page_title = 'MH Wilds - Partage de Quêtes à Couronnes';
|
||||
$page_description = 'Partagez vos quêtes d\'investigation avec couronnes pour Monster Hunter Wilds et complétez votre collection !';
|
||||
|
||||
// Récupérer le paramètre de tri
|
||||
$current_sort = isset($_GET['sort']) ? $_GET['sort'] : 'name_asc';
|
||||
|
||||
// CSS supplémentaire pour la page d'accueil
|
||||
$extra_css = <<<EOT
|
||||
<style id="monster-search-styles">
|
||||
@ -74,8 +77,8 @@ $extra_js = <<<EOT
|
||||
<script src="assets/js/main.js"></script>
|
||||
EOT;
|
||||
|
||||
// Récupérer les données nécessaires
|
||||
$monsters = get_all_monsters();
|
||||
// Récupérer les données nécessaires avec le tri spécifié
|
||||
$monsters = get_all_monsters($current_sort);
|
||||
$active_announcements = get_all_announcements(true);
|
||||
|
||||
// Inclure l'en-tête
|
||||
@ -88,13 +91,24 @@ include 'includes/header.php';
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6 mx-auto">
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text"><i class="bi bi-search">🔍</i></span>
|
||||
<input type="text" class="form-control" id="monsterSearch" placeholder="Rechercher un monstre...">
|
||||
<button class="btn btn-outline-light" type="button" id="clearSearchBtn">Effacer</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Trier par</span>
|
||||
<select class="form-select" id="monsterSort">
|
||||
<option value="name_asc" <?php echo $current_sort === 'name_asc' ? 'selected' : ''; ?>>Nom (A-Z)</option>
|
||||
<option value="name_desc" <?php echo $current_sort === 'name_desc' ? 'selected' : ''; ?>>Nom (Z-A)</option>
|
||||
<option value="quests_count" <?php echo $current_sort === 'quests_count' ? 'selected' : ''; ?>>Nombre de quêtes</option>
|
||||
<option value="recent_quests" <?php echo $current_sort === 'recent_quests' ? 'selected' : ''; ?>>Quêtes récentes</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($active_announcements)): ?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user