GET

page utilisateur/show.php

L’envoi de données par la méthode GET permet de transmettre des informations sur un utilisateur à une page via son URL.

1
utilisateur/show.php?id=3

Il demande le fichier utilisateur/show.php en lui transmettant l’information id=3.

C’est le tableau $_GET qui contient cette information.

1
$id = (int)($_GET['id'] ?? 0);

Dans le cas où l’information n’existe pas, l’id de l’utilisateur reçoit la valeur 0.

Méthodeutilisateur/show.php

Nous réalisons le fichier utilisateur/show.php

1
<?php
2
// ============================== 
3
// LIEN VERS LES DONNÉES  
4
// ==============================
5
$db = require '../bdd.php';
6
7
// ==============================
8
// RÉCUPÉRATION DE L’ID 
9
// ==============================
10
$id = (int) ($_GET['id'] ?? 0);
11
12
// Recherche de l'utilisateur correspondant
13
$utilisateur = null; // Valeur par défaut si aucun utilisateur trouvé
14
15
foreach ($listeUtilisateurs as $u) {
16
    if ($u['id'] == $id) {
17
        $utilisateur = $u;
18
        break; // On a trouvé l'utilisateur, on sort de la boucle
19
    }
20
}
21
22
// Redirection si l'utilisateur n'existe pas
23
if (!$utilisateur) {
24
    header('location:../utilisateur/index.php');
25
    exit();
26
}
27
28
// ==============================
29
// VARIABLES POUR LA VUE
30
// ==============================
31
// Chemin de base pour les inclusions
32
$page_base = '../';
33
// Titre dynamique de la page
34
$page_title = "Afficher-{$utilisateur['nom']}";
35
// Feuilles de styles spécifiques à la page
36
$page_styles = ['utilisateur', 'card'];
37
?>
38
<!DOCTYPE html>
39
<html lang='fr'>
40
41
<?php require "$page_base/head.php" ?>
42
43
<body>
44
    <?php require "$page_base/header.php" ?>
45
46
    <main>
47
        <h1>Afficher</h1>
48
49
        <?php
50
        $card = [
51
            'src' => $utilisateur['photo'],
52
            'alt' => "photo de {$utilisateur['nom']} {$utilisateur['prenom']}",
53
            'figcaption' => "{$utilisateur['nom']} {$utilisateur['prenom']} - {$utilisateur['age']} ans"
54
        ];
55
        require("$page_base/components/card.php");
56
        ?>
57
58
    </main>
59
60
    <?php require "$page_base/footer.php" ?>
61
</body>
62
63
</html>

A partir de la version 8.4 de PHP, on peut simplifier la recherche de l'utilisateur avec array_find :

1
$utilisateur = array_find($listeUtilisateurs, fn($u) => $u['id'] == $id);
1
if (!$utilisateur) {
2
    header('location:../utilisateur/index.php');
3
    exit();
4
}

Redirige vers la page utilisateur/index.php si aucun utilisateur ne correspond à l’identifiant. L'url est relative à la page utilisateur/show.php.

Méthodeutilisateur/index.php

Pour permettre l’accès à la page de détail de chaque utilisateur, nous ajoutons un lien autour de la balise <figure> dans le fichier components/card.php.

C’est la page utilisateur/index.php qui fournit l’URL via la variable $card.

Ce lien redirige vers utilisateur/show.php en transmettant l’identifiant de l’utilisateur en paramètre.

1
...
2
<?php
3
$card = [
4
    'src' => $utilisateur['photo'],
5
    'alt' => "photo de {$utilisateur['nom']} {$utilisateur['prenom']}",
6
    'figcaption' => "{$utilisateur['nom']} {$utilisateur['prenom']} - {$utilisateur['age']} ans",
7
    'show' => "utilisateur/show.php?id={$utilisateur['id']}"
8
];
9
require("$page_base/components/card.php");
10
?>
11
...
1
'show' => "utilisateur/show.php?id={$utilisateur['id']}"

Permet de créer des liens vers utilsateur/show.php en y passant l’identifiant de l’utilisateur. Grace à <base href="<?= $page_base ?? './' ?>"> l'url est relative par rapport au dossier public.

Méthodecomponents/card.php

On ajoute sur la page components/card.php un lien autour de chaque figure.

1
    <?php if (isset($card['show'])): ?>
2
    <a href="<?= $card['show'] ?>">
3
    <?php endif; ?>
4
5
    <figure class="card">
6
        <img src='<?= $card['src'] ?>' alt='<?= $card['alt'] ?>' />
7
        <figcaption>
8
            <?= $card['figcaption'] ?>
9
        </figcaption>
10
    </figure>
11
12
    <?php if (isset($card['show'])): ?>
13
    </a>
14
    <?php endif; ?>

L’ancre n’est ajoutée que si la clé $card['show'] est définie.