使用ajax在php中使用带有多个选项的select标签搜索数据

时间:2016-12-16 06:57:05

标签: javascript php html ajax

我试图使用onchange select标签上的多个select标签从数据库中搜索数据,我有四个带有多个select选项的select标签。这是表格

<form method="GET" id="first_form" >
   <div class="col-md-3">
      <div class="form-group">
         <label>Maintenance</label> 
         <select id="chkveg" name="maintenance[]" multiple="multiple">
            <option value="21">Low</option>
            <option value="23">Medium</option> 
         </select>
      </div>
      <input type="hidden" id="btnget" value="Get Selected Values" />  
   </div>
   <div class="col-md-3">
      <div class="form-group">
         <label>Lighting </label>
         <select id="chkveg1" name="lighting[]" multiple="multiple">
            <option value="24">indoors: iow light</option>
            <option value="25">indoors: medium light</option> 
         </select>
      </div>
      <input type="hidden" id="btnget1" value="Get Selected Values" /> 
   </div>
   <div class="col-md-3">
      <div class="form-group">
         <label>Shade </label><br/>
         <select id="chkveg2" name="shade[]" multiple="multiple">
            <option value="30">Low</option>
            <option value="31">Medium</option> 
         </select>
      </div>
      <input type="hidden" id="btnget2" value="Get Selected Values" /> 
   </div>
   <div class="col-md-3">
      <div class="form-group">   
         <label>Other</label><br/>
         <select id="chkveg3" name="other[]" multiple="multiple"> 
           <option value="40">Low</option>
           <option value="41">Medium</option> 
         </select> 
      </div>
   </div>
</form>
<div class="col-md-3" id="form-content"> 
  </div>
我的数据库表结构是 enter image description here  搜索条件为“如果我从一个选择标记中选择多个选项,则应使用 OR 运算符进行搜索,如果我从第二个选择标记中选择一个选项,则应使用 AND 进行搜索运算符“。

例如:在上面的表单中,如果我从维护标签中选择两个选项,则使用带有一个pl_maintenance_search列的OR运算符进行搜索,如果我从照明选择标记中选择一个选项,则在pl_maintenance_search和pl_lighting_search之间使用AND进行搜索。和其他选择标签一样。 我正在使用此脚本提交此表单

$("form select").on('change', function () { 
	var dataString = $("#chkveg, #chkveg1, #chkveg2, #chkveg3").serialize();
    $.ajax({
	  url: 'ajax_file.php',
	  type: 'GET',
	 data: dataString, 
          dataType: 'html'
         })
    .done(function(data){
    	 $('#form-content').html(data);
    })
    .fail(function(){
        alert('Ajax Submit Failed ...'); 
    });
    
});

这是我的ajax_file.php代码

$operator='OR';
$all_array = $_GET; 
$unque_array = array(); 
$count=0;
foreach ($all_array as $main_key => $value )
{
    if($main_key)
    {
      	$count++; 
    }
    if($count>1){ 	$operator='AND'; }          
	foreach ($value as $r_value)
	{       
	    $single = $r_value;                     
	    $query = "SELECT * FROM tbl_pl_details WHERE pl_maintenance_search LIKE ? $operator pl_lighting_search LIKE ? $operator  pl_shade_search LIKE ? $operator  pl_other_search LIKE ?  ";
		$params = array("%$single%", "%$single%", "%$single%", "%$single%" );
		$select_maint_plants = $con->prepare($query);
		$select_maint_plants->execute($params);
				  		
	    while($fetch_light_plants = $select_maint_plants->fetch(PDO::FETCH_ASSOC))
		{
			if(!in_array($fetch_light_plants['id'], $unque_array))
			{
				echo $fetch_light_plants['pl_name'];  echo '<br/>';
			}
			$unque_array[]= $fetch_light_plants['id'];
		}//End while loop  		 
        }//End foreach loop
}//End foreach loop

以上代码仅使用单个选择标记,而不使用其他标记。

请帮我解决这个问题。

0 个答案:

没有答案