0

HTMLに3つの入力ボックスがあります:

<input type='text' name='source' />
<input type='text' name='target' />
<input type='text' name='date' />
<input type='submit' name='submit' value='go' />

これで、mysql からソース データとターゲット データを正常に取得できましたが、日付が指定されていない場合は、データベースから過去 7 日間のデータを取得する必要があります。私はこれを試すことができ、選択クエリ用の関数を作成しましたが、7 つの変数を使用してテーブル形式で構造化しました。問題は、このようなすべてに適したロジックを設計できないことです。

  • 日付が指定されていない場合、ソースの 7 日間のデータを取得する

  • 日付が指定されていない場合は、ターゲットの 7 日間のデータ

次のようなifおよびelseif条件を使用してこれを試すことができます。

if (isset($_POST['source']) && empty($_POST['target'] && empty($_POST['date'] ) {

  //fired query function seven times with different dates through pass a query
  $init->get_result( $_POST['source'], date('Y-m-d') );

}

select_query の関数:

function get_result() {
   $query = "select count(*) from tablename where column=$_POST['source']";
   $this->select_query($query); //from there select query function called
}

function select_query($post, $date) {

$res = $mysqli->query($query);
$row->$res->fetch_row();

return $row[0];

}

また、日付が指定されている場合、特定の日付のデータが取得されます。これはすべてうまくいきましたが、ロジックはうまくいきませんでした。また、フォーム アクションを php_self として使用して同じページで結果を取得していますが、変数で結果を使用し、html テーブルで表示する場合、ポスト データの結果を指定した後に表示するという条件を指定する必要がありますが、これは行われません。これは非常に長いですが、問題は私にとって非常に重要です。これを見てください。

更新:私はこのコードで php のデータベースから値を取得します:

if ( !empty( $_POST['source'] ) && empty( $_POST['target'] ) && empty( $_POST['date'] ) ) {

        echo '<table border=1>';

        echo '<tr>' . '<td>' ."<input type=submit name='tod' value=" . date( 'Y-m-d' )." >" . '</td>' . '<td>' . $adinit->get_req_data( $_POST['source'], date( 'Y-m-d' ) ) . '</td>' . '</tr>';
}

日付を表示するechoステートメントで入力ボタンを作成しました。データベースから別の表形式のデータを表示するボタンのイベントを作成しようとしています。これどうやってするの?

4

1 に答える 1

0

strtotime()次の機能を使用できます。

if (isset($_POST['source']) && empty($_POST['target'] && empty($_POST['date'] ) {
    $time = strtotime('-7 days'); // or strtotime('-1 week') works too
    //fired query function seven times with different dates through pass a query
    $init->select_query( $_POST['source'], date('Y-m-d', $time) );
}

付録:1日の時間間隔で作業するには、クエリを次のように変更する必要があります。

get_req_data($source, $date) { 
    $dateMax = date('Y-m-d', strtotime($date) + (60 * 60 * 24)); // + 1 days
    $query = "Select count(*) from tablename where time >= '$date' AND time <= '$dateMax'";
    ...
}

timeこれは、列が日時/タイムスタンプタイプの場合にのみ機能します。

于 2012-11-25T10:03:52.097 に答える