计数的整数除以60

时间:2013-07-01 16:34:24

标签: php javascript sql timestamp

我正在努力创造一段时间,例如,当用户点击它开始计数的提交按钮时,现在我的表中有一个时间戳字段,但我如何才能这样做。嗯,这就是我的想法。当用户按下提交时,它会生成一个从0开始的整数,并且每秒计数一次,然后除以60,所以当他们说这个整数的120时,它将被除以60并显示为2,或者,2分钟前,现在,我不知道如何做到这一点,因为我仍然是一个巨大的mysql / php菜鸟,所以如果有人可以解释像我是5,那将是惊人的,谢谢所有

javascript解决方案也不错。

这是我的代码:

while ($row=mysql_fetch_array($result)) {


echo "<tr><td>";
echo $row['cname'];
echo "</td><td>";
echo $row['level'];
echo "</td><td>";
echo $row['region'];
echo "</td><td>";
echo $row['time'];
echo "</td><td>";
echo $row['comment'];
echo "</td></tr>";

}

这是表格的主要显示页面。

这是添加到表格页面:

 include('config.php');
$con = mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_NAME);

mysql_query("INSERT INTO cw_LFG(cname, level, region, time, comment) VALUES ('".$_POST['cname'] ."','".$_POST['level'] ."','".$_POST['region'] ."','".$_POST['time'] ."','".$_POST ['comment']."')");



header ("Location: lfg.php");
mysql_close($con);

2 个答案:

答案 0 :(得分:1)

首先,如果你是5岁,你不应该使用JavaScript。除了笑话,你需要的是当用户点击提交时,你在服务器端存储时间戳,因为你在SQL表中提到的可能,并且在页面加载时你将这些值传递给你的页面(你可以将它发送到PHP生成的HTML内部的一个javascript数组,但我宁愿在页面加载之后使用AJAX分别询问服务器中的所有数据以避免模糊代码)然后只计算这些时间戳与当前时间之间的差异并刷新使用setInterval()每秒(或分钟)使用这些值的单元格。

var exampleArray = [
  ['user1', timestamp],
  ['user1', timestamp]
];
function count(){
  var currentTime = new Date().getTime();

  for(var i in exampleArray){   
      DOM.tableToAppendTo.rowToAppendTo.innerHTML += 
    '<td>' + exampleArray[i][0] + '</td>' + 
    '<td>' + calculateTime(exampleArray[i][1] - currentTime) + '</td>'
  }
}
function calculateTime(difference){
  if(difference < 59000){
    return (difference / 60000) + ' minutes ago';
  }else{
    return (difference / 1000) + ' seconds ago';
  }
}
setInterval(count,1000);

答案 1 :(得分:1)

这是一个可用于创建经过时间字符串的函数:

function timeElapsed($time) {
    $elapsedTime = time() - $time;

    if ($elapsedTime < 1) {
        return 'Right now';
    }

    // Length of time units
    $units = array( 
        12 * 30 * 24 * 60 * 60  => 'year',
        30 * 24 * 60 * 60       => 'month',
        24 * 60 * 60            => 'day',
        60 * 60                 => 'hour',
        60                      => 'minute',
        1                       => 'second'
    );

    $string = '';

    foreach ($units as $secs => $unit) {
        $amount = floor($elapsedTime / $secs);

        if ($amount >= 1) {
            $elapsedTime -= $amount * $secs;
            $string .= "$amount $unit" . ($amount > 1 ? 's' : '') . ' ';
        }
    }

    return $string . 'ago';
}

创建记录时保存当前时间(这里我使用的是UNIX时间戳)。当你想向用户显示它时,你只需将时间戳传递给该函数,它将返回一个字符串,如“5天2分30秒前”

使用示例

echo timeElapsed(1345678910);