diff --git a/blog/categories/ajouter_categorie.html b/blog/categories/ajouter_categorie.html
new file mode 100644
index 0000000..3312c74
--- /dev/null
+++ b/blog/categories/ajouter_categorie.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Ajouter une catégorie
+
+
+
+
+
+
+
+
Ajouter une catégorie
+
+
+
Le nom de catégorie est obligatoire.
+
+
+
Cette catégorie existe déjà. Veuillez en choisir une autre.
+
+
+
Catégorie ajoutée avec succès !
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blog/categories/ajouter_categorie.js b/blog/categories/ajouter_categorie.js
new file mode 100644
index 0000000..f2045eb
--- /dev/null
+++ b/blog/categories/ajouter_categorie.js
@@ -0,0 +1,42 @@
+
+const form = document.getElementById("addCategoryForm");
+const nameField = document.getElementById("categoryName");
+const descField = document.getElementById("categoryDescription");
+
+const errorEmpty = document.getElementById("errorEmpty");
+const errorExists = document.getElementById("errorExists");
+const successMessage = document.getElementById("successMessage");
+
+// Catégories existantes ( à remplacer en BD si besoin)
+const existingCategories = ["Actualités", "Chien", "Chat", "Boutique"];
+
+form.addEventListener("submit", function (e) {
+ e.preventDefault();
+
+ const nom = nameField.value.trim();
+
+ //Remettre tout a zero
+ errorEmpty.classList.add("d-none");
+ errorExists.classList.add("d-none");
+ successMessage.classList.add("d-none");
+
+ //Erreur champs vide
+ if (nom === "") {
+ errorEmpty.classList.remove("d-none");
+ return;
+ }
+
+ //Erreur catégorie existante
+ if (existingCategories.includes(nom)) {
+ errorExists.classList.remove("d-none");
+ return;
+ }
+
+ //Succès
+ successMessage.classList.remove("d-none");
+
+
+ //Ajout d'une nouvelle catégorie en BDD
+ categoriesExistantes.push(nom);
+
+});
\ No newline at end of file
diff --git a/blog/categories/articles/ajouter_article.html b/blog/categories/articles/ajouter_article.html
new file mode 100644
index 0000000..cce23d3
--- /dev/null
+++ b/blog/categories/articles/ajouter_article.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+ Ajouter un article
+
+
+
+
+
+
+
+
Ajouter un article
+
+
+
Le titre de l'article est obligatoire
+
+
+
+ Format d'image invalide. Formats acceptés : JPG, PNG
+
+
+
+
Ce titre existe déjà. Choisissez un autre titre.
+
+
+
Article ajouté avec succès !
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blog/categories/articles/ajouter_article.js b/blog/categories/articles/ajouter_article.js
new file mode 100644
index 0000000..54196ba
--- /dev/null
+++ b/blog/categories/articles/ajouter_article.js
@@ -0,0 +1,55 @@
+const form = document.getElementById('addArticleForm');
+const imgField = document.getElementById('articleImage');
+const titleField = document.getElementById('articleTitle');
+const contentField = document.getElementById('articleContent');
+const categoryField = document.getElementById('articleCategory');
+const publishedField = document.getElementById('articlePublished');
+
+const errorEmpty = document.getElementById('errorEmpty');
+const errorImage = document.getElementById('errorImage');
+const errorExists = document.getElementById('errorExists');
+const successMsg = document.getElementById('successMsg');
+
+// Simulation BDD
+const titreExistants = ['décoration noel', 'coupe de chien'];
+
+form.addEventListener('submit', function(e) {
+ e.preventDefault();
+
+ const titre = titleField.value.trim() .toLowerCase();
+ const fichierImage = imgField.files[0];
+
+ // Reset messages
+ errorEmpty.classList.add('d-none');
+ errorImage.classList.add('d-none');
+ errorExists.classList.add('d-none');
+ successMsg.classList.add('d-none');
+
+ // Titre obligatoire
+ if (titre === "") {
+ errorEmpty.classList.remove('d-none');
+ return;
+ }
+
+ // Titre déjà existant
+ if (titreExistants.includes(titre)) {
+ errorExists.classList.remove('d-none');
+ return;
+ }
+
+ // Image invalide
+ if (fichierImage) {
+ const validFormats = ['image/jpeg', 'image/png'];
+ if (!validFormats.includes(fichierImage.type)) {
+ errorImage.classList.remove('d-none');
+ return;
+ }
+ }
+
+ // Succès
+ successMsg.classList.remove('d-none');
+
+ // Simuler enregistrement
+ titreExistants.push(titre);
+
+});
diff --git a/blog/categories/articles/modifier_article.html b/blog/categories/articles/modifier_article.html
new file mode 100644
index 0000000..8808bc7
--- /dev/null
+++ b/blog/categories/articles/modifier_article.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Modifier un article
+
+
+
+
+
+
+
+
+
Modifier un article
+
+
+
+ ❌ Le titre de l'article est obligatoire.
+
+
+
+
+ Format d'image invalide. Formats acceptés : JPG, PNG, GIF.
+
+
+
+
+ Ce titre existe déjà. Veuillez en choisir un autre.
+
+
+
+
+ L'article a été modifié avec succès !
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+