Maison >développement back-end >tutoriel php >Comment créer un formulaire de recherche dynamique avec plusieurs paramètres en PHP ?
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&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!