2

SQL テーブルからの一連のレポート データを表示する HTML テーブルがあります。現在、クエリのデフォルトは現在の日付ですが、開始日/終了日の変数を変更してページを更新する最も効率的な方法を探しています。私のクエリは次のようになります。

$sts = date('Y-m-d');
$ets = date('Y-m-d', time()+86400);
$q = "SELECT *  FROM data WHERE `ts` BETWEEN '$sts' AND '$ets'";

次に、新しい日付範囲を選択するための基本的な HTML 選択を作成しました。フォームの送信時に、そのすべての情報が POST に保存されます。投稿情報を反映するように $sts および $ets 変数を変更する最も簡単な方法は何ですか? フォームアクション「index.php」を作成し、AJAXを使用して変数の変更を処理することになると推測しています。しかし、よくわかりません。

お手伝いありがとう!

4

4 に答える 4

1

試す

$sts="";
$ets="";
if (!isset($_POST['start_date']))
    $sts = date('Y-m-d');
else
    $sts = $_POST['start_date'];
if (!isset($_POST['end_date']))
    $ets = date('Y-m-d', time()+86400);
else
    $ets = $_POST['end_date'];

$q = "SELECT *  FROM data WHERE `ts` BETWEEN '$sts' AND '$ets'";`

日付を変更するためのフォームを含めます。

このように、フォームが最初に読み込まれるとき、投稿データはなく、デフォルトの日付範囲が読み込まれます。ユーザーがフォームの日付範囲を変更して送信すると、新しい範囲が読み込まれます。

http get または post から取得した情報を使用する前に、次のことを実行する必要があります。

mysqli_real_escape_string すなわち

$q = "SELECT *  FROM data WHERE `ts` BETWEEN 'mysqli_real_escape_string($sqlconn,$sts)' AND 'mysqli_real_escape_string($sqlconn,$ets)'";`
于 2013-06-08T18:04:21.597 に答える
1

ユーザー入力に基づいて範囲を調整しようとしている場合は、これをアクティブにする方法に応じて、$_GET引数を組み込むことを検討することになるでしょう。$_POST通常$_GETは扱いやすいです。

日付範囲を使用している場合は、UNIX タイムスタンプ番号を送信し、それを使用してオフセットを計算できます。

次に、クエリは次のようになります。

$start_t = date('%Y-%m-%d', $_GET['from']);
$end_t = date('%Y-%m-%d', $_GET['from'] + 86400);

$sth = $db->prepare("SELECT * FROM DATA WHERE `ts` BETWEEN :start_t AND :end_t");
$sth->bind(array('start_t' => $start_t, 'end_t' => $end_t));
于 2013-06-08T18:04:58.450 に答える