2014-10-06 62 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>