【问题标题】:How to find values between and count it如何在两者之间找到值并对其进行计数
【发布时间】:2022-07-13 21:55:08
【问题描述】:

我想构建一个面板,管理员可以在其中显示总页面浏览量。当用户更改页面或刷新页面时,我会为每次点击保存时间戳。

我想通过时间戳来查看该日期有多少用户查看。

$Today = time();

$EightDaysSec  = 691200 ;
$SevenDaysSec  = 604800;
$SixDaysSec    = 518400;
$FiveDaysSec   = 432000 ;
$FourDaysSec   = 345600 ;
$ThreeDaysSec  = 259200 ;
$TwoDaysSec    = 172800 ;
$OneDaySec     = 86400 ;

$FoundEightDaysAgo  = $Today - $EightDaysSec;
$FoundSevenDaysAgo  = $Today - $SevenDaysSec;
$FoundSixDaysAgo    = $Today - $SixDaysSec;
$FoundFiveDaysAgo   = $Today - $FiveDaysSec;
$FoundFourDaysAgo   = $Today - $FourDaysSec;
$FoundThreeDaysAgo  = $Today - $ThreeDaysSec;
$FoundTwoDaysAgo    = $Today - $TwoDaysSec;
$FoundOneDaysAgo    = $Today - $OneDaySec;

有了这段代码,我可以在 8 天前把它找回来。

现在的问题是,我有来自数组中的数据库的用户时间戳,我用 foreach() 循环它

当我这样做时


$Query          = $db->prepare('SELECT * FROM new_user_last ');
$Query->execute();
$QueryNumber    = $Query->rowCount();
$QueryRecords   = $Query->fetchAll();

foreach ($QueryRecords as $Records ) {
  
  $UserDate = $Records['Date'];

  if($UserDate >= $FoundSevenDaysAgo and $UserDate <= $FoundSixDaysAgo){
 

  //Yes it does run true but then? How do I display those values?

  }

}

我想找到两者之间的值并将其记录下来,以便我可以计算并将其显示为视图。

我乐于接受任何可以发挥作用的新想法。

如果有人想知道,我正在使用 canvaJS 模板进行图形视图。 => https://canvasjs.com/php-charts/spline-chart/

【问题讨论】:

    标签: php


    【解决方案1】:

    考虑到您的字段名是Date,您可以使用数据库进行计算和过滤。

    此查询将创建一个以天为单位的值diff,WHERE 子句将查找最多 7 天的所有条目。结果按diff排序。

    $Query = $db->prepare(SELECT *, TIMESTAMPDIFF(DAY, `Date`, CURDATE()) AS diff FROM new_user_last WHERE `Date` >= CURDATE() - INTERVAL 7 DAY ORDER BY Date);
    

    您可以像访问所有其他字段一样访问差异。

    foreach ($QueryRecords as $Records) {
        echo "This record is {$Records['diff']} days old.\n";
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多