2017-11-28 20 views
0

現在、高度な検索機能を実行しようとしています。現在、7つの可能な入力フィールドを持つフォームがあります。私が達成しようとしているのは、ユーザーがフォームフィールドに記入すると、これらのフィールドはバックエンドでデータをフィルタリングするために設定された条件を決定するということです。入力フィールドの数に基づいて条件が満たされた場合

したがって、ユーザーが7のうち2つのフィールドにフィールドを入力すると、これらの2つの入力フィールドがバックエンドのフィルター条件として使用されます。別のユーザーが7の入力フィールドから3つの入力フィールドを入力した場合、3つの条件などが入力されます。したがって、ユーザは可能な任意の組み合わせ/入力数を入力することができます:最小1と最大7。条件は入力フィールドが満たされたときにのみ設定されます。 (あなたが私がハハからどこに来ているのか理解してくれることを願って)

こういうわけで、

答えて

0
$queryarray = array(); 

if(isset($_POST['field1'])&&strlen($_POST['field1']) > 0) array_push($queryarray,'column 1 = "'.$_POST['field1'].'"') ; 
. 
. 
. 
V 
if(isset($_POST['field7'])&&strlen($_POST['field7'])>0) array_push($queryarray,'column 7 = "'.$_POST['field7'].'"') ; 
$query = 'SELECT * FROM table WHERE'.implode(' AND ', $queryarray); 

は、私はそれが役立つかもしれない。これは

0
As My understanding 
HTML Form 
<form action="#" method="post"> 
<div class="form-group"> 
     <label class="col-md-2">Search Field 1 </label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 1" name="Field[][Field_one]"> 
     </div> 

     <label class="col-md-2">Search Field 2</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 2" name="Field[][Field_two]"> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-md-2">Search Field 3</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 1" name="Field[][Field_three]"> 
     </div> 

     <label class="col-md-2">Search Field 4</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 4" name="Field[][Field_four]"> 
     </div> 
    </div> 


    <div class="form-group"> 
     <label class="col-md-2">Search Field 5</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 5" name="Field[][Field_five]"> 
     </div> 

     <label class="col-md-2">Search Field 6</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 6" name="Field[][Field_six]"> 
     </div> 
    </div> 



    <div class="form-group"> 
     <label class="col-md-2">Search Field 7</label> 
     <div class="col-md-10"> 
     <input type="text" class="form-control" placeholder="Search Field 7" name="Field[][Field_seven]"> 
     </div> 

    </div> 
    <div class="form-group"> 
     <label class="col-md-2">Search</label> 
     <div class="col-md-10"> 
     <input type="submit" name="submit" value="Find" /> 
     </div> 
    </div> 
    </form> 

    PHP Script: 
if(isset($_POST['Field'])){ 
$levels = $_POST['Field']; 
    foreach($levels as $level){ 
     if(isset($level['Field_one']) && strlen($level['Field_one']) > 0){ 
      $Field_one = $level['Field_one'] ; 
     } 
     if(isset($level['Field_two']) && strlen($level['Field_two']) > 0){ 
      $Field_two = $level['Field_two']; 
     } 
     if(isset($level['Field_three']) && strlen ($level['Field_three']) > 0){ 
      $Field_three = $level['Field_three']; 
     } 
     if(isset($level['Field_four']) && strlen($level['Field_four']) > 0){ 
      $Field_four = $level['Field_four']; 
     } 
     if(isset($level['Field_five']) && strlen($level['Field_five']) > 0){ 
      $Field_five = $level['Field_five']; 
     } 
     if(isset($level['Field_six']) && strlen($level['Field_six']) > 0){ 
      $Field_six = $level['Field_six']; 
     } 
     if(isset($level['Field_seven']) && strlen($level['Field_seven']) > 0){ 
      $Field_seven = $level['Field_seven']; 
     } 

    }// end foreach 
}// end if 
0

は、単にソリューションは、あなたが次のことを試すことができます最善の方法だと思います

//get all the request params 
$request = $_POST; 
$query_data = array(); 

//check for the each filter set or not 
if(isset($_POST['field1'] && $_POST['field1']!="")){ 
    $query_data['column1'] = $_POST['field1']; 
} 
. 
. 
. 
. 
if(isset($_POST['field7']) && $_POST['field7']!=""){ 
    $query_data['column7'] = $_POST['field7']; 
} 

$where_condition = " where "; 
foreach ($query_data as $key => $value){ 
    $where_condition .= "$key='$value' AND "; 
} 
$where_condition .= " 1=1 " 

$sql = "select * from table1 ".$where_condition; 
関連する問題