2
---------------------------------------------------------------------------------------
|   products_id   |   net_price  |  special_price  |  special_expire  | special_status
| -------------------------------------------------------------------------------------
|    1            |      500     |     200         |  2012-5-03 00:00 |      1
| -------------------------------------------------------------------------------------
|    2            |      600     |     300         |  2012-6-04 00:00 |      0
| -------------------------------------------------------------------------------------
|    3            |      700     |     400         |  2012-7-05 00:00 |      1
---------------------------------------------------------------------------------------

ここproducts_idnet_price、、、は自明であり、特別価格を適用すること、および特別価格を無効にすることをspecial_price定義します。special_expirespecial_status10

価格帯のある検索フォームがあります。

<form method="get" action="http://website.com">
    <input type="text" id="ref-search" name="search" value="<?php echo  $search_value;?>" class="text" size="55" placeholder="Type a keyword." style="height: 30px;
    width: 89%;">

<label>Price Range:</label><br>
<span class="price-range">
From <input type="text" id="price1" name="pricefrom" 
     value="<?php echo $pricefrom_value; ?>" class="text" style="
     height: 20px;
     width: 22%;"> 

to   <input type="text" id="price2" name="priceto" 
     value="<?php echo $priceto_value; ?>" class="text" style="
     height: 20px;
     width: 22%;">
</form>

のいずれかがであるか、日付の値が過ぎているか、またはの値がであるnet_priceかを条件付きで選択するためのソリューションを開発または見つけるのに苦労しています。次に、に値がある場合、日付の値は渡されておらず、の値が値を選択します。special_price0.000special_expirespecial_status0special_pricespecial_expirespecial_status1special_price

これが私が撮りたい写真です。(これが不可能であることは知っていますが、これが私の問題を理解するための最良の方法だと思います。)

    $sql = "select products_id, products_price, special_price, special_expire,  
            special_status, products_name from " . TABLE_GLOBAL_PRODUCTS . "  where
            products_name like '%" . $search_key . "%' 

    and /**Where the condition starts**/ 

    if(special_value is =="0.000" || special_expire == <EXPIRED> || 
       special_status =="0") {
       products_price >= ".$pricefrom_key." and products_price <= ".$priceto_key."
    } else {
       specials_new_products_price >= ".$pricefrom_key." 
       and specials_new_products_price <= ".$priceto_key." order by products_name
    }";

私はあなたが私たちを助けることができることを願っています..ありがとう。

4

1 に答える 1

3

これを試して:

$sql = "SELECT products_id, products_price, special_price, special_expire, 
special_status, products_name, 
case when (special_price > 0 and special_expire > Now() and special_status != 0) 
then special_price else net_price end price from " . TABLE_GLOBAL_PRODUCTS . " 
where products_name like '%" . $search_key . "%' 
having price >= ".$pricefrom_key." and price <= ".$priceto_key.";

入力を必ずエスケープしてください。

于 2012-05-07T02:21:27.343 に答える