Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
CRUD signifie :
Nous allons, pour cet article, nous baser sur une base de données appelée "crud" contenant une table
"liste".
Cette table contiendra les colonnes suivantes "id", "produit", "prix" et "nombre".
Pour commencer, nous allons créer un fichier php que nous appellerons "connect.php" qui contiendra
les informations de connexion à la base de données.
<?php
try{
// Connexion à la bdd
$db = new PDO('mysql:host=localhost;dbname=crud', 'root','');
$db->exec('SET NAMES "UTF8"');
} catch (PDOException $e){
echo 'Erreur : '. $e->getMessage();
die();
}
<?php
$db = null;
Nous allons commencer par afficher sous forme de tableau la liste des enregistrements de la table
"liste" dans le fichier "index.php".
1
La requête
<?php
// On écrit notre requête
$sql = 'SELECT * FROM `liste`';
// On prépare la requête
$query = $db->prepare($sql);
// On exécute la requête
$query->execute();
// On stocke le résultat dans un tableau associatif
$result = $query->fetchAll(PDO::FETCH_ASSOC);
L'affichage
Pour afficher les résultats, nous aurons besoin de boucler sur la variable "$result" de cette façon
<?php
foreach($result as $produit){
}
Si nous souhaitons faire un tableau, nous écrirons donc un code comme celui-ci.
<table>
<thead>
<th>ID</th>
<th>Nom</th>
<th>Prix</th>
<th>Stock</th>
<th>Actions</th>
</thead>
<tbody>
<?php
foreach($result as $produit){
?>
<tr>
<td><?= $produit['id'] ?></td>
2
<td><?= $produit['produit'] ?></td>
<td><?= $produit['prix'] ?></td>
<td><?= $produit['nombre'] ?></td>
<td><a href="details.php?id=<?= $produit['id'] ?>">Voir</a> <a href="edit.php?id=<?=
$produit['id'] ?>">Modifier</a> <a href="delete.php?id=<?= $produit['id'] ?>">Supprimer</a></td>
</tr>
<?php
}
?>
</tbody>
</table>
Fichier complet
<?php
// On inclut la connexion à la base
require_once('connect.php');
// On écrit notre requête
$sql = 'SELECT * FROM `liste`';
// On prépare la requête
$query = $db->prepare($sql);
// On exécute la requête
$query->execute();
// On stocke le résultat dans un tableau associatif
$result = $query->fetchAll(PDO::FETCH_ASSOC);
require_once('close.php');
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des produits</title>
</head>
<body>
<h1>Liste des produits</h1>
<table>
3
<thead>
<th>ID</th>
<th>Nom</th>
<th>Prix</th>
<th>Stock</th>
<th>Actions</th>
</thead>
<tbody>
<?php
foreach($result as $produit){
?>
<tr>
<td><?= $produit['id'] ?></td>
<td><?= $produit['produit'] ?></td>
<td><?= $produit['prix'] ?></td>
<td><?= $produit['nombre'] ?></td>
<td><a href="details.php?id=<?= $produit['id'] ?>">Voir</a> <a href="edit.php?id=<?=
$produit['id'] ?>">Modifier</a> <a href="delete.php?id=<?= $produit['id'] ?>">Supprimer</a></td>
</tr>
<?php
}
?>
</tbody>
</table>
<a href="add.php">Ajouter</a>
</body>
</html>
Nous allons maintenant afficher un enregistrement de la table "liste" dans le fichier "details.php" sur
la base de son "id".
La requête
Pour commencer, nous devons exécuter la requête SQL ci-dessous avec, par exemple, l'id 1
<?php
4
$sql = 'SELECT * FROM `liste` WHERE `id`=:id';
// On prépare la requête
$query = $db->prepare($sql);
// On attache les valeurs
$query->bindValue(':id', $id, PDO::PARAM_INT);
// On exécute la requête
$query->execute();
// On stocke le résultat dans un tableau associatif
$produit = $query->fetch();
L'affichage
Pour afficher les résultats, nous allons tout d'abord vérifier que nous avons bien un "id", ensuite nous
exécuterons la requête. Si la requête retourne un résultat, nous l'afficherons.
<?php
session_start();
// On inclut la connexion à la base
require_once('connect.php');
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = strip_tags($_GET['id']);
// On écrit notre requête
$sql = 'SELECT * FROM `liste` WHERE `id`=:id';
// On prépare la requête
$query = $db->prepare($sql);
// On attache les valeurs
$query->bindValue(':id', $id, PDO::PARAM_INT);
// On exécute la requête
$query->execute();
// On stocke le résultat dans un tableau associatif
$produit = $query->fetch();
if(!$produit){
header('Location: index.php');
}
}else{
header('Location: index.php');
}
require_once('close.php');
?>
5
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des produits</title>
</head>
<body>
<h1>Détails du produit <?= $produit['produit'] ?></h1>
<p>ID : <?= $produit['id'] ?></p>
<p>Produit : <?= $produit['produit'] ?></p>
<p>Prix : <?= $produit['prix'] ?></p>
<p>Nombre : <?= $produit['nombre'] ?></p>
<p><a href="edit.php?id=<?= $produit['id'] ?>">Modifier</a> <a href="delete.php?id=<?=
$produit['id'] ?>">Supprimer</a></p>
</body>
</html>
Pour ajouter un enregistrement à la base de données, nous allons créer la page "add.php" qui aura une
double utilisation :
La requête
INSERT INTO `liste` (`produit`, `prix`, `nombre`) VALUES (:produit, :prix, :nombre);
<?php
$sql = "INSERT INTO `liste` (`produit`, `prix`, `nombre`) VALUES (:produit, :prix, :nombre);";
$query = $db->prepare($sql);
$query->bindValue(':produit', $produit, PDO::PARAM_STR);
$query->bindValue(':prix', $prix, PDO::PARAM_STR);
$query->bindValue(':nombre', $nombre, PDO::PARAM_INT);
$query->execute();
6
Le formulaire
<form method="post">
<label for="produit">Produit</label>
<input type="text" name="produit" id="produit">
<label for="prix">Prix</label>
<input type="text" name="prix" id="prix">
<label for="nombre">Nombre</label>
<input type="number" name="nombre" id="nombre">
<button>Enregistrer</button>
</form>
Une fois envoyé, nous le traiterons en PHP et nous insérerons le nouveau produit dans la base
<?php
require_once('connect.php');
if(isset($_POST)){
if(isset($_POST['produit']) && !empty($_POST['produit'])
&& isset($_POST['prix']) && !empty($_POST['prix'])
&& isset($_POST['nombre']) && !empty($_POST['nombre'])){
$produit = strip_tags($_POST['produit']);
$prix = strip_tags($_POST['prix']);
$nombre = strip_tags($_POST['nombre']);
$sql = "INSERT INTO `liste` (`produit`, `prix`, `nombre`) VALUES (:produit, :prix,
:nombre);";
$query = $db->prepare($sql);
$query->bindValue(':produit', $produit, PDO::PARAM_STR);
$query->bindValue(':prix', $prix, PDO::PARAM_STR);
$query->bindValue(':nombre', $nombre, PDO::PARAM_INT);
$query->execute();
$_SESSION['message'] = "Produit ajouté avec succès !";
header('Location: index.php');
}
}
require_once('close.php');
7
Modifier un enregistrement (UPDATE)
Pour modifier un enregistrement de la base de données, nous allons créer la page "edit.php" qui aura
une triple utilisation :
• Sélectionner un produit
• Afficher le formulaire de modification
• Traiter le formulaire
La requête
<?php
$sql = "UPDATE `liste` SET `produit`=:produit, `prix`=:prix, `nombre`=:nombre WHERE `id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':produit', $produit, PDO::PARAM_STR);
$query->bindValue(':prix', $prix, PDO::PARAM_STR);
$query->bindValue(':nombre', $nombre, PDO::PARAM_INT);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
Le formulaire
<form method="post">
<p>
<label for="produit">Produit</label>
<input type="text" name="produit" id="produit" value="<?= $result['produit'] ?>">
</p>
<p>
<label for="prix">Prix</label>
8
<input type="text" name="prix" id="prix" value="<?= $result['prix'] ?>">
</p>
<p>
<label for="nombre">Nombre</label>
<input type="number" name="nombre" id="nombre" value="<?= $result['nombre'] ?>">
</p>
<input type="hidden" name="id" value="<?= $result['id'] ?>">
<button>Enregistrer</button>
</form>
Une fois envoyé, nous le traiterons en PHP et nous insérerons le nouveau produit dans la base
<?php
if(isset($_POST)){
if(isset($_POST['id']) && !empty($_POST['id'])
&& isset($_POST['produit']) && !empty($_POST['produit'])
&& isset($_POST['prix']) && !empty($_POST['prix'])
&& isset($_POST['nombre']) && !empty($_POST['nombre'])){
$id = strip_tags($_GET['id']);
$produit = strip_tags($_POST['produit']);
$prix = strip_tags($_POST['prix']);
$nombre = strip_tags($_POST['nombre']);
$sql = "UPDATE `liste` SET `produit`=:produit, `prix`=:prix, `nombre`=:nombre WHERE
`id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':produit', $produit, PDO::PARAM_STR);
$query->bindValue(':prix', $prix, PDO::PARAM_STR);
$query->bindValue(':nombre', $nombre, PDO::PARAM_INT);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
header('Location: index.php');
}
}
9
Fichier complet
<?php
require_once('connect.php');
if(isset($_POST)){
if(isset($_POST['id']) && !empty($_POST['id'])
&& isset($_POST['produit']) && !empty($_POST['produit'])
&& isset($_POST['prix']) && !empty($_POST['prix'])
&& isset($_POST['nombre']) && !empty($_POST['nombre'])){
$id = strip_tags($_GET['id']);
$produit = strip_tags($_POST['produit']);
$prix = strip_tags($_POST['prix']);
$nombre = strip_tags($_POST['nombre']);
$sql = "UPDATE `liste` SET `produit`=:produit, `prix`=:prix, `nombre`=:nombre WHERE
`id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':produit', $produit, PDO::PARAM_STR);
$query->bindValue(':prix', $prix, PDO::PARAM_STR);
$query->bindValue(':nombre', $nombre, PDO::PARAM_INT);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
header('Location: index.php');
}
}
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = strip_tags($_GET['id']);
$sql = "SELECT * FROM `liste` WHERE `id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
$result = $query->fetch();
}
require_once('close.php');
?>
10
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des produits</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-
Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">
</head>
<body>
<h1>Modifier un produit</h1>
<form method="post">
<p>
<label for="produit">Produit</label>
<input type="text" name="produit" id="produit" value="<?= $result['produit'] ?>">
</p>
<p>
<label for="prix">Prix</label>
<input type="text" name="prix" id="prix" value="<?= $result['prix'] ?>">
</p>
<p>
<label for="nombre">Nombre</label>
<input type="number" name="nombre" id="nombre" value="<?= $result['nombre'] ?>">
</p>
<p>
<button>Enregistrer</button>
</p>
<input type="hidden" name="id" value="<?= $result['id'] ?>">
</form>
</body>
</html>
11
Supprimer un enregistrement (DELETE)
Pour supprimer un enregistrement de la base de données, nous allons créer la page "delete.php" qui
prendra l'id du produit en paramètre.
La requête
<?php
$sql = "DELETE FROM `liste` WHERE `id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
Le fichier complet
<?php
require_once('connect.php');
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = strip_tags($_GET['id']);
$sql = "DELETE FROM `liste` WHERE `id`=:id;";
$query = $db->prepare($sql);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
header('Location: index.php');
}
require_once('close.php');
12