2

私のページには、最大 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 and 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>";    

        }
}
4

2 に答える 2

0

代わりに簡単な方法があります。検索後にキーを取得している必要があります。そのように値を入れてください。

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

変更時にこのキーを送信し、この外部キーに基づいて結果をフェッチするだけです。

于 2012-04-25T10:35:10.213 に答える
0

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変数が設定されている(または空ではない)場合、基本的に変数を配列に追加します

于 2012-04-25T10:16:13.647 に答える