Files
Portfolio-Esteban/functions/listProject.php
T

77 lines
2.6 KiB
PHP

<?php
// Ajout de connexion a la bdd
require_once('../functions/databaseConnection.php');
// Fonction qui va faire une requête SQL afin de collecter tous les projets
function listeProjets() {
// Préparation de la variable
global $dbh;
// Essayer
try {
// Requête SQL qui récupère titre, tags, description, image_url
$stmt = $dbh->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 '<div class="projects-list">';
// 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 '<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 du projet ' . $titre . '">';
echo '</div>';
}
// Ajout de la class project-content et du titre
echo '<div class="project-content">';
echo '<h2>' . $titre . '</h2>';
// Si les tags ne sont pas vides alors afficher
if (!empty($tags)) {
echo '<div class="project-tags">';
foreach ($tags as $tag) {
echo '<span class="tag">' . htmlspecialchars($tag) . '</span>';
}
echo '</div>';
}
// Ajout de la description et fin des classes
echo '<p>' . $description . '</p>';
echo '</div>';
echo '</article>';
}
echo '</div>';
}