У меня есть таблица HTML, в которой записаны записи из базы данных. Записи из столбца «Время вызова» извлекаются из базы данных MySQL. Записи в столбце «Таймер» не извлекаются из базы данных, это таймер Javascript.
Как только пользователь нажимает кнопку подтверждения, таймер останавливается, и конечное значение таймера должно быть ВСТАВЛЕНО в базу данных. Следующий таймер Javascript представляет собой слегка измененную версию чужого кода ( Истекшее время из заданного времени в базе данных )
Проблема: я не знаю, как вставить значение Истекшее значение времени в поля скрытой формы. Обратите внимание, что для каждой записи есть одно скрытое поле формы с идентификатором id="stoppedtime<?php echo $stopid; ?>
, Я знаю, что мне нужно продолжать увеличивать значение переменной-стоп. Мне нужно вставить все истекшие (после нажатия кнопки подтверждения) в соответствующие поля скрытой формы, чтобы впоследствии значение из этих скрытых полей формы было введено в базу данных.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> ElapsedTimeLogger = function(dateElementId, elapsedElementId, interval) { var container = $(elapsedElementId); var time = parseDate($(dateElementId).text()); var interval = interval; var timer; function parseDate(dateString) { var date = new Date(dateString); return date.getTime(); } function update() { var systemTime = new Date().getTime(); elapsedTime = systemTime - time; container.html(prettyPrintTime(Math.floor(elapsedTime / 1000))); // I Know I have to do something here to put the elapsed time into the hidden field //But I don't know how exactly to do it x = document.getElementById("stoppedid"); // The Problem here is that there are Multiple IDs!! x.value=; prettyPrintTime(Math.floor(elapsedTime / 1000)) // Change the hidden input field value } function prettyPrintTime(numSeconds) { var hours = Math.floor(numSeconds / 3600); var minutes = Math.floor((numSeconds - (hours * 3600)) / 60); var seconds = numSeconds - (hours * 3600) - (minutes * 60); if (hours < 10) hours = "0" + hours; if (minutes < 10) minutes = "0" + minutes; if (seconds < 10) seconds = "0" + seconds; var time = hours + ":" + minutes + ":" + seconds; return time; } this.start = function() { timer = setInterval(function() {update()}, interval * 1000); } this.stop = function() { clearTimeout(timer); } } $(document).ready(function () { <?php $count= $totalRows; // Total Number of Entries in the Database $datevar=1; $elapsedvar =1; $timeloggervar= 1; $confirmvar=1; if ($count > 0){ do { $count--; $timeloggervar++; $confirmvar++; $datevar++; $elapsedvar++;?> var timeLogger<?php echo $timeloggervar; ?> = new ElapsedTimeLogger("#date<?php echo $datevar; ?>", "#elapsed<?php echo $elapsedvar; ?>", 1); timeLogger<?php echo $timeloggervar; ?>.start(); $("#Confirm<?php echo $confirmvar; ?>").click(function() { //Stop timer upon clicking the Confirm Button timeLogger<?php echo $timeloggervar; ?>.stop(); }); <?php } while ($count > 0);}?> }); </script>
Дополнительная информация: Каждая запись в таблице имеет УНИКАЛЬНУЮ ФОРМУ, подобную этой. Я поместил скрытое поле в форму, чтобы каждая из ЗАКЛЮЧЕННЫХ ВРЕМЕНИ ВРЕМЕНИ ЗАПИСИ могла быть сохранена в значении, как показано ниже.
<?php echo'<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="form'.$formid.'">';?> <input name="Num" type="hidden" value="<?php echo $results['Time of Call']; ?>" /> **<input type="hidden" name="stoppedtime" id="stoppedtime<?php echo $stopid; ?>" value="">** .....
Было бы очень признательно, если бы вы могли помочь мне в этом, спасибо!
РЕДАКТИРОВАТЬ:
function update(id) { var systemTime = new Date().getTime(); elapsedTime = systemTime - time; container.html(prettyPrintTime(Math.floor(elapsedTime / 1000))); // I Know I have to do something here to put the elapsed time into the hidden field //But I don't know how exactly to do it x = document.getElementById("stoppedid"+id); // The Problem here is that there are Multiple IDs!! x.value= prettyPrintTime(Math.floor(elapsedTime / 1000)); // Change the hidden input field value } this.start = function(id) { timer = setInterval(function(id) {update(id)}, interval * 1000); }
Попробуй это,
<script> ElapsedTimeLogger = function(dateElementId, elapsedElementId, hiden, interval) { . . . function update() { var systemTime = new Date().getTime(); elapsedTime = systemTime - time; container.html(prettyPrintTime(Math.floor(elapsedTime / 1000))); $(hiden).val(prettyPrintTime(Math.floor(elapsedTime / 1000))); } . . . $(document).ready(function () { <?php for($id=1; $id<$totalRows; $id++){ ?> var timeLogger = new ElapsedTimeLogger("#date<?php echo $id;?>", "#elapsed<?php echo $id;?>","#stoppedid<?php echo $id;?>", 1); timeLogger.start(); $("#Confirm<?php echo $id; ?>").click(function() { //Stop timer upon clicking the Confirm Button timeLogger.stop(); }); <?php } ?> }); </script>
В $("#Confirm<?php echo $confirmvar; ?>").click(...
function, add this:
var stopvalue = $(this).parents('td').prev().text(); $(this).parents('td').find('input:hidden').val(stopvalue);
Настройте код так, чтобы он работал с таблицей.