2016-11-23 93 views
0

我想圖表瀏覽器每天花費數小時會議。在圖表中每天都會提及花費時間。當我點擊按鈕的時候會開始,然後再次點擊按鈕時間將結束,最後計算開始到結束時間存儲在像會話或任何其他。這將發生三天,最後會生成圖表。如何存儲在當點擊按鈕開始再次點擊按鈕結束時間計算開始到結束的時間在PHP

HTML代碼:

<html> 
    <body> 
     <form action="time_calculation.php" method="POST"> 
      <input type="submit" name="start" value="Start"> 
      <br><br> 
      <input type="submit" name="end" value="End"> 
     </form> 
    </body> 
</html> 

PHP:

<?php 
session_start(); 
if(isset($_POST['start'])) { 
    date_default_timezone_set('Asia/Calcutta'); 
    $time_start=date("Y-m-d h:i:s A"); 
    $_SESSION['start']='$time_start'; 
    echo "time start now ".$time_start."<br>"; 
} 

if(isset($_POST['end'])) { 
    date_default_timezone_set('Asia/Calcutta'); 
    $time_end=date("Y-m-d h:i:s A"); 
    $_SESSION['end']='$time_end'; 
    echo "time was ended".$time_end."<br>"; 
    $sst=strtotime($_SESSION['start']); 
    $eet=strtotime($_SESSION['end']); 
    $diff=$eet-$sst; 
    $timeelapsed=mktime("h:i",$diff); 
    echo $timeelapsed; 
} 
?> 
+0

你得到什麼輸出? – Luke

+0

當我點擊結束按鈕,它會顯示時間爲ended2016-11-23上午10時58分43秒 警告:mktime()預計參數1要長,在C指定的字符串:\ XAMPP \ htdocs中\程序\ time_calculation。 php 23行 –

+0

所以你的問題是你的'mktime()'的格式。或者更特別的是,你不應該在那裏使用'mktime()'。你實際上只是想再次使用'date()'方法。 – Luke

回答

0

您可以在活動會話時間存儲在數據庫的臨時表,並計算其3天。

我不符合你的要求清楚,如果你需要跟蹤的細節,你可以像使用Google analytics

+0

在PHP中如何計算開始到結束時間會話並顯示時間差 –

+0

我試圖讓使用PHP中,我有兩個按鈕像時鐘和時鐘輸出時間跟蹤系統。我正在存儲時鐘並在會話變量中計時。現在我的要求是計算時間和計時時間之間的差異。如果您有關於計算時間差一個明確的想法跟我分享一下 –

0

mktime()可用的工具來創建輸入數組的時間戳。 PHP Man

我建議你改變代碼,從會話中取出你的日期,並把它變回DateTime對象。然後你可以使用DateInterval獲得在DateTime的差異和輸出格式,以自己的喜好。

$sst= new DateTime($_SESSION['start']); 
$eet= new DateTime($_SESSION['end']); 
$diff=date_diff($eet, $sst); 
$timeelapsed=$diff->format('%r %a days %h hours and %i minutes'); 
echo $timeelapsed; 

編輯:你的PHP也有引用您的變量的問題。例如。試圖賦予它的價值$_SESSION['start']時,不應引用$time_start。它試圖分配文字字符串,而不是分配給變量的日期對象。

編輯2:下面是完整的代碼(改爲單頁表格/ PHP)

<?php 
session_start(); 

?> 

<html> 
    <body> 
     <form action="thisForm.php" method="POST"> 
      <input type="submit" name="start" value="Start"> 
      <br><br> 
      <input type="submit" name="end" value="End"> 
     </form> 
    </body> 
</html> 

<?php 
if(isset($_POST['start'])) { 
    date_default_timezone_set('Asia/Calcutta'); 
    $time_start = date("Y-m-d h:i:s A"); 
    $_SESSION['start'] = $time_start; 
    echo "time start now $time_start <br>"; 
} 

if(isset($_POST['end'])) { 
    date_default_timezone_set('Asia/Calcutta'); 
    $time_end = date("Y-m-d h:i:s A"); 
    $_SESSION['end'] = $time_end; 
    echo "time was ended $time_end <br>"; 
    $sst= new DateTime($_SESSION['start']); 
    $eet= new DateTime($_SESSION['end']); 
    $diff = date_diff($eet, $sst); 
    $timeelapsed = $diff->format('%r %a days, %h hours, %i minutes and %S seconds'); 
    echo $timeelapsed; 
} 
?> 
+0

思想,這將是展... 0每天0.00小時0分鐘。它不計算開始之間的差異到結束時間 –

+0

@這j.mani是事實上,它正是它所做的。 – Luke

+0

我剛剛注意到,評論可以閱讀任何方式。我的代碼已經過測試。並再次進行測試。有用。 – Luke