2012-01-05 72 views
2

我有一個php $ _POST變量,它顯示了前一頁的總持續時間。變量低於:如何添加和減去總持續時間

<?php $postduration = $_POST['durationChosen']; ?> 

總時間的格式是這樣"00 Hrs 00 Mins 00 Secs"

我所擁有的是一個文本框,並使用文本鏈接是一個timepicker,用戶可以選擇每個問題的時間。同樣,時間選擇器 中顯示的持續時間格式爲「00小時00分秒」。

會發生什麼事是用戶將從timepicker中選擇一個時間段,它將顯示在文本框中(這發生在頂部)。然後用戶可以點擊「添加」按鈕,這樣做是 ,它將持續時間添加到文本框中的新行中。如果他們願意,用戶可以在添加的行內更改持續時間。

現在總持續時間需要做的是自動減去或添加,具體取決於添加的行中顯示的內容。

我下面給你一個例子通過文字在我的意思:

Total Duration when page first opened: 00 Hrs 30 Mins 00 Secs 


Total Duration Now: 00 Hrs 05 Mins 00 Secs 


Row 1: 00 Hrs 10 mins 00 Secs 
Row 2: 00 Hrs 10 mins 00 Secs 
Row 3: 00 Hrs 05 mins 00 Secs 

如果你看一下exampe上面它是什麼,說明的是,當頁面首次開通有00總時長小時30分鐘00秒。但我已經添加了3行,全部包含它們的 持續時間。共3行25分鐘。所以總持續時間現在顯示00小時05分00秒。這是因爲30分鐘減去25分鐘就等於5分鐘。

因此,沒有人知道山楂可以做到這一點(PS我想,如果總持續時間超過總時間顯示格式「 - 00小時00分鐘00秒]」(減號包括在此格式))

下面顯示了timepicker主文本框所使用,然後加入新行的代碼(我想總的持續時間增加或減去取決於選擇在這個文本框):

<table id="questionDuration"> 
<tr> 
    <th colspan="2"> 
    Question Duration 
    </th> 
</tr> 
<tr> 
<td><input type="text" id="questiondurationpicker" name="questionDuration" readonly="readonly" /></td> 
</tr> 
<tr> 
<td>Total Duration Remaining: <strong><?php echo $postduration; ?></strong></td> 
</tr> 
</table> 

的Jquery:

$(function() { 
    $('#questiondurationpicker').trenttimepicker({ 
      timeFormat:'hh mm ss', 
      hourGrid: 4, 
      minuteGrid: 10, 
      secondGrid: 10, 
      showOn: 'button', 
      buttonImage: "Images/clock.gif", 
      buttonImageOnly: true 
      }); 

      }); 

下面的代碼顯示與timepickers對於已添加的每一行文本框(我想總的持續時間增加或減去取決於什麼顯示在這些文本框的每一行)

的Jquery:

function insertQuestion(form) { 

var $tr = $("<tr></tr>"); 
var $duration = $("<td class='duration'></td>") 

    $('#questiondurationpicker').each(function() { 

    var $this = $(this); 
    var $durationText = $("<input type='text' class='questiondurationpickerRow' readonly='readonly' />").attr('name',$this.attr('name')) 
        .attr('value',$this.val()) 

    $duration.append($durationText); 

    }); 

    $tr.append($duration); 
    $('#qandatbl').append($tr); 

$('.questiondurationpickerRow').trenttimepicker({ 
      timeFormat:'hh mm ss', 
      hourGrid: 4, 
      minuteGrid: 10, 
      secondGrid: 10, 
      showOn: 'button', 
      buttonImage: "Images/clock.gif", 
      buttonImageOnly: true 
      }); 

} 

謝謝你,希望這是有道理的。如果沒有,那麼請告訴我,我會盡我所能澄清它。

回答

0

如果我正確地理解了這個問題,您只需要將名稱添加到通過您在開頭提到的「添加」按鈕創建的其他文本框中。例如,創建一個陣列可能是最好的,例如:name="additionalDuration[]"

然後在您的PHP文件中,您將有兩個$ _POST變量:基本持續時間和一個附加持續時間數組。此時,您需要解析所有持續時間並添加或減去它們以計算總持續時間,然後按照您的要求進行格式化。

如果您在分析時間和計算時需要幫助,請隨時發佈評論回答。

更新,例如提交解析:

// example function to convert submitted date into seconds 
function time_to_seconds($str) { 
    if (preg_match("#^(\d+)\D+(\d+)\D+(\d+)$#", trim($str), $match)) 
     return $match[3] + 60 * $match[2] + 3600 * $match[1]; 
    return 0; 
} 
// taking base time as a starting amount 
$total_duration = time_to_seconds($_POST['baseDuration']); 

// for each additional user input calculating the total duration 
foreach ($_POST['additionalDuration'] as $add) 
    $total_duration -= time_to_seconds($add); 

// formatting the output 
echo date("H \H\r\s i \m\i\n\s s \S\e\c\s", $total_duration); 

正如我在帖子中看到,所有的附加數據從基礎持續時間中減去。這就是爲什麼我爲他們每個人使用-=。如我錯了請糾正我。 再次,如果他們出現,隨時提出進一步的問題。

+0

嗨,對不起,我一直在試圖編碼這個數組,並解析提交的時間和計算,我正在完成它的散列。我不斷收到錯誤,而且我無法接近。你知道如何編碼,你可以提供一個樣品,當你有時間,因爲我真的很掙扎:) – BruceyBandit 2012-01-05 17:15:31

+0

用幾行代碼更新了這篇文章。希望能幫助到你。 – Ranty 2012-01-05 18:06:36