prepare('SELECT id, title, status, tags, description, image_url FROM projects 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 projets par id et donc de modifier une xp en particulier en ciblant l'id function recupererProjetParId($id) { global $dbh; try { $stmt = $dbh->prepare('SELECT id, title, status, tags, description, image_url FROM projects WHERE id = :id'); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC); // En cas d'erreur retourner false et envoyer un message d'erreur avec l'erreur } catch (PDOException $e) { die("Erreur de connexion à la base de donnée portfolio :" . $e->getMessage()); return false; } } // Fonction qui va afficher les projets function afficherProjets() { // Récupération de la liste des projets $projets = listeProjets(); // Ajout de la class pour la liste des projets FUTUR CSS echo '
'; // Pour chaque projet dans le ARRAY foreach ($projets as $projet) { // On récupère le titre, la description et l'image et le tableau avec les tags $titre = htmlspecialchars($projet['title']); $description = nl2br(htmlspecialchars($projet['description'])); $image = htmlspecialchars($projet['image_url']); $status = htmlspecialchars($projet['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($projet['tags'])) { $tags = array_filter(array_map('trim', explode(',', $projet['tags']))); } echo '
'; // Si la donnée avec l'image n'est pas null alors on l'affiche if (!empty($image)) { echo '
'; echo 'Image du projet ' . $titre . ''; if (!empty($status)) { echo '
' . $status . '
'; } echo '
'; } // Ajout de la class project-content et du titre echo '
'; echo '

' . $titre . '

'; // 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 afficherProjetsAdmin() { $projets = listeProjets(); echo '
'; foreach ($projets as $projet) { $id = (int) $projet['id']; $titre = htmlspecialchars($projet['title']); $description = nl2br(htmlspecialchars($projet['description'])); $image = htmlspecialchars($projet['image_url']); $status = htmlspecialchars($projet['status'] ?? ''); $tags = []; if (!empty($projet['tags'])) { $tags = array_filter(array_map('trim', explode(',', $projet['tags']))); } echo '
'; if (!empty($image)) { echo '
'; echo 'Image du projet ' . $titre . ''; if (!empty($status)) { echo '
' . $status . '
'; } echo '
'; } echo '
'; echo '

' . $titre . '

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