到目前为止,我已经使用Google电子表格完成了这项工作,但是在导入范围方面存在一些问题,并希望使其变得更好,更美观。在它看起来像这样之前:Link to Google Spreadsheet
我想用MySQL和PHP来做这一切。我在数据库中完成了各种表格(表格:用户,班级,团队,时间,国家)。
现在我到目前为止,通过网络表格,我完成了MySQL表的更新时间,并在时间表中更新状态,完成时间=更新current_timestamp,我想我也有工作排名系统。现在我被困在"时间","不同。领导"," diff.rev"和"速度"
代码到目前为止:
$results = $mysqli->query("
SELECT klass, nimi, synd, teamnimi, start, TIME('finish') AS finish FROM bc2014 T1
INNER JOIN bc2014aeg T2 on T1.bc2014_id = T2.bc2014_id
WHERE klass = 'DS1 (1 koera toukerattavedu al.14 a.)' ");
和
print '<table class="mytable7">';
echo "<tr><th> Klass DS1 $total_tvp1 </th></tr>";
print '</table>';
print '<table class="mytable7">';
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["sum('finish'-'start'something like that"].'</td>';
print '<td>'.$row["difleader"].'</td>';
print '<td>'.$row["difprev"].'</td>';
print '<td>'.$row["speed"].'</td>';
print '</tr>';
和视觉:
我试图获得时间,差异速度和工作地点。
答案 0 :(得分:0)
基本上我从您的代码中可以看到,您使用了太多的打印命令而不是它们,您可以为所有打印命令使用一个打印,这样可以减少加载时间。 问题是你想在页面中显示时间dif.leader及其余部分吗?
答案 1 :(得分:0)
查看http://php.net/manual/de/function.time.php
用它来计算你需要的任何东西。
对于&#39; difleader&#39;你可能有一个单独的查询来查找和存储领导者的时间。
或者你可以先通过你的结果,在那里进行所有计算,然后进行输出。
修改强>:
首先你已经可以在sql中计算运行时间了:
SELECT klass, nimi, synd, teamnimi, start, TIME('finish') AS finish, TIMEDIFF(finish, start) AS runtime
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 runtime desc
通过按计算的运行时间排序您的结果,您将把领导者作为您的第一条记录。
接下来,您将遍历结果并计算差异,如下所示:
$html="<table>"; // add your table-header here
$firstloop = true;
$km = 4.25; // for speed-calculation
while($row = $results->fetch_array()) {
$timestamp = strtotime($row['synd']);
if($firstloop) {
$leader_runtime = $row["runtime"];
}
$html.='<tr>';
$html.='<td>' .$row["ranking"].'</td>';
$html.='<td>'.removeParanthesis($row["klass"]).'</td>';
$html.='<td>'.$row["nimi"].' '.$row["Perekonnanimi"].'</td>';
$html.='<td>'.$date = date('d-m-Y', $timestamp).'</td>';
$html.='<td>'.$row["teamnimi"].'</td>';
$html.='<td>'.$row["start"].'</td>';
$html.='<td>'.$row["finish"].'</td>';
$html.='<td>'.$row["runtime"].'</td>';
$difleader = mktime( date('H',$runtime)-date('H',$leader_runtime), date('i',$runtime)-date('i',$leader_runtime), date('s',$runtime)-date('s',$leader_runtime),0,0,0);
$html.='<td>'. date('H:i:s', $difleader) .'</td>';
if(isset($prev_runtime)) { // only show difference if we have a prev_runtime set already
$difprev = mktime( date('H',$runtime)-date('H',$prev_runtime), date('i',$runtime)-date('i',$prev_runtime), date('s',$runtime)-date('s',$prev_runtime),0,0,0);
$html.='<td>'. date('H:i:s', $difprev) .'</td>';
}
else {
$html.= '<td></td>';
}
$html.='<td>'.getspeed(timetohours($row["runtime"]),$km).'</td>';
$html.='</tr>';
$prev_runtime = $row["runtime"];
$firstloop = false;
}
$html.="</table>";
echo $html;
用于speedcalculation编写如下函数:
function getspeed($h,$km) {
return number_format( $km/$h , 2 );
}
使用辅助函数来计算时间戳的小时数:
function timetohours($t) {
return date("G",$t)+(date("i",$t)/60)+(date("s",$t)/60/60);
}
由于我不知道你的数据库是什么,我无法测试, 测试时间和速度计算。