0

我正在尝试创建一个以前的时间,例如,当用户点击提交按钮时它开始计数,现在我的表中有一个时间戳字段,但我该如何做到这一点。好吧,这就是我的想法。当用户按下提交时,它会生成一个从 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);
4

2 回答 2

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);
于 2013-07-01T18:00:57.577 回答
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);
于 2013-07-01T18:02:01.417 回答