Page d’administration (partie 2)
Continuons avec notre page d’administration. Nous allons permettre aux administrateurs de modifier ou supprimer les catégories.
Avant d’aller plus loin, modifions le bouton de retour en utilisant JavaScript :
<span onclick="goBack();" class=’close-modal’>x</span>
Créons la fonction JavaScript :
<script>
function goBack() {
window.history.back();
}
</script>
Modifions le lien de modification dans les catégories :
<?php
echo "<a href=’admin.php?page=1&edit=1&id=".$row[’id’]."’ class=’btn btn-primary’>Modifier</a>";
?>
Formulaire pour la modification :
<?php
// Edit
if(isset($_GET[’edit’]) && $_GET[’edit’] == 1) {
$idCategory = intval($_GET[’id’]);
$querySelectCategoryById = $dbConnect->prepare("SELECT * FROM category WHERE id=?");
$querySelectCategoryById->execute(array($idCategory));
$cat = $querySelectCategoryById->fetch();
?>
<div class=’modal-container’>
<div class=’modal-form’>
<span onclick="goBack();" class=’close-modal’>x</span>
<form method=’post’ action=’’>
<?php
if(isset($error)) {
echo "<div class=’alert alert-danger’>".$error."</div>";
}
?>
<input type=’text’ name=’categorie’ placeholder="Catégorie" class=’form-control’ value="<?php echo $cat[’titre’]; ?>" required />
<button name=’modifiercategory’ type=’submit’ class=’btn btn-primary’>Modifier</button>
</form>
</div>
</div>
<?php
}
?>
Traitement de la modification des catégories :
<?php
// Modifier Catégorie
if(isset($_POST[’modifiercategory’])) {
if(!empty($_POST[’categorie’])) {
$categorie = trim(htmlspecialchars($_POST[’categorie’]));
if($categorie != ’’) {
$idCategory = intval($_GET[’id’]);
$queryUpdateCategory = $dbConnect->prepare("UPDATE category SET titre=:titre WHERE id=:id");
$queryUpdateCategory->execute(array(’titre’ => $categorie, ’id’ => $idCategory));
header("Location: admin.php?page=1");
} else {
$error = "Veuillez remplir correctement les champs du formulaire";
}
} else {
$error = "Veuillez remplir correctement les champs du formulaire";
}
}
?>
Maintenant modifions le lien de suppression avec une confirmation :
<?php
echo "<a href=’admin.php?page=1&&delete=18393638393&&id=".$row[’id’]."’ class=’btn btn-danger’>Supprimer</a>";
?>
Attention, afin d’éviter de supprimer des catégories par erreur, vous devez demander une confirmation. Voici le lien avec le code javascript pour demander confirmation :
<?php
echo "<a onclick=’return confirm(\"Êtes vous sur de vouloir supprimer!\");’ href=’admin.php?page=1&&delete=18393638393&&id=".$row[’id’]."’ class=’btn btn-danger’>Supprimer</a>";
?>
Traitement de la suppression des catégories :
<?php
// Supprimer Catégorie
if(isset($_GET[’delete’]) && $_GET[’delete’] == 18393638393) {
$idCategory = intval($_GET[’id’]);
$queryDeleteCategory = $dbConnect->prepare("DELETE FROM category WHERE id=?");
$queryDeleteCategory->execute(array($idCategory));
header("Location: admin.php?page=1");
}
?>
Maintenant passons aux produits. Copions le code de la section des catégories pour le modifier par la suite.
NB: Dans le formulaire pour ajouter un produit, vous devez ajouter `enctype="multipart/form-data"` pour que le formulaire accepte les fichiers. C’est très important de ne pas l’oublier. De plus, n’oubliez pas de changer les valeurs `page=1` à `page=2` dans la section des produits.
Code complet :
<?php
else if(isset($_GET[’page’]) && $_GET[’page’] == 2) {
// Produit
if(isset($_GET[’add’]) && $_GET[’add’] == 1) {
?>
<div class=’modal-container’>
<div class=’modal-form’>
<span onclick="goBack();" class=’close-modal’>x</span>
<form method=’post’ action=’’ enctype="multipart/form-data">
<?php
if(isset($error)) {
echo "<div class=’alert alert-danger’>".$error."</div>";
}
?>
<select name=’category’ class=’form-control’ required>
<option value=’’>Catégories</option>
<?php
$querySelectCategory = $dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC");
$querySelectCategory->execute();
while($row = $querySelectCategory->fetch()) {
echo "<option value=’".$row[’id’]."’ >".$row[’titre’]."</option>";
}
?>
</select>
<input type=’file’ name="image" required class=’form-control’ />
<input type=’text’ name=’nom’ placeholder="Nom" class=’form-control’ required value="<?php if(isset($_POST[’nom’])) { echo $_POST[’nom’]; } ?>" />
<input type=’number’ step="any" name=’prix’ placeholder="Prix" class=’form-control’ required value="<?php if(isset($_POST[’prix’])) { echo $_POST[’prix’]; } ?>" />
<textarea name=’description’ class=’form-control’ required placeholder="Description"><?php if(isset($_POST[’description’])) { echo $_POST[’description’]; } ?></textarea>
<button name=’ajouterproduit’ type=’submit’ class=’btn btn-primary’>Ajouter</button>
</form>
</div>
</div>
<?php
}
// Edit
if(isset($_GET[’edit’]) && $_GET[’edit’] == 1) {
$idCategory = intval($_GET[’id’]);
$querySelectCategoryById = $dbConnect->prepare("SELECT * FROM category WHERE id=?");
$querySelectCategoryById->execute(array($idCategory));
$cat = $querySelectCategoryById->fetch();
?>
<div class=’modal-container’>
<div class=’modal-form’>
<span onclick="goBack();" class=’close-modal’>x</span>
<form method=’post’ action=’’>
<?php
if(isset($error)) {
echo "<div class=’alert alert-danger’>".$error."</div>";
}
?>
<input type=’text’ name=’categorie’ placeholder="Catégorie" class=’form-control’ value="<?php echo $cat[’titre’]; ?>" required />
<button name=’modifiercategory’ type=’submit’ class=’btn btn-primary’>Modifier</button>
</form>
</div>
</div>
<?php
}
?>
<div class=’admin-section’>
<a href=’admin.php?page=2&add=1’ class=’btn btn-primary’>Ajouter
</a>
<table class=’table table-striped’>
<tr><th>Image</th><th>Nom</th><th>Prix</th><th>Option</th></tr>
<?php
$querySelectProduct = $dbConnect->prepare("SELECT * FROM product ORDER BY id DESC");
$querySelectProduct->execute();
while($row = $querySelectProduct->fetch()) {
echo "<tr>";
echo "<td><div class=’admin-img’><img src=’images/".$row[’image’]."’ /></div></td>";
echo "<td>".$row[’name’]."</td>";
echo "<td>".$row[’price’]."</td>";
echo "<td>";
echo "<a href=’admin.php?page=2&edit=1&id=".$row[’id’]."’ class=’btn btn-primary’>Modifier</a>";
echo "<a onclick=’return confirm(\"Êtes-vous sûr de vouloir supprimer !\");’ href=’admin.php?page=2&delete=74946748463&id=".$row[’id’]."’ class=’btn btn-danger’>Supprimer</a>";
echo "</td>";
echo "</tr>";
}
?>
</table>
</div>
<?php
}
?>
Traitement :
<?php
// Ajouter Produit
if(isset($_POST[’ajouterproduit’])) {
if(!empty($_POST[’category’]) && !empty($_POST[’nom’]) && !empty($_POST[’prix’]) && !empty($_POST[’description’])) {
$category = trim(htmlspecialchars($_POST[’category’]));
$nom = trim(htmlspecialchars($_POST[’nom’]));
$prix = trim(htmlspecialchars($_POST[’prix’]));
$description = trim(htmlspecialchars($_POST[’description’]));
if($category != ’’ && $nom != ’’ && $prix != ’’ && $description != ’’) {
$imageFieldName = "image";
$imageName = $_FILES[$imageFieldName][’name’];
$imageTmpName = $_FILES[$imageFieldName][’tmp_name’];
if(!empty($imageName)) {
$imageNameExploded = explode(".", $imageName);
$imageType = $_FILES[$imageFieldName][’type’];
$image_ext = strtolower(end($imageNameExploded));
if(in_array($image_ext, array(’jpg’,’jpeg’,’png’,’gif’,’webp’,’jpg2000’))) {
$newName = time().".".$image_ext;
$destination = "images/".$newName;
move_uploaded_file($imageTmpName, $destination);
$queryInsertProduit = $dbConnect->prepare("INSERT INTO `product`(`category`, `image`, `name`, `price`, `description`) VALUES (:category,:image,:name,:price,:description)");
$queryInsertProduit->execute(array(’category’ => $category, ’image’ => $newName, ’name’ => $nom, ’price’ => $prix, ’description’ => $description));
header("Location: admin.php?page=2");
} else {
$error = "Seules les extensions jpg, jpeg, png, gif, webp sont autorisées !";
}
} else {
$error = "Veuillez choisir une image";
}
} else {
$error = "Veuillez remplir correctement les champs du formulaire";
}
} else {
$error = "Veuillez remplir correctement les champs du formulaire";
}
}
?>
Rendez-vous à la prochaine session, modification et suppression de produits