prepare(' SELECT s.id, s.title, s.status, s.tags, s.description, s.duration, s.image_url, s.markdown, s.link_url, s.created_at, sp.pdf_filename FROM schools s LEFT JOIN school_pdfs sp ON sp.school_id = s.id ORDER BY s.id DESC '); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return []; } } // Fonction qui permet de récupérer une école par id (pour la modification dans le panel Admin) function recupererEcoleParId($id) { global $dbh; try { // Même principe que listeEcoles() : le PDF est joint pour son nom de fichier // uniquement, jamais son contenu binaire $stmt = $dbh->prepare(' SELECT s.id, s.title, s.status, s.tags, s.description, s.duration, s.image_url, s.markdown, s.link_url, s.created_at, sp.pdf_filename FROM schools s LEFT JOIN school_pdfs sp ON sp.school_id = s.id WHERE s.id = :id '); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { return false; } } // Fonction interne qui affiche une carte école (utilisée par la page publique et le panel admin) function afficherEcoleCard($ecole, $admin = false) { $id = (int) $ecole['id']; $titre = htmlspecialchars($ecole['title']); $description = nl2br(htmlspecialchars($ecole['description'])); $duration = htmlspecialchars($ecole['duration']); $image = htmlspecialchars($ecole['image_url']); $status = htmlspecialchars($ecole['status'] ?? ''); $markdown = trim($ecole['markdown'] ?? ''); $lien = trim($ecole['link_url'] ?? ''); $pdf = trim($ecole['pdf_filename'] ?? ''); $tags = []; // S'il y a des tags alors on les sépares grâce à la virgule (tags1,tags2,etc...) if (!empty($ecole['tags'])) { $tags = array_filter(array_map('trim', explode(',', $ecole['tags']))); } echo '
'; // Si la donnée avec l'image n'est pas null alors on l'affiche if (!empty($image)) { echo '
'; echo 'Image de l ecole ' . $titre . ''; if (!empty($status)) { echo '
' . $status . '
'; } echo '
'; } echo '
'; echo '

' . $titre . '

'; echo '

Période : ' . $duration . '

'; if (!empty($tags)) { echo '
'; foreach ($tags as $tag) { echo '' . htmlspecialchars($tag) . ''; } echo '
'; } echo '

' . $description . '

'; // Indicateur de page détaillée (uniquement sur la page publique) : markdown > PDF > lien externe > rien if (!$admin) { if ($markdown !== '') { echo ' Voir la page détaillée'; } elseif ($pdf !== '') { echo ' Voir le PDF'; } elseif ($lien !== '') { echo ' Voir le lien externe'; } else { echo ' Pas de page détaillée'; } } // Boutons de modification / suppression pour le panel admin if ($admin) { echo '
'; echo 'Modifier'; echo 'Supprimer'; echo '
'; } echo '
'; echo '
'; } // Fonction qui va afficher les écoles sur la page publique function afficherEcoles() { $ecoles = listeEcoles(); // Si la table est vide ou n'existe pas encore on n'affiche rien if (empty($ecoles)) { return; } echo '
'; foreach ($ecoles as $ecole) { afficherEcoleCard($ecole, false); } echo '
'; } // Fonction identique à celle en haut mais ajout de boutons pour le panel admin function afficherEcolesAdmin() { $ecoles = listeEcoles(); echo '
'; foreach ($ecoles as $ecole) { afficherEcoleCard($ecole, true); } echo '
'; }