2016-06-28 15 views
0

MySQLデータベースからデータをフィルタリングするPHPスクリプトを作成しようとしています。フィルタはHTML Selectタグで選択されます。複数のMySQLフィルタをPHPとHTMLで作成する選択

問題は、多くのフィルタが存在し、ユーザーはそれらのフィルタの一部のみを選択できることです。私はPHPを使って動的にMySQLのselect文を調整して、ユーザが選択したフィルタだけを使用する方法についてはかなり混乱しています。つまり、ユーザーがSchoolTypeとDistrictを選択した場合。クエリは次のようなものです:

"SELECT * FROM mydatabase 
WHERE SchoolType='SelectedSchoolType' 
    AND District='SelectedDistrict'" 

そして、ユーザは、フィルタで郡を選択した場合、その後、SQL文はに調整:

"SELECT * FROM mydatabase 
WHERE SchoolType='SelectedSchoolType' 
    AND District='SelectedDistrict' 
    AND County='SelectedCounty'" 

どのように私は、SQL文がに応じて調整することができますフィルタを選択しましたか?

おかげ

+1

_選択したフィルタに合わせてSQL文を調整する方法は?_ **選択したフィルタは何か**ユーザーがこれらのフィルタを選択したフォームを表示する必要があります – RiggsFolly

+0

質問の下にある[編集]あなたのHTMLとPHPコードを貼り付け、質問を保存してください。 –

答えて

1

それは簡単です:あなたがする必要があるPHPのページで :

  1. 値を選択(スイッチ)
  2. は、それらの選択からあなたのクエリを構築し確認してください(私は破を使用)
  3. クエリを実行します(通常どおり)

例:動的照会についてthis関連する質問が

+0

Hey M.M.あなたの提案をありがとう。結局のところ、あなたが共有したリンクには、私が達成したいものが含まれていました。再度、感謝します! – Mishidoo

0

<?php 
$sql = "Select * FROM mydatabase"; 
$conditions = array(); 
switch($_POST['select_1']){//you can have mutiple switches 
    case "school": 
     $conditions[] = "SchoolType = '".$_POST['select_1_text']."'"; 
     break; 
    case "district": 
     $conditions[] = "District = '".$_POST['select_1_text']."'"; 
     break; 
    //etecetera 
} 
if(count($conditions)){ 
    $sql.= " WHERE "; 
    $sql.=implode(" AND",$conditions); 
} 
//Run your query 

チェックだから、まずあなたは、サーバー側にフィルタタイプIDと選択された値を送信する必要があります。

$.ajax({ 
    method: "POST", 
    url: "path_to_your_script", 
    data: { 
    type: $("your_element:selected").val(), 
    filter : $("your_element:selected").text()} 
    }); 

そして、サーバ側で使用すると、動的にデータベースのクエリを作成することができます:あなたは(1つの選択した値のため)jqueryのを使用することができる。例えば

<?php 
$input_filter = $_POST['filter']; 
$my_mapped_type = get_mapped_type($_POST['type']); //for.ex. you store it in db 
$base_query = "SELECT * FROM mydatabase"; 
if(isset($input_filter) && isset($my_mapped_type)){ 
    $base_query .= " where $my_mapped_type = $input_filter"; 
} 

その結果、あなたは全体のクエリを持っています$ base_query

+0

私は彼がajaxまたはjavascriptの答えをlokingしているとは思わない、質問そのものを考慮すると、 –

+0

あなたはajaxまたはjavascriptを使用しないので、ユーザが選択した値をサーバ側に送る方法を決定する必要がある。あなたはフォーム提出を使用することができます) –

+0

私はそれが暗黙で、@ Mishidooの問題のようには思えません。なぜなら、彼は値を渡すのが難しくなく、むしろクエリを動的に構築するからです。 –

関連する問題