2016-10-07 87 views
0

我想根據下拉選擇值編寫SQL查詢。基於下拉選擇的SQL查詢

例如,如果管理員選擇今天,那麼SQL查詢應該只獲得今天的記錄等等。

HTML

<select name="report_date"> 
    <option value="Today">Today</option> 
    <option value="Yesterday">Yesterday</option> 
    <option value="Last7Days">Last 7 Days</option> 
    <option value="This Week">This Week</option> 
    <option value="LastWeek">Last Week</option> 
    <option value="ThisMonth">This Month</option> 
    <option value="LastMonth">Last Month</option> 
    <option value="ThisYear">This Year</option> 
    <option value="LastYear">Last Year</option> 
    <option value="AllTime">All Time</option> 
</select> 

<input type="text" name="product_name"/> 

PHP

$fixedrange = $_GET['report_date']; 
$pname= $_GET['product_name']; 

if($fixedrange=="Today"){ 
    $today = date('Y-m-d'); 
    $fixeddate = 'OR o.`custom_date`='. $today; 
} 

SQL查詢

SELECT * 
FROM order_items AS oi 
INNER JOIN orders o ON o.id=oi.`order_id` 
WHERE oi.`product_name` LIKE '%$pname%' $fixeddate 
    AND o.status = '1' 
ORDER BY o.custom_date DESC 

回答

0

您應該使用CONCAT

$sql = " SELECT * FROM order_items AS oi 
    INNER JOIN orders o ON o.id=oi.`order_id` 
    WHERE oi.`product_name` LIKE concat('%', $pname,'%') 
    $fixeddate 
    AND o.status = '1' 
    ORDER BY o.custom_date DESC ; "; 

使用或不使用PHP的日期可以使用date(o. CUSTOM_DATE ) = curdate()

if($fixedrange=="Today"){ 
    $today = date('Y-m-d'); 
    $fixeddate = 'OR date(o.`custom_date`) = curdate() ' ; 
} 

$sql = " SELECT * FROM order_items AS oi 
    INNER JOIN orders o ON o.id=oi.`order_id` 
    WHERE oi.`product_name` LIKE concat('%', $pname,'%') 
    $fixeddate 
    AND o.status = '1' 
    ORDER BY o.custom_date DESC ; "; 
+0

的問題是,所有的記錄今天的點擊時顯示? –

+0

哪個是o.'custom_date'列的類型? – scaisEdge

+0

'custom_date'是日期列類型 –

0
SELECT OrderId,DATE_ADD(date(OrderDate),INTERVAL + 30 DAY) AS OrderPayDate 
FROM Orders 

use +(plus) or - (minus) for adding future date or subtract for past date using DATE_ADD sql function 
+0

問題是所有記錄都顯示 –

+0

where column_date = DATE_ADD(date(「column_date」),INTERVAL-30 DAY)和column_date <= DATE_ADD(date(「column_date」),INTERVAL - 30天);這一個是過去30天reocrds –

+0

你可以請提前寫下所有的問題 –