我从数据库中提取数据,其中包括带小数位数和日期的数字。
我正在使用以下代码:
<?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”时,图表都不会显示任何数据.....
任何人都有任何经验或想法可以帮助我吗?
谢谢。答案 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" }
为您提供结果:
$.plot()
参考:$.plot data-format datetime
答案 1 :(得分:0)
从代码中删除intval(),除非您希望将变量强制为整数。整数是整数,如1,2,3,4。
如果你发送'1985-12-13'到intval,你会得到1985年,因为它会切断其余部分。
如果您将1.2345发送到intval,那么您将获得1,再次切断其余部分。
也许您正在复制使用intval的代码,但是您的代码不需要。它没有做任何事情,只是弄乱你的结果。摆脱它们。