我需要在javascript代码中从mysql获取并重复我的数据。
Javascript代码:
var chart = c3.generate({
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250, 50, 100, 250]
]
},
axis: {
x: {
type: 'category',
categories: ['cat1', 'cat2', 'cat3', 'cat4', 'cat5', 'cat6', 'cat7', 'cat8', 'cat9']
}
}});
我需要改变' cat1' ,' cat2' ,' cat3' ...来自mysql的数据。我使用此代码来获取并重复信息:
<?php do { ?>
<?php echo $row_cat['category_name']; ?>
<?php } while ($row_cat = mysql_fetch_assoc($cat)); ?>
这对我来说很好,但是我无法在javascript代码中使用它。你知道我怎么能做这个工作吗?
感谢。
答案 0 :(得分:1)
我个人只是在PHP中构建您的数据结构,然后通过json_encode
以javascript作为变量输出。如下所示:
$cat_names = array();
while ($row_cat = mysql_fetch_assoc($cat)) {
$cat_names[] = $row_cat['category_name'];
}
然后在javascript:
var categories = <?php echo json_encode($cat_names); )?>;
var chart = c3.generate({
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250, 50, 100, 250]
]
},
axis: {
x: {
type: 'category',
categories: categories
}
}
});
与在数据库读取循环的每次迭代中尝试回显HTML / javascript源相比,这更清晰,更容易阅读。
请注意更改远离do ...虽然我不知道为什么你会在这里使用该结构从数据库中读取数据。您也不应该使用mysql_*
函数,但这是另一个故事......
答案 1 :(得分:0)
我会做这样的事情,但是添加jQuery ... javascript代码将在javascript文件中不像这样内联。当然是Doctrine / PDO而不是mysql_命令...
<?php
$cats = [];
while ($row_cat = mysql_fetch_assoc($cat)) {
$cats[] = $row_cat['category_name'];
}
$charData = [
"data" => [
"columns" => [
["data1", 30, 200, 100, 400, 150, 250, 50, 100, 250]
]
],
"axis" => [
"x" => [
"type" => "category",
"categories" => $cats,
]
]
];
?>
<script type="application/json" class="chardata"><?=json_encode($charData)?></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript>
jQuery(function($) {
$("script.chardata").each(function(i) {
window.chart = window.chart || [];
window.chart[i] = c3.generate($.parseJSON($(this).html()));
});
});
</script>
答案 2 :(得分:-1)
你可以这样做:
<?php $cats=array(); do { ?>
<?php $cats[] = '"'.$row_cat['category_name'].'"'; ?>
<?php } while ($row_cat = mysql_fetch_assoc($cat)); ?>
var chart = c3.generate({
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250, 50, 100, 250]
]
},
axis: {
x: {
type: 'category',
categories: [<?=implode(",", $cats)?>]
}
}});