2016-10-07 2 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 Query

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' is date column type –

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

где column_date = DATE_ADD (дата ("column_date"), INTERVAL - 30 DAY) и column_date <= DATE_ADD (дата ("column_date"), INTERVAL - 30 дней); этот за последние 30 дней reocrds –

+0

не могли бы вы написать все запросы заранее? –

Смежные вопросы