ユーザーが複数のパラメーターを入力できる検索フォームを作成する場合、検索結果がどのように表示されるかを考慮することが重要です。
この例では、検索フォームに ID、名前、専攻、大学の個別の入力フィールドがあります。次に、results.php ファイルは、個別の if/elseif ステートメントを使用して、これらの各パラメーターを個別に処理します。
ただし、ユーザーが 1 つ以上のパラメーターを入力できるようにするには、より動的なアプローチが必要です。これは、入力されたパラメータに基づいて SQL クエリの WHERE 句を動的に構築することで実現できます。
このアプローチを示す、results.php ファイルの改訂版を次に示します。
<?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'].'">
このコードは、入力されたパラメーターに基づいて WHERE 句を動的に構築します。ユーザーが名前のみを入力した場合、クエリは名前のみでフィルター処理されます。ユーザーが名前と専攻の両方を入力すると、クエリは両方のパラメータでフィルタリングされます。
このアプローチにより、より柔軟でユーザー フレンドリーな検索エクスペリエンスが可能になります。
以上がPHP で複数のパラメータを含む動的検索フォームを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。