2017-08-16 32 views
1

datetime変数を2つの関数を使用して別のテーブルに格納したいとします。私はCIconstraintを使用していますが、まだ運がありません。同じ `datetime`変数を別のテーブルに挿入するには?

これは制約である:

$date_now = date("ymdhis"); 
define('TODAY_DATE',$date_now); 

これらは関数です:

public function save_activity_m(){ 
    foreach($details as $rows){   

     $stock_in   = $rows['product']."_".TODAY_DATE; 
     $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>"; 
} 

public function save_notifikasi(){ 

    $lampiran = $this->input->post('lamp');  

    $data['note_date'] = $lampiran."_".TODAY_DATE;  
    $data['note']  = $this->input->post('isi'); 

    $this->MProduct->ins_notif($data); 
    echo "<script type='text/javascript'>alert('You have a notification');</script>"; 


} 

日時の作り方は$data['STOCK_IN']$data['note_date']も同じですか?

+0

使用しているデータベースサーバーとデータタイプは何ですか? MySQL 5.7やMariaDBのようなものでは、 'Y-m-d H:i:s'の形式の日付を持つ' DATETIME'フィールドを使いたいでしょう。 – CD001

+0

定数変数をエコーし​​て、同じ値を保持するかどうかを調べることができます。 – Sam

+0

私はテーブルのテキストとdatetimeを結合します。だから私はvarcharを使用する – ashura91

答えて

0

ウェブにはステートレスなので、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つの呼び出しを行い、これを回避しました。

0

PHP: defineを参照してください。これは定数であり、スクリプトが実行されているのと同時に2つの関数が実行された場合、同じ値になります。

+0

私はそれを使っています。秒に違いがあります。 – ashura91

+0

多分、それはデータベースの構成です。この行には、** DEFAULT CURRENT_TIMESTAMP **または** ON UPDATE CURRENT_TIMESTAMP **があります。多分? –

+0

datetimeのデフォルトのフォーマットは次のとおりです。** YYYY-MM-DD HH:MM:SS ** –

関連する問題