prepare('SELECT title, tags, description, image_url FROM projects'); // 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 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']); $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 . ''; 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 '
'; }