我正在努力创造一段时间,例如,当用户点击它开始计数的提交按钮时,现在我的表中有一个时间戳字段,但我如何才能这样做。嗯,这就是我的想法。当用户按下提交时,它会生成一个从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);
答案 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);