2014-01-07 128 views
0

我有一個PHP foreach循環,我想用它來創建5個圖表,基於我提供給腳本的數據。我無法弄清楚的問題是,目前我的圖表只能在最後一個循環中看到,並且在第一,第二,第三個循環中不可見。php foreach with javascript script

我試圖做一些像var chart<?=$row['id'];?>=...無濟於事。如何讓我的圖表在foreach循環中顯示正確的數據?

<? foreach($articles as $row):?> 
<div id='chart-<?=$row['id'];?>' style='width: 1110px; height: 250px;'></div> 
    <script> 
     var chart1 = new Charts.LineChart('chart-<?=$row['id'];?>', { 
      dot_color: "#855541", 
      area_color: "#855541", 
      line_color: "#855541", 
      line_width: 1, 
      show_grid: false, 
      label_max: false, 
      label_min: false 
     }); 
     chart1.add_line({ 
      data: [<?=$row['chart'];?>] 
     }); 
     chart1.draw(); 
    </script> 
    <?endforeach;?> 
+0

我們需要看到循環。 – Goikiu

+1

這個'foreach'循環在哪裏?請編輯您的問題,以顯示您目前如何執行此操作。 – Bart

+1

我認爲所有'<?='應該用'<?php echo'替換? –

回答

0

針對穆罕默德的評論,嘗試每次更改JavaScript變量名。

<? foreach($articles as $row):?> 
<div id='chart-<?=$row['id'];?>' style='width: 1110px; height: 250px;'></div> 
    <script> 
     var chart<?=$row['id'];?> = new Charts.LineChart('chart-<?=$row['id'];?>', { 
      dot_color: "#855541", 
      area_color: "#855541", 
      line_color: "#855541", 
      line_width: 1, 
      show_grid: false, 
      label_max: false, 
      label_min: false 
     }); 
     chart<?=$row['id'];?>.add_line({ 
      data: [<?=$row['chart'];?>] 
     }); 
     chart<?=$row['id'];?>.draw(); 
    </script> 
    <?endforeach;?> 
+0

感謝Stanyer和穆罕默德的提示! – Ando

0

嘗試

<? $i = 1; foreach($articles as $row):?> 
<div id='chart-<?=$row['id'];?>' style='width: 1110px; height: 250px;'></div> 
    <script> 
     var chart<?=$i; ?> = new Charts.LineChart('chart-<?=$row['id'];?>', { 
      dot_color: "#855541", 
      area_color: "#855541", 
      line_color: "#855541", 
      line_width: 1, 
      show_grid: false, 
      label_max: false, 
      label_min: false 
     }); 
     chart<?=$i; ?>.add_line({ 
      data: [<?=$row['chart'];?>] 
     }); 
     chart<?=$i; ?>.draw(); 

    </script> 
    <? $i++; endforeach;?> 
+0

已經有一個唯一的ID,可以使用額外的計數器保存。 – Ryan

+0

是它的真實... –

1

chart1每次php循環迭代都會被覆蓋。

即使你把它放到diff div中,所有的js vars都會佔用相同的空間,因爲你把它聲明爲全局的。

其中一種方法是通過分配不同的var名稱或者將所有的變量添加到數組中,然後遍歷它並執行所有變量來爲每次迭代定義不同的變量。

正如在其他的答案,改變

var chart1 = ... 

喜歡的東西:

var chart_<?=$row['id']?> = 

這將是如chart_1,chart_2,chart_3 ...等。