Ajout des écoles + changement CSS

This commit is contained in:
Esteban
2026-07-02 10:20:47 +02:00
parent e50eeacaeb
commit a019dcb00d
17 changed files with 1075 additions and 136 deletions
+98
View File
@@ -0,0 +1,98 @@
<?php
// Ajout de connexion a la bdd
require_once('../functions/databaseConnection.php');
// Fonction qui va faire une requête SQL afin de collecter toutes les catégories de compétences
// Retourne un tableau vide si la table n'existe pas encore (pas de die() pour que la page
// Compétences continue de fonctionner tant que le script SQL n'a pas été exécuté)
function listeSkills() {
global $dbh;
try {
$stmt = $dbh->prepare('SELECT id, title, icon, items, position FROM skills ORDER BY position ASC, id ASC');
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
return [];
}
}
// Fonction qui permet de récupérer une catégorie de compétences par id (pour la modification dans le panel Admin)
function recupererSkillParId($id) {
global $dbh;
try {
$stmt = $dbh->prepare('SELECT id, title, icon, items, position FROM skills WHERE 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 de compétences (utilisée par la page publique et le panel admin)
// Les items sont stockés un par ligne, au format "classes-icone|Texte" (icône optionnelle)
function afficherSkillCard($skill, $admin = false) {
$id = (int) $skill['id'];
$titre = htmlspecialchars($skill['title']);
$icone = htmlspecialchars(!empty($skill['icon']) ? $skill['icon'] : 'fa-solid fa-star');
echo '<div class="skill-category">';
echo '<div class="skill-category-icon"><i class="' . $icone . '"></i></div>';
echo '<h2>' . $titre . '</h2>';
echo '<ul class="skill-list">';
// Un item par ligne
$items = array_filter(array_map('trim', preg_split('/\r\n|\r|\n/', $skill['items'])));
foreach ($items as $item) {
// Icône optionnelle avant le | sinon icône par défaut
$itemIcone = 'fa-solid fa-check';
$label = $item;
if (strpos($item, '|') !== false) {
list($itemIcone, $label) = array_map('trim', explode('|', $item, 2));
}
echo '<li><i class="' . htmlspecialchars($itemIcone) . '"></i> ' . htmlspecialchars($label) . '</li>';
}
echo '</ul>';
// Boutons de modification / suppression pour le panel admin
if ($admin) {
echo '<div class="admin-actions">';
echo '<a class="btn-submit btn-edit" href="./admin.php?edit_skill=' . $id . '">Modifier</a>';
echo '<a class="btn-submit btn-delete" href="../scripts/removeSkill.php?id=' . $id . '" onclick="return confirm(\'Voulez-vous vraiment supprimer cette catégorie de compétences ?\');">Supprimer</a>';
echo '</div>';
}
echo '</div>';
}
// Fonction qui va afficher les compétences sur la page publique
function afficherSkills() {
$skills = listeSkills();
// Si la table est vide ou n'existe pas encore
if (empty($skills)) {
echo '<p class="admin-notice">Les compétences seront bientôt disponibles.</p>';
return;
}
echo '<div class="skills-grid">';
foreach ($skills as $skill) {
afficherSkillCard($skill, false);
}
echo '</div>';
}
// Fonction identique à celle en haut mais ajout de boutons pour le panel admin
function afficherSkillsAdmin() {
$skills = listeSkills();
echo '<div class="skills-grid">';
foreach ($skills as $skill) {
afficherSkillCard($skill, true);
}
echo '</div>';
}