我有以下代码将输出如下折线图:
<script class="code" type="text/javascript">
$(document).ready(function(){
var line1=[['2008-08-12 ',14], ['2008-09-12 ',6.5], ['2008-10-12 ',5.7], ['2008-11-12 ',9], ['2008-12-12 ',8.2]];
var plot1 = $.jqplot('chart1', [line1], {
title:'Daily Sales',
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer
}
},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
});
</script>
上面代码的输出是正确的,但我想插入一个PHP循环来从mysql中选择数据并将其作为数组放入var line1
所以我创建了一个测试代码如下:
<script class="code" type="text/javascript">
$(document).ready(function(){
<?php
$date = date('Y-m-d');
for($i=1;$i<6;$i++){
$newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ;
$newdate = date ( 'Y-m-j' , $newdate );
?>
var line1=[['<?php echo $newdate; ?> ',<?php echo $i ?>]];
<?php
$date = $newdate;
}
?>
var plot1 = $.jqplot('chart1', [line1], {
title:'Daily Sales',
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer
}
},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
});
</script>
这输出的最后一个值是 2015-5-16 和 5 我想要的是输出从 1 到 5 的所有结果并且每个日期递增2014-12-16 月至 2015-5-16 月。
我希望这是有道理的!谢谢你
最佳答案
你做错了。您不使用 PHP 将文本直接转储到 Javascript 代码块中。这是引入 javascsript 语法错误并终止整个代码块的必经之路。
您构建一个原生 PHP 结构(数组、对象等),然后对其进行 json_encode()。
例如
<?php
$results = get_data_from_db();
$data = array();
while($row = fetch_row_from_result($results)) {
$data[] = array($row['foo'], $row['bar']);
}
?>
<script type="text/javascript">
var data_from_db = <?php echo json_encode($data); ?>;
</script>
关于使用 For 循环的 Javascript 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513315/