Page d'administration (partie 3)
Cependant, avant d'aller plus loin, nous avons un problème : le code commence à devenir volumineux. Nous devrons le diviser en sections distinctes pour une meilleure organisation.
Pour ce faire, créons un dossier "module" dans le dossier "include" et à l'intérieur, créons les dossiers "category," "product," "order," et "user."
Assurez-vous de bien extraire chaque section de code et de les placer dans leurs fichiers respectifs. Ensuite, incluez les différents fichiers dans la page admin.
Pour les sections visibles :
<?php
include("include/module/category/categorysection.php");
include("include/module/product/productsection.php");
include("include/module/order/ordersection.php");
include("include/module/user/usersection.php");
?>
Pour les traitements :
<?php
include("include/module/category/categoryprocess.php");
include("include/module/product/productprocess.php");
include("include/module/order/orderprocess.php");
include("include/module/user/userprocess.php")
?>
Fichier "categorysection.php" :
<?php
if(isset($_GET['page']) AND $_GET['page'] == 1)
{
//Category
if(isset($_GET['add']) AND $_GET['add'] == 1)
{
?>
<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="Categorie" class='form-control' required />
<button name='ajoutercategory' type='submit' class='btn btn-primary'>Ajouter</button>
</form>
</div>
</div>
<?php
}
//Edit
if(isset($_GET['edit']) AND $_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="Categorie" 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=1&&add=1' class='btn btn-primary'>Ajouter</a>
<table class='table table-striped'>
<tr><th>Categorie</th><th>Option</th></tr>
<?php
$querySelectCategory=$dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC");
$querySelectCategory->execute();
while($row=$querySelectCategory->fetch())
{
echo "<tr>";
echo "<td>".$row['titre']."</td>";
echo "<td>";
echo "<a href='admin.php?page=1&&edit=1&&id=".$row['id']."' class='btn btn-primary'>Modifier</a>";
echo "<a onclick='return confirm(\"Etes vous sur de vouloir supprimer!\");' href='admin.php?page=1&&delete=18393638393&&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>";
echo "</td>";
echo "</tr>";
}
?>
</table>
</div>
<?php
}
?>
Fichier "categoryprocess.php" :
<?php
//Ajouter Categorie
if(isset($_POST['ajoutercategory']))
{
if(!empty($_POST['categorie']))
{
$categorie=trim(htmlspecialchars($_POST['categorie']));
if($categorie != '')
{
$queryInsertCategory=$dbConnect->prepare("INSERT INTO `category`(`titre`) VALUES (:titre)");
$queryInsertCategory->execute(array('titre' => $categorie));
header("Location: admin.php?page=1");
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
//Modifier Categorie
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="Remplir correctement les champs du formulaire";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
//Delete Category
if(isset($_GET['delete']) AND $_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");
}
?>
Fichier "productsection.php" :
<?php
if(isset($_GET['page']) AND $_GET['page'] == 2)
{
//Produit
if(isset($_GET['add']) AND $_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']) AND $_GET['edit'] == 1)
{
$idProduct=intval($_GET['id']);
$querySelectProductById=$dbConnect->prepare("SELECT * FROM product WHERE id=?");
$querySelectProductById->execute(array($idProduct));
$product=$querySelectProductById->fetch();
?>
<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())
{
if($product['category'] == $row['id']) { $selectOption="selected"; } else { $selectOption=""; }
echo "<option value='".$row['id']."' ".$selectOption.">".$row['titre']."</option>";
}
?>
</select>
<input type='file' name="image" class='form-control' />
<input type='text' name='nom' placeholder="Nom" class='form-control' required value="<?php if(isset($product['name'])) { echo $product['name']; } ?>" />
<input type='number' step="any" name='prix' placeholder="Prix" class='form-control' required value="<?php if(isset($product['price'])) { echo $product['price']; } ?>" />
<textarea name='description' class='form-control' required placeholder="Description"><?php if(isset($product['description'])) { echo $product['description']; } ?></textarea>
<button name='modifierproduit' 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 sur 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
}
?>
Fichier "productprocess.php" :
<?php
//Ajouter Produit
if(isset($_POST['ajouterproduit']))
{
if(!empty($_POST['category']) AND !empty($_POST['nom']) AND !empty($_POST['prix']) AND !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 != '' AND $nom != '' AND $prix != '' AND $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="seulement les extensions jpg, jpeg, png, gif, webp sont autorisée!";
}
}
else
{
$error="Veuillez choisir une image";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
//Modifier Produit
if(isset($_POST['modifierproduit']))
{
if(!empty($_POST['category']) AND !empty($_POST['nom']) AND !empty($_POST['prix']) AND !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 != '' AND $nom != '' AND $prix != '' AND $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);
}
else
{
$error="seulement les extensions jpg, jpeg, png, gif, webp sont autorisée!";
}
}
else
{
$newName="";
}
$IdProduct=intval($_GET['id']);
if($newName != "")
{
$queryUpdateProduct=$dbConnect->prepare("UPDATE `product` SET `category`=:category,`image`=:image,`name`=:name,`price`=:price,`description`=:description WHERE id=:id");
$queryUpdateProduct->execute(array('category' => $category, 'image' => $newName, 'name' => $nom, 'price' => $prix, 'description' => $description, 'id' => $IdProduct));
}
else
{
$queryUpdateProduct=$dbConnect->prepare("UPDATE `product` SET `category`=:category,`name`=:name,`price`=:price,`description`=:description WHERE id=:id");
$queryUpdateProduct->execute(array('category' => $category, 'name' => $nom, 'price' => $prix, 'description' => $description, 'id' => $IdProduct));
}
header("Location: admin.php?page=2");
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
//Delete Product
if(isset($_GET['delete']) AND $_GET['delete'] == 74946748463)
{
$idProduct=intval($_GET['id']);
$queryDeleteProduct=$dbConnect->prepare("DELETE FROM product WHERE id=?");
$queryDeleteProduct->execute(array($idProduct));
header("Location: admin.php?page=2");
}
?>
Fichier "ordersection.php" :
<?php
if(isset($_GET['page']) AND $_GET['page'] == 3)
{
//Commande
?>
<div class='admin-section'>
<table class='table table-striped'>
<tr><th>Utilisateur</th><th>Produit</th><th>Total</th></tr>
<?php
$querySelectOrder=$dbConnect->prepare("SELECT * FROM commande ORDER BY id DESC");
$querySelectOrder->execute();
while($row=$querySelectOrder->fetch())
{
echo "<tr>";
echo "<td>".querySelectData('name','user','id', $row['id_user'])."</td>";
echo "<td>".querySelectData('name','product','id', $row['id_product'])."</td>";
echo "<td>".number_format($row['price'],2)." $</td>";
echo "</tr>";
}
?>
</table>
</div>
<?php
}
?>
Fichier "usersection.php" :
<?php
if(isset($_GET['page']) AND $_GET['page'] == 4)
{
//Commande
?>
<div class='admin-section'>
<table class='table table-striped'>
<tr><th>Nom</th><th>Email</th><th>Téléphone</th><th>Date de naissance</th></tr>
<?php
$querySelectUser=$dbConnect->prepare("SELECT * FROM user ORDER BY id DESC");
$querySelectUser->execute();
while($row=$querySelectUser->fetch())
{
echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['email']."</td>";
echo "<td>".$row['phone']."</td>";
$currentYear=date('Y');
$userNaissance=date_create($row['naissance']);
$birthYear=date_format($userNaissance, 'Y');
$age=$currentYear - $birthYear;
echo "<td>".$age."</td>";
echo "</tr>";
}
?>
</table>
</div>
<?php
}
?>
N'oubliez pas de créer le fichier "function.php" pour regrouper toutes vos fonctions, par exemple la fonction "querySelectData" qui permet de récupérer des informations de la base de données de manière dynamique.
<?php
function querySelectData($fiedl, $table, $close, $value)
{
GLOBAL $dbConnect;
$querySelectdataById=$dbConnect->prepare("SELECT ".$fiedl." FROM ".$table." WHERE ".$close."=? ");
$querySelectdataById->execute(array($value));
$nbrData=$querySelectdataById->rowCount();
if($nbrData > 0)
{
$dataRow=$querySelectdataById->fetch();
$result=$dataRow[$fiedl];
}
else
{
$result="";
}
return $result;
}
?>