2012-05-10 8 views
0

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

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

ここに私が達成しようとしていることのすべてのアイデアを与える私の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ループがあります。しかし、ユーザーが探しているものを制限するために州を絞り込むことはできません。私はwhileループと組み合わせて使用​​するmysql_queryと、両方を使うことはできません。何らかの理由で、を使用してクエリを1つに結合することはどちらかと思われません。何か案は?

私は、コードが不調でセキュリティ上の問題があることを知っていますが、後でクリーンアップを行う予定です。あなたが何かの詳細や明確化が必要な場合は、私はもっと精巧になります!

+0

他の読者の便宜のために、**このコードはSQLインジェクションに脆弱です**本当に*は*準備されたステートメントを使用する必要があります。 SQLに関して評価されない。私が何を話しているのか、それを修正する方法がわからない場合は、[Bobby Tables](http://bobby-tables.com)の記事を読んでください。 – eggyal

答えて

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); 

ホープ、このことができます。

+1

助けてくれてありがとう!私はあなたがなぜ1 $ SQL = "SELECT * FROM table WHERE 1"で使用されたのか、ちょっと混乱しています。これは単なるプレースホルダですか? – sonarbiscuit

関連する問題