prepare('SELECT id, title, status, xptype, tags, description, duration, image_url FROM experiences ORDER BY id DESC'); // Execution de la requête SQL $stmt->execute(); // Retourne toutes les données collectés dans un ARRAY return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // En cas d'erreur die("Erreur de connexion à la base de donnée portfolio :".$e->getMessage()); return []; } } // Fonction qui permet de récupérer les experiences par id et donc de modifier une xp en particulier en ciblant l'id function recupererXPParId($id) { global $dbh; try { // Préparation de la requête préparée $stmt = $dbh->prepare('SELECT id, title, status, xptype, tags, description, duration, image_url FROM experiences WHERE id = :id'); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC); // En cas d'erreur => renvoyer un message avec l'erreur } catch (PDOException $e) { die("Erreur de connexion à la base de donnée portfolio :" . $e->getMessage()); // Retourner false en cas d'eerreur return false; } } // Fonction qui va afficher les experiences function afficherXP() { // Récupération de la liste des experiences $experiences = listeXP(); // Ajout de la class pour la liste des experiences FUTUR CSS echo '
'; // Pour chaque experience dans le ARRAY foreach ($experiences as $experience) { // On récupère le titre, le type, la description, la durée et l'image et le tableau avec les tags $titre = htmlspecialchars($experience['title']); $xptype = htmlspecialchars($experience['xptype']); $description = nl2br(htmlspecialchars($experience['description'])); $duration = htmlspecialchars($experience['duration']); $image = htmlspecialchars($experience['image_url']); $status = htmlspecialchars($experience['status'] ?? ''); $tags = []; // S'il y a des tags alors on les sépares grâce à la virgule que l'user à ajouté dans le champs (tags1,tags2,etcc...) if (!empty($experience['tags'])) { $tags = array_filter(array_map('trim', explode(',', $experience['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 experience ' . $titre . ''; if (!empty($status)) { echo '
' . $status . '
'; } echo '
'; } // Ajout de la class project-content et du titre echo '
'; echo '

' . $titre . '

'; echo '

Type : ' . $xptype . '

'; echo '

Durée : ' . $duration . '

'; // Si les tags ne sont pas vides alors afficher if (!empty($tags)) { echo '
'; foreach ($tags as $tag) { echo '' . htmlspecialchars($tag) . ''; } echo '
'; } // Ajout de la description et fin des classes echo '

' . $description . '

'; echo '
'; echo '
'; } echo '
'; } // Fonction identique à celle en haut mais ajout de bouton function afficherXPAdmin() { $experiences = listeXP(); echo '
'; foreach ($experiences as $experience) { $id = (int) $experience['id']; $titre = htmlspecialchars($experience['title']); $xptype = htmlspecialchars($experience['xptype']); $description = nl2br(htmlspecialchars($experience['description'])); $duration = htmlspecialchars($experience['duration']); $status = htmlspecialchars($experience['status'] ?? ''); $image = htmlspecialchars($experience['image_url']); $tags = []; if (!empty($experience['tags'])) { $tags = array_filter(array_map('trim', explode(',', $experience['tags']))); } echo '
'; if (!empty($image)) { echo '
'; echo 'Image de l experience ' . $titre . ''; if (!empty($status)) { echo '
' . $status . '
'; } echo '
'; } echo '
'; echo '

' . $titre . '

'; // Si le status n'est pas vide alors on l'affiche if (!empty($status)) { echo '
' . $status . '
'; } echo '

Type : ' . $xptype . '

'; echo '

Durée : ' . $duration . '

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

' . $description . '

'; // Boutons qui vont permettrent la modification / Suppresion echo '
'; echo 'Modifier'; echo 'Supprimer'; echo '
'; echo '
'; echo '
'; } echo '
'; }