将日期和数字添加到同一个数组中

时间:2014-01-04 01:36:43

标签: php mysql flot

我从数据库中提取数据,其中包括带小数位数和日期的数字。

我正在使用以下代码:

<?php
// Main query to pull data from 'tests' table
    $sql = "SELECT * FROM `tests` WHERE member_id = '1'";
    $result = mysql_query($sql) or die ("no query");

//  Dataset1
    while($row = mysql_fetch_assoc($result))
    {
        $dataset1[] = array (intval($row['date']),intval($row['test1']));
    }
?>

这应该在i echo时输出数据,例如:

日期:2011-09-15 test1:1.024

但它实际上只输出以下内容:

日期:2011年 test1:1

然后我使用这些数据使用FLOT绘制图表。

<script type="text/javascript">
    //Chart1
    var chart1Options = {
      series: {
        lines: { show: true },
        color: "#fff",
        points: { show: true }
      },
           valueLabels: {
                show: true
            },
    grid: {
          backgroundColor: { colors: ["#4ca8fa", "#2887da"] },
          hoverable: true //IMPORTANT! this is needed for tooltip to work
    }
    };
    var dataset1 = { label: "Salinity", data: <?php echo json_encode($dataset1); ?>,};

    $.plot($("#chart1"), [ dataset1 ], chart1Options);
</script>

每当我更改“intval”时,图表都不会显示任何数据.....

任何人都有任何经验或想法可以帮助我吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

目前正如先前评论中所述&amp;答案,您的脚本目前使用intval(),转换给定的并尝试将其解析为最近的整数,这将有效地删除小数位

PHP intval() docs的示例:

echo intval(42);   // 42
echo intval(4.2);  // 4

PHP中有许多不同的方法可以获取小数位值,但下面我将演示PHP的sprintf()

  //Input Value: 1.024                      
  sprintf( "%.2f", $row['test1'] ); //outputs 1.02

其次,您将遇到将要传递到$.plot()函数的日期字符串的问题。您必须根据$.plot进行调整才能了解您的时间价值:

while($row = mysql_fetch_assoc( $result ))  {
    $dataset1[] = array(
                    strtotime( $row['date'] ) * 1000,
                    sprintf( "%.2f", $row['test1'] )
                );
}

在声明jquery.flot.time.js后,您还需要添加jquery.flot.js脚本,在下图中我添加xaxis以获得时间'格式'来破译时间戳。

  xaxis: { mode: "time",  timeformat: "%y/%m/%d" }

为您提供结果:

enter image description here $.plot()参考:$.plot data-format datetime

答案 1 :(得分:0)

从代码中删除intval(),除非您希望将变量强制为整数。整数是整数,如1,2,3,4。

如果你发送'1985-12-13'到intval,你会得到1985年,因为它会切断其余部分。

如果您将1.2345发送到intval,那么您将获得1,再次切断其余部分。

也许您正在复制使用intval的代码,但是您的代码不需要。它没有做任何事情,只是弄乱你的结果。摆脱它们。