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 '

';
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 '
';
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 '
';
}