7.8 KiB
Journal de Bord - SAE S2.02
Séance 1
Objectif de la séance : Mettre en place le projet.
Travail réalisé :
- Création du dépôt sur Grond et ajout des collaborateurs (Ulysse Jarnouen, Denis Monnerat).
- Création du fichier "README.md".
- Création du fichier "JOURNAL.md".
Difficultés rencontrées : Nous avons des TP de retard donc on ne va pas commencer le projet dans cette séance mais la prochaine.
Décisions prises : Mise en place du workflow Git avec une branche dédiée par séance.
Travail de chacun : Pour cette séance on est ensemble et on configure le Git et le dépôt.
Points à reprendre à la séance suivante : Commencer réellement le projet.
Usage de l'IA (Séance 1) :
Prompts utilisés : Demandes d'aide sur la configuration initiale de Git, le fonctionnement des branches, et la syntaxe pour bien rédiger les fichiers .md (README et JOURNAL).
Extraits de réponse jugés utiles : Les explications claires sur le workflow Git (pourquoi on ne travaille pas sur le main, l'utilité de git checkout -b) et le rôle d'une Pull Request.
Les symboles '#' et '##' : Les Titres Le nombre de '#' détermine l'importance et la taille du titre. C’est l’équivalent des balises '
' et '
' en HTML. "#" Titre Principal : Crée un titre de niveau 1 (très grand, utilisé pour le nom du projet). "##" Sous-Titre : Crée un titre de niveau 2 (taille moyenne, parfait pour séparer tes sections comme "Membres du binôme" ou "Séance 1"). "###" Titre de niveau 3 : Pour des sous-sections encore plus petites. Règle d'or : Il faut toujours mettre un espace entre les '#' et le premier mot (écris '##' Séance 1 et non '##Séance 1').
- Le symbole '' : Les listes et le style L'astérisque change de rôle selon la façon dont tu l'utilises : Pour faire des listes à puces : Si tu places un '' au tout début d'une ligne, suivi d'un espace, cela génère une liste propre. Pour modifier le style du texte : Si tu colles les astérisques autour d'un mot ou d'une phrase (sans espace cette fois) : 'texte' (un seul de chaque côté) : Met le mot en italique. 'texte' (deux de chaque côté) : Met le mot en gras (très pratique pour faire ressortir les mots-clés).
Séance 2
Objectif de la séance : Avancer sur le projet.
Travail réalisé :
- Aucun, Tajeddine et moi étions absents.
Difficultés rencontrées : Absence du binôme.
Décisions prises : Rattraper le travail pendant la séance 3.
Travail de chacun : Rien pour cette séance.
Points à reprendre à la séance suivante : Rattraper le retard et commencer à coder.
Usage de l'IA (Séance 2) : Aucun.
Séance 3
Objectif de la séance : Rattraper la séance 2, définir la répartition des rôles, réparer les problèmes de Git et avancer sur la gestion des jeux.
Répartition des tâches décidée :
- Tajeddine : S'occupe de l'interface utilisateur (Accueil, listes des jeux par catégories, fiche détaillée d'un jeu, et barre de recherche).
- Ibrahim : S'occupe de l'administration des données (Formulaires d'ajout et de modification, suppression des jeux, et filtres de tri).
Travail réalisé :
- Création de la vue
formulaire_ajout.php( pour l'ajout et la modification). - Création du contrôleur
Jeux.phpet mise à jour deGame_model.phppour gérer l'insertion, la mise à jour et la suppression. - Configuration de
base_urldansconfig.phpet ajout deurletformdansautoload.php.
Difficultés rencontrées : * Conflits sur Git en voulant fusionner les branches.
- La base de données bloquait l'ajout en silence car on avait oublié le champ
descriptionqui est obligatoire (NOT NULLdans la table).
Travail de chacun : * Ibrahim : Réparation du dépôt Git, configuration du projet, et code complet des fonctionnalités "Créer", "Modifier" et "Supprimer" un jeu.
Points à reprendre à la séance suivante (Séance 4) : * Ibrahim : Faire la Mission 4 (Ajouter les filtres de tri par titre/année sur les listes).
- Tajeddine : Avancer sur l'affichage visuel des listes de jeux pour qu'on puisse y intégrer les boutons de modification/suppression et les filtres.
Usage de l'IA (Séance 3) : Prompts utilisés : Demande de commandes pour nettoyer Git après un conflit, aide pour comprendre une erreur de "fonction non définie", et aide pour trouver l'erreur d'insertion MariaDB. Extraits de réponse jugés utiles :
-
L'armoire Jeux est parfaitement déclarée ! Il faut maintenant y ajouter notre tiroir, c'est-à-dire la méthode ajouter(). À l'intérieur de cette méthode, nous avons besoin de deux instructions que tu as déjà utilisées tout à l'heure : L'instruction pour charger l'outil natif des URL (le helper). L'instruction pour charger et afficher la vue qui s'appellera formulaire_ajout_vue. Comment vas-tu écrire cette fonction public function ajouter() avec ces deux lignes à l'intérieur de ta classe ?
-
Ton début de code pour la classe Jeux est parfait. Dans CodeIgniter, la commande $this->load fonctionne comme un couteau suisse. Pour l'utiliser, on lui ajoute une flèche -> suivie de l'action que l'on veut faire. Dans notre fonction ajouter(), nous avons besoin de faire deux actions : Charger un outil (helper) pour gérer les liens web. L'outil s'appelle 'url' et la commande à utiliser est helper(). Charger l'interface visuelle (vue) qui contiendra le formulaire. Nous allons l'appeler 'formulaire_ajout_vue' et la commande est view(). En utilisant la syntaxe $this->load->..., comment écrirais-tu ces deux lignes complètes à l'intérieur de ta fonction ajouter() ?
Séance 4 - Finalisation et Intégration du Projet (Front & Back)
Objectif de la séance : Terminer l'architecture MVC, finaliser les filtres de tri (, lier le travail de nous deux et corriger les bugs de fusion (merge) pour rendre le site 100 % fonctionnel.
Travail de Tajeddine :
- Création des vues publiques de l'application : Accueil, listes de jeux filtrées, résultats de recherche et fiche détaillée.
- Création des contrôleurs associés (
Home,Category,Genre,Game). - Implémentation du moteur de recherche par mots-clés.
- Mise en place des modèles de base pour les catégories et les genres.
Travail d'Ibrahim (:
- suppression de tout le HTML dans les contrôleurs
- Tri (par Titre et Année) et création de la vue d'administration (
liste_jeux_vue.php) incluant les boutons d'ajout, de modification et de suppression. - Débogage global du projet suite à la fusion :
- Activation de la base de données dans
$autoload['libraries']pour éviter les plantages sur les pages publiques. - Alignement des modèles (
Game_model,Category_model,Genre_model) et des vues avec la réalité de la base de données MariaDB (correction des clés primairesgameIdenid, et des colonnestitleenname,yearenreleaseYear). - Résolution du problème d'affichage des images stockées au format
mediumbloben utilisant un encodage natif PHP (base64_encode).
- Activation de la base de données dans
Difficultés rencontrées : * Énormément d'erreurs PHP ("Undefined array key") et SQL ("Erreur 1054 : Colonne inconnue") apparues après la fusion des codes, causées par des différences entre le nom des variables et le schéma réel de la base de données.
- Difficulté à afficher l'image (Poster) du jeu
Usage de l'IA (Séance 4) :
- Prompts utilisés : Envoi des logs d'erreurs CodeIgniter (
Undefined array key,Call to undefined method), requêtes SQL en erreur (Erreur 1054), et questions sur l'affichage d'une image BLOB en HTML. - Extraits de réponse jugés utiles : * L'IA m'a expliqué que la connexion à la BDD n'était pas persistante d'une page à l'autre sans l'Autoload.
- L'IA m'a fourni la syntaxe HTML/PHP exacte (
<img src="data:image/jpeg;base64,...">) pour afficher notre format d'image.
- L'IA m'a fourni la syntaxe HTML/PHP exacte (