0

検索ボックスと米国の 50 州のドロップダウン リストを含む HTML フォームを作成しました。私が望むのは、ユーザーが検索ボックスにキーワード (電子メール、件名、ユーザー名など) を入力し、ドロップダウンから状態を選択できるようにすることです。ドロップダウンから州を選択することで、PHP コードがその選択された状態でのみ検索ボックスからキーワードを検索するようにします。たとえば、ユーザーとして、ワシントン州で「サッカー」を検索し、結果のリストを表示したいと考えています。

つまり、検索フォームと組み合わせて、選択された状態でのみ結果を表示するにはどうすればよいでしょうか?

これは、私が何を達成しようとしているのかを皆さんに理解していただくために、私の PHP コードの一部です。

// this is pulling the text that was typed in the html search box
$searchbox = $_POST['searchbox'];

// this is pulling the state from my HTML drop down menu
$state = $_POST['state'];

$searchboxresult = mysql_query("
  SELECT *
  FROM   table
  WHERE (ID      LIKE '%".$_POST['searchbox']."%')
     OR (stateID LIKE '%".$_POST['searchbox']."%')
     OR (city    LIKE '%".$_POST['searchbox']."%')
     OR (subject LIKE '%".$_POST['searchbox']."%')
     OR (email   LIKE '%".$_POST['searchbox']."%')
     OR (posting LIKE '%".$_POST['searchbox']."%')
     OR (skill   LIKE '%".$_POST['searchbox']."%')
     OR (event   LIKE '%".$_POST['searchbox']."%')
     OR (days    LIKE '%".$_POST['searchbox']."%')
     OR (url     LIKE '%".$_POST['searchbox']."%')
");

// and

$statedropdownresult = mysql_query("
  SELECT * FROM table WHERE stateID LIKE '%$state%'
");

次に、すべてを検索してデータを出力する while ループがあります。しかし、状態をドロップダウンして、ユーザーが検索しているものを制限することはできません。両方ではなく、一方または他方の mysql_query を while ループと組み合わせて動作させることしかできません。何らかの理由で、ANDを使用してクエリを 1 つに結合することも機能しないようです。何か案は?

コードがずさんでセキュリティ上の問題があることはわかっていますが、後でクリーンアップを行う予定です。詳細や説明が必要な場合は、さらに詳しく説明していただければ幸いです。

4

1 に答える 1

1

次のようなことを試すことができます:-

$sql ="SELECT * FROM table WHERE 1";

if($_POST['searchbox'] != ''){
     $sql =" and (ID LIKE '%".$_POST['searchbox']."%') OR (stateID LIKE              
     '%".$_POST['searchbox']."%') OR (city LIKE '%".$_POST['searchbox']."%') OR   
     (subject LIKE '%".$_POST['searchbox']."%') OR (email LIKE  
     '%".$_POST['searchbox']."%') OR (posting LIKE '%".$_POST['searchbox']."%') OR  
     (skill LIKE '%".$_POST['searchbox']."%') OR (event LIKE  
     '%".$_POST['searchbox']."%') OR (days LIKE '%".$_POST['searchbox']."%') OR (url  
     LIKE '%".$_POST['searchbox']."%')";
}
if($state != ''){
    $sql .= " and stateID LIKE '%".$state."%'";
}

  mysql_query($sql);

お役に立てれば。

于 2012-05-10T04:43:24.763 に答える