Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向上计数并除以60的整数_Php_Javascript_Sql_Timestamp - Fatal编程技术网

Php 向上计数并除以60的整数

Php 向上计数并除以60的整数,php,javascript,sql,timestamp,Php,Javascript,Sql,Timestamp,我试图创建一个较早的时间,例如,当用户点击提交按钮时,它开始计数,现在我的表中有一个timestamp字段,但是我如何使它如此。好吧,这就是我的想法。当用户按下submit键时,它会生成一个从0开始的整数,每秒计数,然后除以60,所以当他们说这个整数的120时,它已经被60除以并显示为2,或者,2分钟前,现在,我不知道如何做,因为我仍然是一个巨大的mysql/php noob,所以如果有人能像我5岁那样解释,那就太棒了,谢谢大家 javascript解决方案也不错 这是我的密码: while (

我试图创建一个较早的时间,例如,当用户点击提交按钮时,它开始计数,现在我的表中有一个timestamp字段,但是我如何使它如此。好吧,这就是我的想法。当用户按下submit键时,它会生成一个从0开始的整数,每秒计数,然后除以60,所以当他们说这个整数的120时,它已经被60除以并显示为2,或者,2分钟前,现在,我不知道如何做,因为我仍然是一个巨大的mysql/php noob,所以如果有人能像我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>";

首先,如果你5岁,你不应该玩JavaScript。除了这个笑话,您需要的是当用户点击submit时,您将时间戳存储在服务器端,因为您可能在n SQL表中提到过,并且在pageload上,您将该值传递到页面(您可以将其作为PHP生成的HTML中的javascript数组发送,但我更愿意在pageload之后使用AJAX单独询问服务器上的所有数据,以避免出现模糊代码),然后计算这些时间戳和当前时间之间的差,并每秒用这些值刷新单元格(或分钟)使用
setInterval()

var示例数组=[
['user1',时间戳],
['user1',时间戳]
];
函数计数(){
var currentTime=new Date().getTime();
对于(示例数组中的变量i){
DOM.tableToAppendTo.rowToAppendTo.innerHTML+=
''+示例数组[i][0]+''
''+计算时间(示例数组[i][1]-当前时间)+''
}
}
函数计算时间(差异){
如果(差值<59000){
返回值(差值/60000)+“分钟前”;
}否则{
返回值(差值/1000)+“秒前”;
}
}
设置间隔(计数,1000);

这里有一个函数,您可以使用它创建经过的时间字符串:

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';
}

你是想让它实时显示时间增量?还是只是想计算人们刷新web浏览器的时间?(假设你在做web应用!)我想你需要重写你的问题,并澄清你真正想要达到的目标。也许是我,但现在它似乎完全不可理解。当它上升时,你需要一个很长时间运行的php脚本,或者每秒刷新一次页面。除非有具体的原因,否则这样做会更容易理解st存储原始时间戳,然后将其与任何页面刷新时的时间戳进行比较。从比较中计算所需的值我希望增量作为时间戳的一部分隐藏,但我希望另一个引用它作为时间准则(如果有意义)。因此,当整数计数达到120时,它将除以60d另一个将使用它得到的并附加“分钟前”到it@Kickstart我对如何做到这一点感到非常困惑,就像我当前的时间戳字段一样,由于一些奇怪的原因,它显示的是00:00:00,而不是提交的实际时间。我想当用户点击提交时,我在实际显示时遇到了麻烦。但我试图实现的主要目标是“几分钟前”键入deal,但我不知道如何执行此操作:cThanks,我现在遇到的问题实际上是在用户按submit时保存当前时间,因为它只是显示0000-00-00:00:00:00作为当前时间,而不是执行$\u POST['time']do date('Y-m-d H:I:s')这将在当前时间设置它为什么不将表时间字段设置为默认时间戳…然后您可以在流程完成后更新它?上面的此函数将用作“读取函数”,仅显示您的时间戳与当前时间+“之前”之间的差好的,这似乎解决了0000的问题,现在它显示了日期,当你说将时间戳传递给函数时,我该怎么做:p对不起我所有的noob问题。是的,我将类型设置为timestamp,默认设置为CURRENT_timestamp,但看起来像是我完成了他们的工作的日期,现在我必须弄清楚如何获得我的时间戳t为了使用@chrislondon提供的函数,也许我只是太傻了:/t用我的代码编辑了我的问题,因为我不知道在哪里添加这些东西。请同时发布围绕行的表格的HTML
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);
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';
}
echo timeElapsed(1345678910);