PHP : Gestion de magasin

Créez une application Web de gestion de magasin qui permet aux utilisateurs de se connecter, d’afficher une liste de produits et de modifier ou supprimer des produits existants.

La première étape consiste à créer une base de données « Magasin » avec :

  • une table « produits » qui contient les colonnes suivantes :

-id (clé primaire, auto-incrémentée)
-nom
-description
-prix
-quantité

  • une table « users » qui contient les colonnes suivantes :

-id (clé primaire, auto-incrémentée)
-username
-password
1- Ensuite, vous devez créer une page de connexion qui permet aux utilisateurs de s’authentifier en utilisant un formulaire. Les champs de ce formulaire doivent être « nom d’utilisateur » et « mot de passe ». La validation doit être effectuée en utilisant PHP, avec une fonction de connexion à la base de données pour vérifier que les informations d’identification sont correctes.

2- Une fois connecté, l’utilisateur doit être dirigé vers une page qui affiche une liste de produits. Cette page doit avoir un bouton « Ajouter un nouveau produit » qui ouvre un formulaire pour ajouter un nouveau produit à la base de données.

3- La liste des produits doit également inclure des boutons « Modifier » et « Supprimer » pour chaque produit. Lorsqu’un utilisateur clique sur « Modifier », il doit être dirigé vers un formulaire qui lui permet de modifier les informations d’un produit existant dans la base de données. Lorsqu’un utilisateur clique sur « Supprimer », le produit doit être supprimé de la base de données.

Toutes les interactions avec la base de données doivent être effectuées en utilisant des requêtes SQL avec des fonctions PHP appropriées pour la connexion et la gestion de la base de données.

Bonne chance pour cet exercice !

Solution

Je vais vous donner un exemple de solution pour cet exercice en PHP et HTML, en utilisant les fonctionnalités de base pour la connexion à la base de données, la récupération des données et la modification de la table des produits.

Pour commencer, voici le code HTML de la page de connexion (login.php) :

<!DOCTYPE html>
<html>
  <head>
    <title>Page de connexion</title>
  </head>
  <body>
    <h1>Page de connexion</h1>
    <form method="post" action="authentification.php">
      <label>Nom d'utilisateur :</label>
      <input type="text" name="username"><br>
      <label>Mot de passe :</label>
      <input type="password" name="password"><br>
      <input type="submit" value="Se connecter">
    </form>
  </body>
</html>

Ce formulaire va envoyer les informations de connexion vers le script PHP « authentification.php » qui va vérifier si les identifiants sont corrects. Voici le code PHP correspondant :

<?php
// Connexion à la base de données
$host = "localhost";
$user = "root";
$password = "";
$database = "magasin";
$conn = new mysqli($host, $user, $password, $database);

// Vérification de la connexion
if ($conn->connect_error) {
    die("La connexion à la base de données a échoué : " . $conn->connect_error);
}

// Récupération des données du formulaire
$username = $_POST["username"];
$password = $_POST["password"];

// Vérification des identifiants
$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = $conn->query($sql);

if ($result->num_rows == 1) {
    // L'utilisateur est authentifié, on peut afficher la liste des produits
    header("Location: produits.php");
} else {
    echo "Identifiants invalides";
}

$conn->close();
?>

Notez que l’utilisation de l’objet mysqli nécessite l’appel de la méthode close() pour fermer la connexion à la base de données.

Le header("Location: produits.php") redirige l’utilisateur vers la page produits.php qui affiche la liste des produits. La page de connexion (login.php) doit être dans le même dossier que la page produits.php. Si vous avez besoin de rediriger vers une autre page, il suffit de remplacer produits.php par le nom de la page souhaitée.

Voici un exemple de code PHP pour la page produits.php qui affiche une table contenant la liste des produits. Cette page nécessite une connexion à la base de données pour récupérer les informations des produits :

<?php
// Connexion à la base de données
$host = "localhost";
$user = "root";
$password = "";
$database = "magasin";
$conn = new mysqli($host, $user, $password, $database);

// Vérification de la connexion
if ($conn->connect_error) {
    die("La connexion à la base de données a échoué : " . $conn->connect_error);
}

// Récupération de la liste des produits
$sql = "SELECT * FROM produits";
$result = $conn->query($sql);

