Modifier

Nous ajoutons un fichier update.php à la racine du site. Ce fichier contient un formulaire qui permet de modifier une personne.

Méthodeupdate.php

La première partie du fichier contient le traitement des données du formulaire.

La deuxième partie contient le formulaire.

1
<?php
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
<!DOCTYPE html>
65
<html lang='fr'>
66
67
<?php require 'head.php'; ?>
68
69
<body>
70
    <?php 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
    <?php 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