2017-08-07 6 views
0

私は7,15,30,50,75、または100日ごとにレポートを生成する必要があります。これは、ユーザーが選択ドロップダウンで自分の選択肢を選択した場合です。まず、7日間のレポートを生成するクエリを作成しました。このクエリはうまくいきました。しかし、私はその選択をユーザーの選択に基づいて動的にする方法がわかりません。 7日のレポートのmysql date_formatを使用して日付を動的に与えることはできますか?

私のクエリは以下の通りです:

SELECT table1.order_id FROM table2 LEFT JOIN table1 ON table1.order_id = table2.order_id WHERE table1.assigned_user_id=:assigned_user_id AND DATE(table2.track_date) >= (DATE(NOW()) - INTERVAL 7 DAY) AND table2.order_status=2 GROUP BY table1.order_id 

私の選択ドロップダウンがある:ユーザーの選択に基づいてレポートを生成する

<select name="supply_analysis" id="supply_analysis" class="supply_analysis"> 
      <option value="7" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='7')?'selected':''?>>7 days</option> 
      <option value="15" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='15')?'selected':''?> >15 days</option> 
      <option value="30" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='30')?'selected':''?> >30 days</option> 
      <option value="50" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='50')?'selected':''?> >50 days</option> 
      <option value="75" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='75')?'selected':''?> >75 days</option> 
      <option value="100" <?php echo (isset($_GET['analysis']) && $_GET['analysis']=='100')?'selected':''?> >100 days</option> 
</select> 

私のクエリは次のとおりです。

"SELECT table1.order_id FROM table2 LEFT JOIN table1 ON table1.order_id = table2.order_id WHERE table1.assigned_user_id=:assigned_user_id AND DATE(table2.track_date) >= (DATE(NOW()) - INTERVAL ".$_GET['analysis']." DAY) AND table2.order_status=2 GROUP BY table1.order_id" 

現在、クエリは機能しているようですが、うまく動作しているかどうかはわかりません。助言をお願いしますか?ありがとう。

+0

から送信された値を使用して、バックエンドにPHPを使用しないのですか? – Ali

+0

はい私はバックエンドとしてPHPを使用しています。@Ali –

答えて

0

はこれを見て取る:

$values = [7 , 15 , 30 , 50 , 75 , 100]; 

if(in_array($values , $supply_analysis)) //use this to prevent SQL injection 
{ 
    $SQL = "SELECT table1.order_id 
      FROM table2 LEFT JOIN table1 ON table1.order_id = table2.order_id 
      WHERE table1.assigned_user_id=:assigned_user_id AND DATE(table2.track_date) >= (DATE(NOW()) - INTERVAL {$supply_analysis} DAY) AND table2.order_status=2 GROUP BY table1.order_id"; 

    //do your database query here 

} 

$supply_analysisは、フォーム

+0

ありがとう、私はこれを試しますが、うまくいくようです。私は再びあなたに連絡します。 –

関連する問題