// Lien d'ajout de produit
echo "<a href='ajouter_produit.php'>Ajouter un produit</a>";

// Affichage de la table des produits
echo "<table>";
echo "<tr><th>ID</th><th>Nom</th><th>Description</th><th>Prix</th><th>Actions</th></tr>";
while($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row["id"] . "</td>";
    echo "<td>" . $row["nom"] . "</td>";
    echo "<td>" . $row["description"] . "</td>";
    echo "<td>" . $row["prix"] . "</td>";
    echo "<td><a href='modifier_produit.php?id=" . $row["id"] . "'>Modifier</a> 
     - <a href='supprimer_produit.php?id=" . $row["id"] . "'>Supprimer</a></td>";
    echo "</tr>";
}
echo "</table>";

$conn->close();
?>

Le code récupère la liste des produits depuis la base de données et l’affiche dans une table avec des liens pour modifier ou supprimer chaque produit. Les liens pointent vers les pages modifier_produit.php et supprimer_produit.php qui vont permettre de modifier ou supprimer un produit spécifique en fonction de son identifiant.

Le lien d’ajout de produit est créé à l’aide d’un élément a avec un attribut href qui pointe vers la page ajouter_produit.php qui va permettre de créer un nouveau produit. Le lien est affiché avec le texte « Ajouter un produit ».

Voici le code PHP pour la page supprimer_produit.php, qui permet de supprimer un produit de la base de données :

<?php
// Récupération de l'ID du produit à supprimer
$id = $_GET["id"];

// Connexion à la base de données
$host = "localhost";
$user = "root";
$password = "";
$database = "magasin";
$conn = new mysqli($host, $user, $password, $database);

// Vérification de la connexion
if ($conn->connect_error) {
    die("La connexion à la base de données a échoué : " . $conn->connect_error);
}

// Suppression du produit de la base de données
$sql = "DELETE FROM produits WHERE id = $id";
if ($conn->query($sql) === TRUE) {
    echo "Le produit a été supprimé avec succès";
} else {
    echo "Une erreur s'est produite lors de la suppression du produit : " . $conn->error;
}

$conn->close();
?>

La page supprimer_produit.php récupère l’ID du produit à supprimer à partir de la variable $_GET["id"]. Ensuite, elle se connecte à la base de données et exécute une requête SQL de suppression en utilisant l’ID du produit. Si la suppression est réussie, la page affiche un message de confirmation. Sinon, elle affiche un message d’erreur avec des informations sur l’erreur.

La page modifier_produit.php permet de modifier un produit existant dans la base de données. Elle se compose d’un formulaire qui permet de récupérer l’ID d’un produit à modifier et qui affiche les informations actuelles du produit dans les champs du formulaire :

<?php
// Récupération de l'ID du produit à modifier
$id = $_GET["id"];

// Connexion à la base de données
$host = "localhost";
$user = "root";
$password = "";
$database = "magasin";
$conn = new mysqli($host, $user, $password, $database);

// Vérification de la connexion
if ($conn->connect_error) {
    die("La connexion à la base de données a échoué : " . $conn->connect_error);
}

// Récupération des données du produit à modifier
$sql = "SELECT * FROM produits WHERE id = $id";
$result = $conn->query($sql);
$row = $result->fetch_assoc();

// Affichage du formulaire de modification de produit
?>
<h1>Modifier le produit : <?php echo $row["nom"]; ?></h1>

<form method="post" action="modification_produit.php">
    <input type="hidden" name="id" value="<?php echo $id; ?>">
    <div>
        <label for="nom">Nom :</label>
        <input type="text" id="nom" name="nom" value="<?php echo $row["nom"]; ?>">
    </div>
    <div>
        <label for="description">Description :</label>
        <textarea id="description" name="description"><?php echo $row["description"]; ?></textarea>
    </div>
    <div>
        <label for="prix">Prix :</label>
        <input type="text" id="prix" name="prix" value="<?php echo $row["prix"]; ?>">
    </div>
    <div>
        <button type="submit">Modifier</button>
    </div>
</form>
<?php

$conn->close();
?>

Ce formulaire contient un champ caché pour l’ID du produit à modifier. Cela rendra le champ « id » invisible pour l’utilisateur et transmettra la valeur de l’ID du produit à modifier à la page « modifier_produit.php » en utilisant la méthode POST. A la fin, on trouve un bouton de soumission pour envoyer le formulaire à la page « modification_produit.php ».

