Ajout des écoles + changement CSS
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
<?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 écoles / formations
|
||||
// Retourne un tableau vide si la table n'existe pas encore (pas de die() pour que la page
|
||||
// Expériences continue de fonctionner tant que le script SQL n'a pas été exécuté)
|
||||
function listeEcoles() {
|
||||
global $dbh;
|
||||
|
||||
try {
|
||||
$stmt = $dbh->prepare('SELECT id, title, status, tags, description, duration, image_url FROM schools ORDER BY 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 {
|
||||
$stmt = $dbh->prepare('SELECT id, title, status, tags, description, duration, image_url FROM schools 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 é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'] ?? '');
|
||||
$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 '<article class="project-card">';
|
||||
|
||||
// Si la donnée avec l'image n'est pas null alors on l'affiche
|
||||
if (!empty($image)) {
|
||||
echo '<div class="project-banner">';
|
||||
echo '<img src="' . $image . '" alt="Image de l ecole ' . $titre . '">';
|
||||
|
||||
if (!empty($status)) {
|
||||
echo '<div class="project-state">' . $status . '</div>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '<div class="project-content">';
|
||||
echo '<h2>' . $titre . '</h2>';
|
||||
|
||||
echo '<p><strong>Période :</strong> ' . $duration . '</p>';
|
||||
|
||||
if (!empty($tags)) {
|
||||
echo '<div class="project-tags">';
|
||||
foreach ($tags as $tag) {
|
||||
echo '<span class="tag">' . htmlspecialchars($tag) . '</span>';
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '<p>' . $description . '</p>';
|
||||
|
||||
// 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_school=' . $id . '">Modifier</a>';
|
||||
echo '<a class="btn-submit btn-delete" href="../scripts/removeSchool.php?id=' . $id . '" onclick="return confirm(\'Voulez-vous vraiment supprimer cette école ?\');">Supprimer</a>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
echo '</article>';
|
||||
}
|
||||
|
||||
// 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 '<div class="projects-list">';
|
||||
foreach ($ecoles as $ecole) {
|
||||
afficherEcoleCard($ecole, false);
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
// Fonction identique à celle en haut mais ajout de boutons pour le panel admin
|
||||
function afficherEcolesAdmin() {
|
||||
$ecoles = listeEcoles();
|
||||
|
||||
echo '<div class="projects-list">';
|
||||
foreach ($ecoles as $ecole) {
|
||||
afficherEcoleCard($ecole, true);
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
// Ajout de connexion a la bdd
|
||||
require_once('../functions/databaseConnection.php');
|
||||
|
||||
// Fonction qui récupère un réglage dans la table settings (clé / valeur)
|
||||
// Retourne null si le réglage n'existe pas OU si la table n'a pas encore été créée :
|
||||
// contrairement aux autres fonctions on ne fait pas de die() ici pour que le site
|
||||
// continue de fonctionner tant que le script SQL n'a pas été exécuté
|
||||
function recupererSetting($name) {
|
||||
global $dbh;
|
||||
|
||||
try {
|
||||
$stmt = $dbh->prepare('SELECT value FROM settings WHERE name = :name');
|
||||
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
return $row ? $row['value'] : null;
|
||||
} catch (PDOException $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction qui affiche la notification de la page d'accueil (si elle est activée)
|
||||
function afficherNotice() {
|
||||
$enabled = recupererSetting('site_notice_enabled');
|
||||
$titre = recupererSetting('site_notice_title');
|
||||
$texte = recupererSetting('site_notice_text');
|
||||
|
||||
// Valeurs par défaut tant que la table settings n'existe pas encore
|
||||
if ($titre === null && $texte === null) {
|
||||
$enabled = '1';
|
||||
$titre = 'Des bugs peuvent encore se produire.';
|
||||
$texte = "Si le CSS ou les images s'affichent mal, pensez à vider le cache de votre navigateur (Ctrl + F5 ou Cmd + Shift + R) pour voir les dernières modifications.";
|
||||
}
|
||||
|
||||
// Si la notification est désactivée ou vide on n'affiche rien
|
||||
if ($enabled !== '1' || (empty($titre) && empty($texte))) {
|
||||
return;
|
||||
}
|
||||
|
||||
echo '<p class="dev-cache-notice">';
|
||||
if (!empty($titre)) {
|
||||
echo '<strong>' . htmlspecialchars($titre) . '</strong> ';
|
||||
}
|
||||
echo nl2br(htmlspecialchars($texte));
|
||||
echo '</p>';
|
||||
}
|
||||
@@ -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>';
|
||||
}
|
||||
Reference in New Issue
Block a user