从查询构建数组以进行总时间计算

时间:2016-03-26 02:19:48

标签: php mysql

我有这个代码从数据库中提取数据,运行时以hh:mm格式显示每条记录的时间总数,例如00:35,持续35分钟。

$query="SELECT * FROM data1 ORDER BY id DESC";
$result=mysql_query ($query);
$num=mysql_num_rows ($result);
mysql_close();

$i=0;
while ($i < $num) {
$time_ttl=mysql_result($result,$i,"time_ttl");
echo $time_ttl . "<br>";
++$i;
} 

查询的结果如下所示:

0时35 00:25 00:10

总时间:01:10(1小时10分钟)

根据查询,总数会有所不同,我想根据查询计算总计。

我尝试使用此代码计算时间,但是我不确定如何在“while {}”部分内连接传入数据:

$times = array();

$times[] = "00:35";
$times[] = "00:25";
$times[] = "00:10";

function ttl_time($times) {

foreach ($times as $time) {
    list($hour, $minute) = explode(':', $time);
    $minutes += $hour * 60;
    $minutes += $minute;
}

$hours = floor($minutes / 60);
$minutes -= $hours * 60;

$ttl_time = sprintf('%02d:%02d', $hours, $minutes);

}

代码正确计算总时间,但我正在寻找指导如何基于查询构建数组以提供给ttl_time函数,以便我可以将传入的查询数据连接到函数。

我试过这个:

$result2 = mysql_query("SELECT sum(time_ttl) FROM data1");
while ($rows = mysql_fetch_array($result2)) {
echo $rows['sum(time_ttl)'];
}

但它返回错误的结果

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题......

$i=0; $result_times = array();
while ($i < $num) {
  $result_times[] = mysql_result($result,$i,"time_ttl");
  ++$i;
}

然后,您可以将$result_times传递给ttl_time函数。

至于您的其他尝试解决方案(使用sum),它取决于数据类型。这可能会有所帮助:calculate a sum of type time using sql