Modifier
Nous ajoutons un fichier update.php à la racine du site. Ce fichier contient un formulaire qui permet de modifier une personne.
Méthode : update.php
La première partie du fichier contient le traitement des données du formulaire.
La deuxième partie contient le formulaire.
1
2
require 'bdd.php';
3
4
$id = $_GET['id'] ?? '';
5
6
// Recherche de la personne
7
$sql = 'SELECT * FROM personnes WHERE id=:id';
8
$statement = $db->prepare($sql);
9
$statement->execute(compact('id'));
10
$personne = $statement->fetch();
11
12
if (!$personne) {
13
header('location:personnes.php');
14
exit();
15
}
16
17
$page_title = "Modifier-$personne[nom]";
18
19
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['modifier'])) {
20
// récupération des données du formulaire
21
$nom = $_POST['nom'] ?? '';
22
$prenom = $_POST['prenom'] ?? '';
23
$age = (int) $_POST['age'] ?? 0;
24
$slug = $_POST['slug'] ?? '';
25
$photo = $personne['photo'];
26
27
// renommage de la photo si changement de slug
28
if ($slug != $personne['slug']) {
29
$url = "photos/$personne[photo]";
30
$photo = $id . "_" . $slug . "." . strtolower(pathinfo($url, PATHINFO_EXTENSION));
31
if (file_exists($url)) {
32
rename($url, "photos/$photo");
33
}
34
}
35
// modification de la personne
36
$sql = "UPDATE personnes SET
37
nom = :nom,
38
prenom = :prenom,
39
age = :age,
40
slug = :slug,
41
photo = :photo
42
WHERE id = :id";
43
44
$statement = $db->prepare($sql);
45
$statement->execute(compact('nom', 'prenom', 'age', 'slug', 'photo', 'id'));
46
47
// modification de la photo si nouvelle photo
48
if (isset($_FILES['photo']) && is_uploaded_file($_FILES['photo']['tmp_name'])) {
49
// suppression ancienne photo
50
if (file_exists("photos/$photo")) {
51
unlink("photos/$photo");
52
}
53
// ajout de la nouvelle photo
54
$photo = $id . "_" . $slug . "." . strtolower(pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION));
55
$origine = $_FILES['photo']['tmp_name'];
56
$destination = "photos/$photo";
57
move_uploaded_file($origine, $destination);
58
}
59
60
header('location:personnes.php');
61
exit();
62
}
63
64
65
<html lang='fr'>
66
67
require 'head.php';
68
69
<body>
70
require 'header.php';
71
<main>
72
<h1>Modifier</h1>
73
<form action='' method='post' enctype='multipart/form-data'>
74
75
<div>
76
<span>Nom</span>
77
<input type='text' name='nom' value='= $personne['nom'] '>
78
</div>
79
80
<div>
81
<span>Prénom</span>
82
<input type='text' name='prenom' value='= $personne['prenom'] '>
83
</div>
84
85
<div>
86
<span>Age</span>
87
<input type='text' name='age' value='= $personne['age'] '>
88
</div>
89
90
<div>
91
<span>Slug</span>
92
<input type='text' name='slug' value='= $personne['slug'] '>
93
</div>
94
95
<div>
96
<img src='photos/= $personne['photo'] ' alt='photo = $personne['nom'] ' />
97
<input type='file' name='photo'>
98
</div>
99
100
<div>
101
<button type='submit' name='modifier'>Modifier</button>
102
<a href='personnes.php'><button type='button'>Annuler</button></a>
103
</div>
104
105
</form>
106
</main>
107
require 'footer.php';
108
</body>
109
110
</html>
1
value='= $personne['nom']
Permet d'afficher la valeur actuelle de la personne
1
UPDATE personnes SET nom = :nom,prenom = :prenom, age = :age, slug = :slug, photo = :photo WHERE id = :id
Requête sql de la modification de la personne pour le bon id