ホームページ > バックエンド開発 > PHPチュートリアル > 複数の検索パラメータを受け入れるように検索フォームを変更するにはどうすればよいですか?

複数の検索パラメータを受け入れるように検索フォームを変更するにはどうすればよいですか?

DDD
リリース: 2025-01-03 18:24:40
オリジナル
957 人が閲覧しました

How Can I Modify a Search Form to Accept Multiple Search Parameters?

1 つ以上の (複数) パラメーターを含む検索フォーム

問題:

検索フォームの以前の実装では、一度に 1 つのパラメーターしか使用できませんでした。目標は、このフォームを変更して、ユーザーが 1 つ以上のパラメーターを入力し、対応する検索結果を受け取れるようにすることです。

解決策:

これを実現するには、次のようにします。 PHP コードを変更して、入力パラメータに基づいて WHERE 句を動的に構築します。

変更済みsearch.php:

<?php

$wheres = [];
$params = [];

if (!empty($_POST['id']) && isset($_POST['id'])) {
    $wheres[] = 'a.uid = :uid';
    $params[':uid'] = $_POST['id'];
}
if (!empty($_POST['major']) && isset($_POST['major'])) {
    $wheres[] = 'a.major = :major';
    $params[':major'] = $_POST['major'];
}
if (!empty($_POST['college']) && isset($_POST['college'])) {
    $wheres[] = 'a.college = :college';
    $params[':college'] = $_POST['college'];
}
if (!empty($_POST['name']) && isset($_POST['name'])) {
    $wheres[] = 'b.name LIKE :name';
    $params[':name'] = '%' . $_POST['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);

// Display the results as in the original code
ログイン後にコピー

説明:

  1. WHERE 句の条件とパラメータの空の配列を初期化します。
  2. 各入力パラメータを確認し、対応する条件とパラメータを配列に追加します。
  3. 結合された WHERE 句の条件を動的に組み込むことによる SQL クエリ。
  4. 名前付きパラメータを持つ PDO を使用して SQL ステートメントを準備および実行します。
  5. 元の実装と同様に検索結果を表示します。

このアプローチを利用することで、ユーザーは複数のパラメーターを入力し、指定されたすべての基準に基づいて結果を取得できるようになります。

以上が複数の検索パラメータを受け入れるように検索フォームを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート