2017-11-28 1 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; 
관련 문제