2012-04-25 207 views
2

我有我的网页上,它由一个最多4个下拉菜单中的过滤器/搜索功能,下拉式菜单中显示依赖于什么最后的下拉菜单中...PHP搜索/过滤功能

在我的下拉列表中我有4个潜在的情景

车辆类型

<select name="vehicleType" id="vehicleType"> 
    <option value="choose" selected="selected">Please choose</option> 
    <option value="hgv">HGV</option> 
    <option value="psv">PSV</option> 
    <option value="lgv">LGV</option> 
    // MORE OPTIONS AVAILABLE 
</select> 

覆盖区域的网站首选

<select name="locationType" id="locationType"> 
    <option value="choose" selected="selected">Please choose</option> 
    <option value="truckstops">Truck stops at lowest price</option> 
    <option value="motorway">Branded motorway sites</option> 
</select> 

<select name="coverageRegion" id="coverageRegion"> 
    <option value="choose" selected="selected">Please choose</option> 
    <option value="national">National</option> 
    <option value="international">International</option> 
</select> 

类型对于目前使用我的搜索功能IM 'IF' 语句,我说,如果 'vehicleType = X和覆盖区域= X' 显示了这些结果。

但是现在我需要为县添加第四个下拉菜单。在我县的县会有50个县,我不能真实地针对每种可能的情况有一个IF声明,因为它需要很长的时间,那么做这件事的最好方法是什么?

的就是即时通讯目前正与我的PHP做的一个例子是...

if ($_POST['vehicleType'] == 'car' && $_POST['pricing'] == 'pump') {    


      $customkey = 'vehicleType'; 
      $customvalue = 'car'; 

      $customkey1 = 'pricing'; 
      $customvalue1 = 'pump'; 

      $args = array('orderby' => 'meta_value_num', 'meta_key' => 'order', 'order' => 'ASC', 
      'meta_query' => array(
      array(
       'key' => $customkey, 
       'value' => $customvalue, 
       'compare' => '=' 
      ), 
      array(
       'key' => $customkey1, 
       'value' => $customvalue1, 
       'compare' => '=' 
      ) 
      ) 
      ); 

      $query = new WP_Query($args);// The Loop 
       $i = 0; $i = -1; 

while ($query->have_posts()) 
{ 
    $i++; 
    $query->the_post(); 
    if ($keys = get_post_custom_keys()) 
    { 
     echo "<div class='clearfix card-prod ".($i==0?'first':'')."'><div class='top-dets'><span class='card-title'>"; 
     echo the_title(); 
     echo "</span>"; 



    // Network query 
     $network_value = get_post_custom_values('srchnetwork'); 
     foreach ($network_value as $key => $value) { 
     echo '<span class="srch-val-">'. $value . '</span>'; }// Pricing Query 
     $pricing_value = get_post_custom_values('srchpricing'); 
     foreach ($pricing_value as $key => $value) { 
     echo '<span class="srch-val-1">'. $value . '</span>'; } 

    // Setup Query 
     $setup_value = get_post_custom_values('srchsetupfee'); 
     foreach ($setup_value as $key => $value) { 
     echo '<span class="srch-val-2">'. $value . '</span>'; } 

    // Services Query 
     $services_value = get_post_custom_values('srchservices'); 
     foreach ($services_value as $key => $value) { 
     echo '<span class="srch-val-3">'. $value . '</span></div>'; } 

    // Big Card Query 
     $bigcard_value = get_post_custom_values('bigcard'); 
     foreach ($bigcard_value as $key => $value) { 
      echo '<a href="/" class="cardclick"><img src="/wp-content/themes/CAFC/images/cards/'. $value . '" alt="'; } 
     echo the_title() . '" /></a>'; 



    echo '<img src="wp-content/themes/CAFC/images/top-choice.jpg" alt="Top Choice" class="topchoice">'; 
echo the_excerpt()."</div>";  

     } 
} 

回答

0

取而代之的是一个简单的方法这个

$args = array('orderby' => 'meta_value_num', 'meta_key' => 'order', 
'order'=>'ASC','meta_query' => array()); 

if (isset($_POST['vehicleType'])){ 
$args['meta_query'][]=array(
     'key' => 'vehicleType', 
     'value' => $_POST['vehicleType'], 
     'compare' => '='); 
} 

if(isset($_POST['another'])){ 
$args['meta_query'][]=array(
     'key' => 'vehicleType', 
     'value' => $_POST['vehicleType'], 
     'compare' => '='); 
} 

if(isset($_POST['another'])){ 
$args['meta_query'][]=array(
     'key' => 'vehicleType', 
     'value' => $_POST['vehicleType'], 
     'compare' => '='); 
} 

if(isset($_POST['another'])){ 
    $args['meta_query'][]=array(
     'key' => 'vehicleType', 
     'value' => $_POST['vehicleType'], 
     'compare' => '='); 
} 

基本上添加变量到你的阵列来完成。搜索后您必须获得密钥。把它的价值。

<option = "<?php echo $value;?>">Blah blah</option> 

现在只是发上更改此键,结果取这个外键的基础上。

0

你问switch语句?

我不认为这是要走的路。

我假设这只是生成一个查询?使用这些参数。

莫非一样,如果后变量设置(或不为空等等)