Page d'administration (partie 2)
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