![](/img/trans.png)
[英]How to change the 2nd textbox value based on the 2nd dropdown that is automatically changed from 1st dropdown?
[英]How To offset an HTML table with PHP to Subtract cell value of 1st row from 2nd row cell value of different columns
好的,所以我試圖從上周開始解決這個問題,但是還沒有找到解決方案,所以我問了很多遍問題,但是無法使代碼正常工作,所以我將所有詳細信息都放在了這個問題中。
我正在用PHP和Mysql查詢生成HTML表(該表看起來像此表 )
DB ID EmpID Date Username Computername State Minutesatstate Statestarttime Stateendtime Timestamp
704634 303836 02-06-2019 user PC-818 Idle 2 13:44 13:46 2019-02-06 13:46:46
704599 303836 02-06-2019 user PC-818 Active 16 13:28 13:44 2019-02-06 13:44:46
704340 303836 02-06-2019 user NIPL-1220 Active 2 13:27 13:28 2019-02-06 13:28:48
704313 303836 02-06-2019 user PC-818 Active 13 13:15 13:27 2019-02-06 13:27:31
我想補充的PHP或jQuery的或JavaScript的另一列減去Statestarttime
第1行與列Stateendtime
第二行的列找出時間差。
我只希望最小差異列顯示在頁面上。
預期結果的例子
StateStarTtime StateEndTime Min Difference
03:57 03:58 00:03
03:53 03:54 00:04
03:46 03:49 null
我能夠找到很多示例和幫助,以便從第一行的StateEndTime中減去StateStarTtime,但我想從StateEndTime的第二行單元值中減去StateStarTtime的第一行單元值來找到分鍾差。
我是HTML和PHP的初學者,但是對JS / JQ來說是個新手,因此,我對如何做到這一點的任何方向都非常感激。 以下是我正在使用的PHP和HTML代碼段。 讓我知道您是否需要完整的代碼。
從MySQL獲取數據
<?php
if(isset($_POST['search']))
{
$valueToSearch = $_POST['valueToSearch'];
$query = "SELECT * FROM time WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= Timestamp AND EmpID='".$valueToSearch."' ORDER BY `time`.`Timestamp` DESC";
$search_result = filterTable($query);
}
else {
$query = "SELECT * FROM time WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY) <= Timestamp ORDER BY `time`.`Timestamp` DESC";
$search_result = filterTable($query);
}
function filterTable($query)
{
$connect = mysqli_connect("localhost", "root", "", "timetracker");
$filter_Result = mysqli_query($connect, $query);
return $filter_Result;
}
?>
表PHP代碼
<?php while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['EmpID'];?></td>
<td align="Center"><?php echo $row['Date'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['Computername'];?></td>
<td align="Center"><?php echo $row['State'];?></td>
<td align="Center"><?php echo $row['MinutesatState'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<td align="Center"><?php echo $row['Timestamp'];?></td>
</tr>
<?php endwhile;?>
嘗試過的解決方案-1
<?php while($row = mysqli_fetch_array($search_result)):?>
<?php $startTime[] = $row['StateStarttime'];?>
<?php $endTime[] = $row['StateEndtime'];?>
<?php endwhile;?>
<?php
$i = 0;
while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['EmpID'];?></td>
<td align="Center"><?php echo $row['Date'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['Computername'];?></td>
<td align="Center"><?php echo $row['State'];?></td>
<td align="Center"><?php echo $row['MinutesatState'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<td align="Center"><?php echo $row['Timestamp'];?></td>
//your calculation goes here like diff
<td align="Center">
<?php
$mycalc = ($startTime[$i] - $endTime[$i+1]);
echo $mycalc;
?>
</td>
</tr>
$i++;
<?php endwhile;?>
嘗試過的解決方案-2
<?php for($i = 0; $i < count($results); $i++): ?>
<?php
$datetime1 = DateTime::createFromFormat('i:s', $results[$i]['StateStarttime']);
$datetime2 = DateTime::createFromFormat('i:s', $results[$i+1]['StateEndtime']);
if($datetime2)
$interval = $datetime1->diff($datetime2)->format('%I:%S');
else
$interval = 'unknown';
?>
<tr>
<td align="Center"><?php echo $results[$i]['id'];?></td>
<td align="Center"><?php echo $results[$i]['EmpID'];?></td>
<td align="Center"><?php echo $results[$i]['Date'];?></td>
<td align="Center"><?php echo $results[$i]['Username'];?></td>
<td align="Center"><?php echo $results[$i]['Computername'];?></td>
<td align="Center"><?php echo $results[$i]['State'];?></td>
<td align="Center"><?php echo $results[$i]['MinutesatState'];?></td>
<td align="Center"><?php echo $results[$i]['StateStarttime']; ?></td>
<td align="Center"><?php echo $results[$i]['StateEndtime']; ?></td>
<td align="Center"><?php echo $results[$i]['Timestamp'];?></td>
<td align="Center"><?php echo $interval; ?></td>
</tr>
<?php endfor; ?>
在有人建議我之前
<td align="Center"><?php echo($row['StateEndtime'] - $row['StateStarTtime ']) ?></td>
這將給我同一行中的StateStarTtime
和StateEndtime
的分鍾差,我想從StateStarTtime
的第二行單元值中減去StateStarTtime
的第一行單元值, StateEndTime
,以找到分鍾差。
嘗試一些類似的方法。 只有一個准則,真正的實現取決於您。 另外,我建議您使用{}
而不是endwhile
。
<?php
$last_row = $mysqli_fetch_array($search_result));
while($row = mysqli_fetch_array($search_result)){
//this is pseudocode, you will need to convert to date objects
$timediff = $last_row['StateStarttime'] - $row['StateEndtime'];
?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['EmpID'];?></td>
<td align="Center"><?php echo $row['Date'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['Computername'];?></td>
<td align="Center"><?php echo $row['State'];?></td>
<td align="Center"><?php echo $row['MinutesatState'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<td align="Center"><?php echo $row['Timestamp'];?></td>
// echo $timediff
</tr>
<?php
$last_row = $row;
}?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.