簡體   English   中英

PHP搜索/過濾功能

[英]PHP Search/Filter function

我的頁面上有一個過濾器/搜索功能,最多包含4個下拉列表,這些下拉列表取決於最后一個下拉列表的顯示方式...

在下拉菜單中,我有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="coverageRegion" id="coverageRegion">
    <option value="choose" selected="selected">Please choose</option>
    <option value="national">National</option>  
    <option value="international">International</option>
</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>

對於我的搜索功能,我當前使用的是“ IF”語句,其中說“ vehicleType = X和Coverage Region = X”顯示這些結果。

現在,我需要為縣添加第4個下拉列表。 在我的縣部分中,將有〜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>";    

        }
}

您是否要提交Switch聲明?

我認為那不是要走的路。

我假設這只是生成查詢? 使用那些參數。

可以這樣做嗎

$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' => '=');
}

如果設置了post變量(或者無論如何都不為空),基本上將變量添加到數組中

相反,有一種簡單的方法。 搜索后,您必須獲取密鑰。 像這樣輸入值。

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

現在只需發送更改密鑰並基於此外鍵獲取結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM