ウェブにはステートレスなので、PHP変数のデータは1ページ(またはロード)から別のページ(ロード)には保持されません。基本的に毎回アプリケーションを一から起動しています。
これを回避する唯一の方法は、クッキーやセッション変数(またはデータベースのような永続的なストレージ)など、ある種の半永久的なストレージを使用することです - constant
を設定します。 define('TODAY_DATE',$date_now);
は、現在のスクリプトの実行のためにそのデータを一定にします。
これは、セッションストレージ($_SESSION
)を使用して、基本的な例である:警告は、あなたがそれを更新したり、設定解除しない限り、あなたは、セッション変数に時間が保存されてきたので、それは常になるということです
<?php
// crank up the session
// you may well have one running already,
// in which case ignore this
session_start();
// store the execution time for this script
// as a session variable if it's NOT already set
// i.e. don't overwrite it
if(empty($_SESSION['time_now'])) $_SESSION['time_now'] = date("ymdhis");
public function save_activity_m() {
foreach($details as $rows) {
$stock_in = $rows['product'] . "_" . $_SESSION['time_now'];
$data['STOCK_IN'] = ($rows['product'] == "") ? NULL : $stock_in;
$this->MProduct->ins_product_m($data);
}
echo "<script type='text/javascript'>alert('New stock arrived');window.top.location.reload();</script>";
}
/**
* Assuming this is the last thing you want to
* do with 'time_now' you should unset it here
*/
public function save_notifikasi() {
$lampiran = $this->input->post('lamp');
$data['note_date'] = $lampiran . "_" . $_SESSION['time_now'];
$data['note'] = $this->input->post('isi');
$this->MProduct->ins_notif($data);
// since we're done with the 'time_now' session
// variable we need to unset it...
unset($_SESSION['time_now']);
echo "<script type='text/javascript'>alert('You have a notification');</script>";
}
// just to be on the safe side unset the 'time_now' session var
// if it's older than 1 minute - otherwise future calls to this
// script, by the same user, during the same session will use
// the stored value from $_SESSION['time_now']
if(isset($_SESSION['time_now'])) {
$sessionTime = DateTime::createFromFormat('ymdhis', $_SESSION['time_now']);
$oneMinuteAgoTime = new DateTime('-1 minute');
if($sessionTime < $oneMinuteAgoTime) {
unset($_SESSION['time_now']);
}
}
そこに(現在のセッションのために) - ユーザーがスクリプトをもう一度実行すると、セッションからの保存された時間だけが使用されます。
私はunset()
という2つの呼び出しを行い、これを回避しました。
使用しているデータベースサーバーとデータタイプは何ですか? MySQL 5.7やMariaDBのようなものでは、 'Y-m-d H:i:s'の形式の日付を持つ' DATETIME'フィールドを使いたいでしょう。 – CD001
定数変数をエコーして、同じ値を保持するかどうかを調べることができます。 – Sam
私はテーブルのテキストとdatetimeを結合します。だから私はvarcharを使用する – ashura91