簡體   English   中英

我將如何在php中狀態更改之間進行計時?

[英]How would I go about timing between status changes in php?

當狀態更改為准備/准備時,計時器開始計時。 然后,我想停止計時器並在狀態更改為就緒時計算差異,並將其作為時間存儲在數據庫中。 我已經嘗試了各種方法,但似乎無法正常工作,我在做什么錯? 謝謝

if(isset($_POST['prepare'])){
        $_SESSION['startTime'] = time();
        $question2="UPDATE `order` SET orderStatus='Preparing', idEmployee='$_SESSION[id]' WHERE idorder='$_POST[id]'";
        $sth = $db->prepare($question2);
        $sth->execute();
    }

    if(isset($_POST['ready'])){
        $total = time() - $_SESSION['startTime'];
        echo date('h:i:s', $total);

        $question2="UPDATE `order` SET orderStatus='Completed', timeCompleted='$total' WHERE idorder='$_POST[id]'";
        $sth = $db->prepare($question2);
        $sth->execute();
    }

編輯:通過使用DateTime類中的方法,我克服了我遇到的問題。 我首先記錄下訂單的時間,然后記錄下訂單完成的時間。 然后,我使用diff()方法計算兩次記錄的時間之間的差,並將結果存儲在我的數據庫中。

if(isset($_POST['prepare'])){
        $_SESSION['startTime'] = new DateTime();
        $question2="UPDATE `order` SET orderStatus='Preparing', idEmployee='$_SESSION[id]' WHERE idorder='$_POST[prepare]'";
        $sth = $db->prepare($question2);
        $sth->execute();
}

if(isset($_POST['ready'])){
        $endTime = new DateTime();
        $i = $_SESSION['startTime']->diff($endTime);
        $end = $i->format('%h:%i:%s');

        $question2="UPDATE `order` SET orderStatus='Completed', timeCompleted='$end' WHERE idorder='$_POST[ready]'";
        $sth = $db->prepare($question2);
        $sth->execute();
}

$total = time() - $_SESSION['startTime']替換$total = time() - strtotime($_SESSION['startTime'])

並添加session_start(); 如果沒有的話,將其置於代碼的頂部

然后它將起作用。

如果准備和准備工作都是由同一個人(在同一會話中)在同一台計算機上執行的,則此代碼應起作用。 如果您相信所有這些都是對的-我會檢查以確保將會話變量設置為print_r($ _ SESSION)

但是,我建議您在將orderStatus更新為'Preparing'時,創建一個名為timeStarted的新列並將其更新為time(),然后在更新為'Completed'時將timecompleted也設置為time()

然后,您可以像當前一樣輕松地計算出差異(如果這段代碼確實工作,timeCompleted實際上是timeTaken)-您甚至可以添加第三列,這是兩者之間的差異,以便於報告。

這樣做意味着如果花費的時間超過會話時間,或者計算機重新啟動/重新登錄,startTime不會丟失

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM