Php 在结果表中查找前导和上一个之间的差异
编辑:添加了表格示例 在你们的帮助下,我来到了这个地方,我在表格名称、团队、开始时间、完成时间甚至两者之间的时间中都有信息。谢谢@Ian Kenney; 现在,我如何计算并在页面上显示引线之间的差异和上一页之间的差异 当前工作查询为:Php 在结果表中查找前导和上一个之间的差异,php,mysql,Php,Mysql,编辑:添加了表格示例 在你们的帮助下,我来到了这个地方,我在表格名称、团队、开始时间、完成时间甚至两者之间的时间中都有信息。谢谢@Ian Kenney; 现在,我如何计算并在页面上显示引线之间的差异和上一页之间的差异 当前工作查询为: query(" SELECT klass, nimi, synd, teamnimi, start, TIME(`finish`) AS finish, timediff(time(finis
query("
SELECT
klass, nimi, synd, teamnimi, start,
TIME(`finish`) AS finish,
timediff(time(finish), time(start)) AS aeg
FROM bc2014 T1
INNER JOIN bc2014aeg T2 on T1.bc2014_id = T2.bc2014_id
WHERE klass = 'DS1 (1 koera toukerattavedu al.14 a.)'
ORDER BY aeg");
输出是这样的:
表如下所示:
echo "<tr><th>koht </th><th>klass </th><th>Liikme nimi </th><th>Synniaeg</th><th>Tiim</th><th>Start</th><th>Finish</th><th>Time</th><th>Dif.Leader</th><th>Dif.Previous</th><th>km/h</th></tr>";
while($row = $results->fetch_array()) {
$timestamp = strtotime($row['synd']);
print '<tr>';
print '<td>' .$row["ranking"].'</td>';
print '<td>'.removeParanthesis($row["klass"]).'</td>';
print '<td>'.$row["nimi"].' '.$row["Perekonnanimi"].'</td>';
print '<td>'.$date = date('d-m-Y', $timestamp).'</td>';
print '<td>'.$row["teamnimi"].'</td>';
print '<td>'.$row["start"].'</td>';
print '<td>'.$row["finish"].'</td>';
print '<td>'.$row["aeg"].'</td>';
print '<td>'.$row["difleader"].'</td>';
print '<td>'.$row["difprev"].'</td>';
print '<td>'.$row["speed"].'</td>';
print '</tr>';
}
有关更多格式:
下面的代码应该满足您的要求
$timestamp = strtotime($row['synd']);
print '<tr>';
print '<td>' .$row["ranking"].'</td>';
print '<td>'.removeParanthesis($row["klass"]).'</td>';
print '<td>'.$row["nimi"].' '.$row["Perekonnanimi"].'</td>';
print '<td>'.$date = date('d-m-Y', $timestamp).'</td>';
print '<td>'.$row["teamnimi"].'</td>';
print '<td>'.$row["start"].'</td>';
print '<td>'.$row["finish"].'</td>';
print '<td>'.$row["aeg"].'</td>';
print '<td>'.$row["difleader"].'</td>';
print '<td>'.$row["difprev"].'</td>';
$date2 = date_create($row["difprev"]);
$date1 = date_create($row["difleader"]);
date_diff($date2, $date1)->format('%h %i %s' );
print '<td>'.$row["speed"].'</td>';
print '</tr>';
您可以通过记住leader时间以及在循环中运行时的上一次时间来计算leader的差异 让我们将经过的时间添加到查询中
SELECT
klass, nimi, synd, teamnimi, start,
TIME(`finish`) AS finish,
timediff(time(finish), time(start)) AS aeg,
finish - start as elapsed_time
FROM bc2014 T1
INNER JOIN bc2014aeg T2 on T1.bc2014_id = T2.bc2014_id
WHERE klass = 'DS1 (1 koera toukerattavedu al.14 a.)'
ORDER BY aeg
然后在结果集中使用它来计算时间差
while($row = $results->fetch_array()) {
//.....
if(isset($leader_time)){
print '<td>'. $row["elapsed_time"] - $leader_time .'s</td>';
print '<td>'. $row["elapsed_time"] - $last_time .'s</td>';
} else {
print '<td> </td>';
print '<td> </td>';
}
// ...
if(!isset($leader_time)){ $leader_time = $row["elapsed_time"] ;}
$last_time = $row["elapsed_time"] ;
}
然后,您可以使用$leader_time和$last_time来计算两个差异列尝试date_diff function@Sundar Bons一些示例更受欢迎;我对这个很生疏;显示循环通过每一行的代码也请RRY@Ian Kenny将循环作为addedI编辑的问题并添加我的表格示例,你能用我的数据显示示例吗;?在过去的一年里,我更新了我的答案。让我知道它是否有效这个例子似乎不起作用。。我在MySQL中没有difprev和difleder的值,必须从表中找到1000个值。。或者在你的情况下,我不明白它是如何显示值的@伊恩·肯尼:我在这里尝试过各种各样的选择,但我还很幼稚,而且结果不在表格中。你能用我的数据举例说明我如何使用你的解释吗?看来我必须停顿一下,当然我不是那么愚蠢,但我找不到正确的方法来使用这个;附言您最后的选择使此输出经过的时间相当长;-在表中,第一个开始是时间。。finish是Timestamp hi@Ian Kenney,你能给我举一个精确的例子,用我的数据显示dif和leader以及dif和prev的位置吗
while($row = $results->fetch_array()) {
//.....
if(isset($leader_time)){
print '<td>'. $row["elapsed_time"] - $leader_time .'s</td>';
print '<td>'. $row["elapsed_time"] - $last_time .'s</td>';
} else {
print '<td> </td>';
print '<td> </td>';
}
// ...
if(!isset($leader_time)){ $leader_time = $row["elapsed_time"] ;}
$last_time = $row["elapsed_time"] ;
}