-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.php
More file actions
160 lines (141 loc) · 7.64 KB
/
Copy pathindex.php
File metadata and controls
160 lines (141 loc) · 7.64 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
// Inclusion du fichier de configuration
include 'config.php';
// Vérification de la présence du message de succès
$message = "";
if (isset($_GET['message']) && $_GET['message'] === 'success') {
$message = "<div class='message success'>Course modifiée avec succès ! <button class='close' onclick='this.parentElement.style.display=\"none\";'>×</button></div>";
}
if (isset($_GET['delete_id'])) {
$delete_id = intval($_GET['delete_id']); // Sécuriser l'ID
// Requête préparée pour éviter l'injection SQL
$stmt = $conn->prepare("SELECT photos, sommet, itineraire, date FROM courses WHERE id = ?");
$stmt->bind_param("i", $delete_id);
$stmt->execute();
$result = $stmt->get_result();
if ($row = $result->fetch_assoc()) {
$photos = explode(",", $row['photos']);
$upload_dir = 'uploads/' . preg_replace('/[^a-zA-Z0-9]/', '_', $row['sommet']) . '_' . preg_replace('/[^a-zA-Z0-9]/', '_', $row['itineraire']) . '_' . $row['date'];
// Supprimer chaque photo dans le répertoire
foreach ($photos as $photo) {
$photo_path = $upload_dir . '/' . basename($photo);
if (file_exists($photo_path) && is_file($photo_path)) {
unlink($photo_path);
}
}
// Fonction pour supprimer un répertoire et son contenu
function deleteDir($dir) {
if (!is_dir($dir)) return;
$files = array_diff(scandir($dir), array('.', '..'));
foreach ($files as $file) {
$filePath = $dir . DIRECTORY_SEPARATOR . $file;
is_dir($filePath) ? deleteDir($filePath) : unlink($filePath);
}
rmdir($dir);
}
// Supprimer le répertoire après suppression des fichiers
if (is_dir($upload_dir)) {
deleteDir($upload_dir);
}
}
$stmt->close();
// Supprimer la course de la base de données
$stmt = $conn->prepare("DELETE FROM courses WHERE id = ?");
$stmt->bind_param("i", $delete_id);
if ($stmt->execute()) {
echo "<div class='message success'>Course supprimée avec succès !
<button class='close' onclick='this.parentElement.style.display=\"none\";'>×</button>
</div>";
} else {
echo "<div class='message error'>Erreur lors de la suppression : " . htmlspecialchars($stmt->error) . "
<button class='close' onclick='this.parentElement.style.display=\"none\";'>×</button>
</div>";
}
$stmt->close();
}
// Gestion de la recherche
$search = isset($_GET['search']) ? $_GET['search'] : '';
// Gestion du tri des colonnes
$sortable_columns = ['sommet', 'itineraire', 'altitude', 'denivele', 'duree', 'type_activite', 'date'];
$order_column = isset($_GET['sort_by']) && in_array($_GET['sort_by'], $sortable_columns) ? $_GET['sort_by'] : 'date';
$order_direction = isset($_GET['order']) && $_GET['order'] === 'asc' ? 'ASC' : 'DESC';
// Construction de la requête SQL
$sql = "SELECT * FROM courses WHERE sommet LIKE ? OR itineraire LIKE ? ORDER BY $order_column $order_direction";
$stmt = $conn->prepare($sql);
$search_term = '%' . $search . '%';
$stmt->bind_param('ss', $search_term, $search_term);
$stmt->execute();
$result = $stmt->get_result();
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MountainLog | Mes Courses</title>
<link rel="stylesheet" href="assets/styles.css">
<link rel="stylesheet" href="assets/messages_styles.css">
</head>
<body>
<div class="container">
<h1>Liste des Courses</h1>
<!-- Affichage des messages éventuels -->
<?php if (!empty($message)): ?>
<div class="message">
<?= $message ?>
</div>
<?php endif; ?>
<!-- Conteneur regroupant la barre de recherche et le bouton "Ajouter une nouvelle course" -->
<div class="search-container">
<form method="GET" action="" class="search-form">
<input type="text" name="search" value="<?= htmlspecialchars($search ?? '') ?>" placeholder="Rechercher un sommet ou un itinéraire" aria-label="Rechercher une course">
<button type="submit" title="Rechercher">Rechercher</button>
</form>
<a href="add_course" class="btn-add" title="Ajouter une nouvelle course">+ Ajouter</a>
</div>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th><a href="?sort_by=sommet&order=<?= ($order_column === 'sommet' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Sommet</a></th>
<th><a href="?sort_by=itineraire&order=<?= ($order_column === 'itineraire' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Itinéraire</a></th>
<th><a href="?sort_by=altitude&order=<?= ($order_column === 'altitude' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Altitude (m)</a></th>
<th><a href="?sort_by=denivele&order=<?= ($order_column === 'denivele' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Dénivelé (m)</a></th>
<th><a href="?sort_by=duree&order=<?= ($order_column === 'duree' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Durée</a></th>
<th><a href="?sort_by=type_activite&order=<?= ($order_column === 'type_activite' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Type d'activité</a></th>
<th><a href="?sort_by=date&order=<?= ($order_column === 'date' && $order_direction === 'ASC') ? 'desc' : 'asc' ?>">Date</a></th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php if ($result->num_rows > 0): ?>
<?php while ($row = $result->fetch_assoc()): ?>
<tr>
<td data-label="Sommet"><?= htmlspecialchars($row['sommet']) ?></td>
<td data-label="Itinéraire"><?= htmlspecialchars($row['itineraire']) ?></td>
<td data-label="Altitude"><?= htmlspecialchars($row['altitude']) ?> m</td>
<td data-label="Dénivelé"><?= htmlspecialchars($row['denivele']) ?> m</td>
<td data-label="Durée"><?= htmlspecialchars($row['duree']) ?></td>
<td data-label="Type d'activité"><?= htmlspecialchars($row['type_activite']) ?></td>
<td data-label="Date"><?= htmlspecialchars($row['date']) ?></td>
<td data-label="Actions">
<a href="details_course?id=<?= $row['id'] ?>" class="btn-details" title="Voir les détails">🔍 Détails</a>
<a href="edit_course?id=<?= $row['id'] ?>" class="btn-edit" title="Modifier la course">✏️ Modifier</a>
<a href="?delete_id=<?= $row['id'] ?>" class="btn-delete" onclick="return confirm('Êtes-vous sûr de vouloir supprimer cette course ?')" title="Supprimer la course">🗑️ Supprimer</a>
</td>
</tr>
<?php endwhile; ?>
<?php else: ?>
<tr>
<td colspan="8" class="no-data">Aucune course enregistrée</td>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</body>
</html>
<?php
$conn->close();
?>