如果基于填充的输入字段数量的条件



我当前正在尝试执行高级搜索功能。目前,我有一个具有7个可能输入字段的表单。我要实现的目标是,当用户填写表单字段时,这些字段将确定我的后端设置的条件,以"过滤"数据。

因此,如果用户字段在7个字段中的两个字段中,这两个输入字段将用作我的后端过滤条件。如果其他用户填写了7个输入字段,则为3个条件,依此类推。因此,用户可以选择填写任何可能的组合/输入数:最少1和最大。7。只有在填充输入字段时才会设置条件。(希望你们了解我来自哈哈哈的地方)

因此,我想问,我该如何做到这一点?

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

简单解决方案您可以尝试以下内容。它可能会有所帮助

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

我认为这是最好的方法

最新更新