Le code PHP de la page « modification_produit.php » qui traite ce formulaire et modifier les informations concernant un produit dans la base de données et le suivant:

<?php
// Connexion à la base de données
$serveur = "localhost";
$utilisateur = "root";
$mot_de_passe = "";
$nom_base_de_donnees = "Magasin";
$con = new mysqli($serveur, $utilisateur, $mot_de_passe, $nom_base_de_donnees);

// Vérification de la connexion
if ($con->connect_error) {
  die("La connexion a échoué : " . $con->connect_error);
}

// Récupération des données du formulaire
$id = $_POST['id'];
$nom = $_POST['nom'];
$description = $_POST['description'];
$prix = $_POST['prix'];

// Mise à jour des informations du produit dans la base de données
$sql = "UPDATE produits SET nom='$nom', description='$description', prix='$prix' WHERE id='$id'";

if ($con->query($sql) === TRUE) {
  echo "Le produit a été modifié avec succès";
} else {
  echo "Une erreur est survenue : " . $con->error;
}

// Fermeture de la connexion à la base de données
$con->close();
?>

Ce code récupère les données du formulaire à l’aide de la méthode POST, en utilisant les noms des champs de formulaire comme clés dans la superglobale $_POST. Il utilise ensuite la requête SQL UPDATE pour mettre à jour les informations du produit correspondant dans la base de données.

Si la mise à jour a été effectuée avec succès, le code affiche un message de confirmation. Sinon, il affiche un message d’erreur avec la description de l’erreur renvoyée par la base de données.

Finalement, voici un exemple de code pour une page « ajouter_produit.php » permettant d’ajouter un nouveau produit à la base de données « Magasin » :

<!DOCTYPE html>
<html>
<head>
	<title>Ajouter un produit</title>
</head>
<body>
	<h1>Ajouter un produit</h1>
	<form method="post" action="traitement_ajout_produit.php">
		<label for="nom">Nom du produit :</label>
		<input type="text" id="nom" name="nom" required><br><br>

		<label for="prix">Prix du produit :</label>
		<input type="number" id="prix" name="prix" min="0" step="0.01" required><br><br>

		<label for="description">Description :</label><br>
		<textarea id="description" name="description" rows="4" cols="50"></textarea><br><br>

		<input type="submit" value="Ajouter le produit">
	</form>
</body>
</html>

Ce formulaire contient trois champs : « nom », « prix » et « description ». Le champ « nom » est obligatoire et les champs « prix » et « description » sont facultatifs. Lorsque l’utilisateur soumet le formulaire, les données sont envoyées à « traitement_ajout_produit.php » en utilisant la méthode POST.

Le code pour la page « traitement_ajout_produit.php » qui va ajouter un nouveau produit à la base de données « Magasin » :

<?php

    // Récupérer les données du formulaire
    $nom = $_POST["nom"];
    $prix = $_POST["prix"];
    $description = $_POST["description"];

    // Se connecter à la base de données
    $serveur = "localhost";
    $utilisateur = "root";
    $mot_de_passe = "";
    $nom_de_la_base = "Magasin";

    $con = new mysqli($serveur, $utilisateur, $mot_de_passe, $nom_de_la_base);

    // Vérifier si la connexion a échoué
    if ($con->connect_error) {
        die("La connexion à la base de données a échoué : " . $con->connect_error);
    }

    // Préparer et exécuter la requête SQL d'insertion
    $req = "INSERT INTO produits (nom, prix, description) VALUES ('$nom', '$prix', '$description')";

    if ($con->query($req) === TRUE) {
        // Rediriger l'utilisateur vers la page des produits
        header("Location: produits.php");
        exit();
    } else {
        echo "Une erreur est survenue lors de l'ajout du produit : " . $con->error;
    }

    // Fermer la connexion à la base de données
    $con->close();
?>

Ce code récupère les données du formulaire envoyées via la méthode POST, établit une connexion à la base de données « Magasin », exécute une requête SQL d’insertion pour ajouter le nouveau produit, puis redirige l’utilisateur vers la page « produits.php ». En cas d’erreur, il affiche un message d’erreur à l’utilisateur.

[collapse]
Posted in PHP

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *