在Javascript代码中重复PHP

时间:2014-10-06 22:17:06

标签: javascript php mysql

我需要在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代码中使用它。你知道我怎么能做这个工作吗?

感谢。

3 个答案:

答案 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)?>]
}
}});