Créer, éditer, mettre à jour et supprimer du contenu sur un site Web est ce qui rend le site dynamique. C'est ce que nous allons faire dans ce post.
Un utilisateur qui visite notre site pourra créer des messages qui seront enregistrés dans une base de données mysql, récupérer les messages de la base de données et les afficher sur la page Web. Chaque message sera affiché avec un bouton de modification et de suppression pour permettre à l'utilisateur de mettre à jour les messages ainsi que de les supprimer.
Tout d'abord, créez une base de données nommée crud. Dans la base de données crud, créez une table appelée info. Le tableau d'informations doit contenir les colonnes suivantes :
-
identifiant - int(11)
- nom - varchar(100)
- adresse - varchar(100)
Japper! Juste deux champs. J'essaie de garder les choses simples ici. alors, passons à l'étape suivante.
Créez un fichier appelé index.php et collez-y le code suivant :
<!DOCTYPE html>
<html>
<head>
<title>CRUD: CReate, Update, Delete PHP MySQL</title>
</head>
<body>
<form method="post" action="server.php" >
<div class="input-group">
<label>Name</label>
<input type="text" name="name" value="">
</div>
<div class="input-group">
<label>Address</label>
<input type="text" name="address" value="">
</div>
<div class="input-group">
<button class="btn" type="submit" name="save" >Save</button>
</div>
</form>
</body>
</html>
Si vous enregistrez et ouvrez le site sur votre navigateur, vous obtenez quelque chose comme ceci :
Ça ne ressemble pas à la meilleure forme du monde, n'est-ce pas ? Réparons ça. Ajoutez cette ligne directement sous la balise
<link rel="stylesheet" type="text/css" href="style.css">
C'est le lien pour charger le style à partir du fichier de feuille de style. Créons le fichier styles.css et ajoutons-y ce code de style.
body {
font-size: 19px;
}
table{
width: 50%;
margin: 30px auto;
border-collapse: collapse;
text-align: left;
}
tr {
border-bottom: 1px solid #cbcbcb;
}
th, td{
border: none;
height: 30px;
padding: 2px;
}
tr:hover {
background: #F5F5F5;
}
form {
width: 45%;
margin: 50px auto;
text-align: left;
padding: 20px;
border: 1px solid #bbbbbb;
border-radius: 5px;
}
.input-group {
margin: 10px 0px 10px 0px;
}
.input-group label {
display: block;
text-align: left;
margin: 3px;
}
.input-group input {
height: 30px;
width: 93%;
padding: 5px 10px;
font-size: 16px;
border-radius: 5px;
border: 1px solid gray;
}
.btn {
padding: 10px;
font-size: 15px;
color: white;
background: #5F9EA0;
border: none;
border-radius: 5px;
}
.edit_btn {
text-decoration: none;
padding: 2px 5px;
background: #2E8B57;
color: white;
border-radius: 3px;
}
.del_btn {
text-decoration: none;
padding: 2px 5px;
color: white;
border-radius: 3px;
background: #800000;
}
.msg {
margin: 30px auto;
padding: 10px;
border-radius: 5px;
color: #3c763d;
background: #dff0d8;
border: 1px solid #3c763d;
width: 50%;
text-align: center;
}
Vérifions à nouveau notre formulaire dans le navigateur :
C'est mieux!
J'aime généralement séparer autant que possible mon code HTML de mon code PHP. Je considère que c'est une bonne pratique. Sur cette note, créons un autre fichier appelé php_code.php où nous implémentons toutes les fonctionnalités php telles que la connexion à la base de données, l'interrogation de la base de données, etc.
Ouvrez donc php_code.php et collez-y le code suivant :
<?php
session_start();
$db = mysqli_connect('localhost', 'root', '', 'crud');
// initialize variables
$name = "";
$address = "";
$id = 0;
$update = false;
if (isset($_POST['save'])) {
$name = $_POST['name'];
$address = $_POST['address'];
mysqli_query($db, "INSERT INTO info (name, address) VALUES ('$name', '$address')");
$_SESSION['message'] = "Address saved";
header('location: index.php');
}
// ...
Incluez maintenant ce fichier en haut (la toute première ligne) de votre fichier index.php. Comme ceci :
<?php include('server.php'); ?>
À ce stade, tout ce que ce code fait est de se connecter à la base de données, d'initialiser certaines variables et d'enregistrer les données soumises du formulaire dans la base de données dans les informations que nous avons créées précédemment. Ce n'est que la partie CReate de CRUD. Passons aux autres.
Maintenant, visitez à nouveau votre fichier index.php et ajoutez ce code juste sous la balise
// ...
<body>
<?php if (isset($_SESSION['message'])): ?>
<div class="msg">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php endif ?>
Ce code affiche un message de confirmation pour indiquer à l'utilisateur qu'un nouvel enregistrement a été créé dans la base de données.
Pour récupérer les enregistrements de la base de données et les afficher sur la page, ajoutez ce code juste au-dessus du formulaire de saisie :
<?php $results = mysqli_query($db, "SELECT * FROM info"); ?>
<table>
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th colspan="2">Action</th>
</tr>
</thead>
<?php while ($row = mysqli_fetch_array($results)) { ?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['address']; ?></td>
<td>
<a href="index.php?edit=<?php echo $row['id']; ?>" class="edit_btn" >Edit</a>
</td>
<td>
<a href="server.php?del=<?php echo $row['id']; ?>" class="del_btn">Delete</a>
</td>
</tr>
<?php } ?>
</table>
<form>
// ...
Créons un nouvel enregistrement et voyons si cela fonctionne :
..et voilà !! Cela fonctionne parfaitement !
Passons maintenant à l'édition. En haut de votre fichier index.php (immédiatement après l'instruction include) ajoutez le code suivant :
<?php
if (isset($_GET['edit'])) {
$id = $_GET['edit'];
$update = true;
$record = mysqli_query($db, "SELECT * FROM info WHERE id=$id");
if (count($record) == 1 ) {
$n = mysqli_fetch_array($record);
$name = $n['name'];
$address = $n['address'];
}
}
?>
Lors de la modification d'un enregistrement de base de données, nous devons mettre les anciennes valeurs dans le formulaire afin qu'elles puissent être modifiées. Pour ce faire, modifions nos champs de saisie sur le formulaire et définissons ces valeurs extraites de la base de données ($nom, $adresse) comme valeurs de la valeur attribut des champs de formulaire.
Ajoutez également un champ masqué pour contenir l'identifiant de l'enregistrement que nous allons mettre à jour afin qu'il puisse être reconnu dans la base de données uniquement par son identifiant. Ceci l'explique mieux :
// newly added field
<input type="hidden" name="id" value="<?php echo $id; ?>">
// modified form fields
<input type="text" name="name" value="<?php echo $name; ?>">
<input type="text" name="address" value="<?php echo $address; ?>">
N'oubliez pas que tout cela se trouve dans l'entrée