Maison >développement back-end >tutoriel php >Comment créer un formulaire de recherche dynamique avec plusieurs paramètres en PHP ?

Comment créer un formulaire de recherche dynamique avec plusieurs paramètres en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 19:44:10735parcourir

How to Build a Dynamic Search Form with Multiple Parameters in PHP?

Formulaire de recherche avec un ou plusieurs (plusieurs) paramètres

Lors de la création d'un formulaire de recherche permettant aux utilisateurs de saisir plusieurs paramètres, il est important de considérer la façon dont les résultats de la recherche seront être filtré.

Dans l'exemple fourni, le formulaire de recherche comporte des champs de saisie distincts pour l'ID, le nom, la spécialité et l'université. Le fichier results.php utilise ensuite des instructions if/elseif individuelles pour gérer chacun de ces paramètres séparément.

Cependant, pour permettre aux utilisateurs de saisir un ou plusieurs paramètres, une approche plus dynamique est nécessaire. Ceci peut être réalisé en créant dynamiquement la clause WHERE pour la requête SQL en fonction des paramètres saisis.

Voici une version révisée du fichier results.php qui illustre cette approche :

<?php

$wheres = array();
$params = array();

if (!empty($_GET['id'])) {
    $wheres[] = 'a.uid = :uid';
    $params[':uid'] = $_GET['id'];
}
if (!empty($_GET['major'])) {
    $wheres[] = 'a.major = :major';
    $params[':major'] = $_GET['major'];
}
if (!empty($_GET['name'])) {
    $wheres[] = 'b.name LIKE :name';
    $params[':name'] = '%'.$_GET['name'].'%';
}

$sql = "SELECT * 
        FROM user_details AS a
        JOIN user AS b ON a.uid = b.id";

if (!empty($wheres)) {
    $sql .= " WHERE " . implode(' AND ', $wheres);
}

$stmt = $db->prepare($sql);
$stmt->execute($params);

while ($student = $stmt->fetch()) {
    echo '
        <tr>
            <td>'.$student['uid'].'</td>
            <td>'.$student['name'].'</td>
            <td>'.$student['major'].'</td>
            <td>'.$student['college'].'</td>
            <td><a href="?m=profile&amp;id='.$student['id'].'">

Ce code construit dynamiquement la clause WHERE en fonction des paramètres qui ont été saisis. Si l'utilisateur saisit uniquement un nom, la requête filtrera uniquement par nom. Si l'utilisateur saisit à la fois un nom et une majeure, la requête sera filtrée selon les deux paramètres.

Cette approche permet une expérience de recherche plus flexible et plus conviviale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn