【问题标题】:Converting PHP MySQL date to Javascript timestamp for FLOT time series data将 PHP MySQL 日期转换为 FLOT 时间序列数据的 Javascript 时间戳
【发布时间】:2016-01-12 10:26:23
【问题描述】:

我目前正在创建一个 Flot JavaScript 时间序列线图。该图表分析了创建帐户的用户数量与创建帐户的时间。

这是用户表的屏幕截图

到目前为止,我已经能够检索用于图表的用户表 x asis 中的 created_date 列。然后在单独的查询中使用 COUNT() 函数计算 y 轴。我的代码如下所示。

PHP:

<?php

include "connection/connect2.php"; 
$datecreated = "SELECT created_date FROM users";
$rundatecreated = mysql_query($datecreated);
$foundnum = mysql_num_rows($rundatecreated);
while ($runrows = mysql_fetch_assoc($rundatecreated)) {
$dataset1[] = $runrows['created_date'];
}

if (is_array($dataset1)){
foreach($dataset1 as $x) {

  $query = mysql_query("SELECT created_date, count(created_date) as date FROM users WHERE created_date='$x' "); 
  while ($runquery = mysql_fetch_assoc($query)){
       $y[]= $runquery['created_date'] .",".$runquery['date']."<br>" ;
      } 
}

$graph=implode(" ", $y);
echo $graph;

} else {

echo "error";
}

?>

然后我将使用这两个查询检索到的数据存储到一个数组中,如下所示。

我不确定如何将当前使用我的 PHP 代码检索到的日期数据转换为 JavaScript 时间戳格式。有什么办法可以使用 PHP 代码来做到这一点?

【问题讨论】:

  • JavaScript timestamp format 到底是什么意思?你有一个你希望它如何阅读的例子吗?
  • @jun Jie 你想要输出日期的时间戳吗?你也得到重复的记录,有必要吗?
  • @Darren Sweeney 格式应该类似于 [-373597200000, 315.71]。 这是官方网站的link 以获取 FLOT 图表。希望对您有所帮助!
  • @Noman 嗨,Noman,我不确定您所说的“输出日期的时间戳”是什么意思。但是,我不需要重复记录,并且不确定如何删除它们。你能在这件事上帮助我吗?谢谢!

标签: javascript php mysql flot


【解决方案1】:

1) 您只需要一个 SQL 查询即可实现此目的,而不是每个日期一加 1。为此在查询中使用分组。

2) 要从您的 dat 值中获取时间戳,请使用 getTimestamp() 方法并乘以 100 以将 UNIX 时间戳转换为 JavaScript 时间戳。

3) Flot 需要数据系列的数据作为数组数组(数据点)。然后可以将其编码为 JSON 并在 JavaScript 中打印或通过 AJAX 获取。

更新的代码(未经测试,但应该是一个很好的起点):

<?php

include "connection/connect2.php";
$query = mysql_query("SELECT created_date, count(*) as date FROM users GROUP BY created_date "); 
$foundnum = mysql_num_rows(mysql_query($query));
while ($runquery = mysql_fetch_assoc($query)){
    $graph[] = array((new DateTime($runquery['created_date']))->getTimestamp() * 1000 , $runquery['date']);
} 

if ($foundnum > 0) {
   echo json_encode($graph);
} else {
    echo "error";
}

?>

【讨论】:

  • 您好,我尝试了您的代码,但收到一条错误消息。我收到致命错误:在第 9 行的 C:\xampp\htdocs\CMS\php\flotdata.php 中的非对象上调用成员函数 getTimestamp()。你能帮我解决这个问题吗?谢谢!
猜你喜欢
  • 2013-09-27
  • 2011-06-20
  • 2023-03-24
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
相关资源
最近更新 更多