2014-10-06 114 views
0

我需要从JavaScript中获取并重复我的数据。在Javascript代码中重复PHP

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

为何不看看你的数据到适当的数组,然后使用'回声json_encode($阵列)'输出转换为JavaScript? – 2014-10-06 22:22:28

回答

1

我个人只是建立在JavaScript中的PHP你的数据结构,然后输出为通过json_encode变量。因此,像:

$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_*的功能,但这是另一回事...

+0

非常感谢! – Marcos 2014-10-06 23:17:21

-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)?>] 
} 
}}); 
+2

你应该真的使用json_encode来写json。弄错它很容易。 – OIS 2014-10-06 22:25:44

+0

OIS,我实际上在$ c​​ats [] =“'”。$ row_cat ['category_name']。“'”中添加了单引号。所以你的编辑不起作用。我完全知道json_encode会更好 - 这不是他要求的。他还可以构建Web服务并通过ajax请求获取数据。我只是给了一个简单的方法来结合他自己的两个代码片段来处理它。 – cjs1978 2014-10-06 22:38:46

+0

啊,没有看到那个抱歉。 (顺便说一句,在json中使用“在字符串周围) – OIS 2014-10-06 22:41:24

0

我会做这样的事情,但它增加了jQuery ... JavaScript代码将在一个JavaScript文件不内联像这样。当然学说/ 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>