2012-10-10 30 views
0

我对JavaScript并不是非常熟悉,但对于我正在开发的项目,我需要使用来自db的一些输入来绘制图形。你能帮我把php的值传递给javascript。我只想使用数据库中的数据绘制饼图。从PHP到JavaScript变量传输

<div id="pie" style="width:250px;height:250px;"> 

    <?php 
     $k=0; 
     if (isset($distrib)){ 
      foreach($distrib as $row){ 
       echo $distrib[$k]['lang']; 
       echo $distrib[$k]['NumArt']; 
       $k++; 
      } 
     } 
    ?>​ 

    <script class="code" type="text/javascript"> 
     $(document).ready(function() { 
      var data = []; 
      var plot1 = jQuery.jqplot('pie', [data], { 
       seriesDefaults: { 
        // Make this a pie chart. 
        renderer: jQuery.jqplot.PieRenderer, 
        rendererOptions: { 
         // Put data labels on the pie slices. 
         // By default, labels show the percentage of the slice. 
         showDataLabels: true 
        } 
       }, 
       legend: { 
        show: false, 
        location: 'e' 
       } 
      }); 
     });​ 
    </script> 

编辑

我还在这个问题挣扎。这些js图表正在杀死我。

所以这是一个额外的问题,希望能结束我的痛苦

      if (isset($distrib)){ 
           foreach($distrib as $row){ 
            $p[] = $distrib[$k]['langName']; 
            $s[] = $distrib[$k]['lang']; 
            $q[] = $distrib[$k]['NumArt']; 
            $k++; 
           }} 
          ?><?php $c = array_combine($p, $q); ?> 

         <script class="code" type="text/javascript">$(document).ready(function(){ 


            <?php echo "var s1 = [".implode($c, ",")."];" ?> 
           var plot3 = $.jqplot('pie', [s1], { 

基本上在图表打印出numArt的时刻,但它不打印,我想langname声明。 Lang的名字以其母语字母表来存储语言,这意味着从阿拉伯语到祖鲁语的任何语言。我尝试使用JSON没有成功(我完全缺乏该领域的知识)。我的d /编码混乱了,所以我离开了那条路。

我的目标是呈现一个包含该语言名称和文章数量的图表。

因此,这里是从
$ P

Array中的print_r([0] =>无[1] => CATAL [2] =>的问题[3] =>马尔蒂[4] =>PORTUGUÊS [3] => Kiswahili [6] => isiZulu [7] =>英文)

和$ q 数组([0] => 1 [1] => 1 [2] => 1 [3] = [1] => 1 [6] => 1 [7] => 1)

以及合并的数组([none] => 1 [Catal] => > 1 [français] => 1 [Malti] => 2 [português] => 1 [斯瓦希里语] => 1 [isiZulu] => 1 [Eng中国语] => 1)

最后,我需要s1至沿着这些线的东西

[[ '无',1],[ '法语',1],[ '马尔蒂',1] ]


回答

1
<script type="text/javascript"> 

var data = [ <?php echo implode(",", $array_of_values); ?> ]; 
<script> 

只要确保$array_of_values是包含要在data变量(JS)传递值的数组(PHP)。

UPDATE:

$string_array = array(); 
foreach($array as $key=>$value) 
{ 
    $string_array[] = '[' . $key . ',' . $value . ']'; 
} 

然后崩溃。

+0

多数民众赞成它,非常感谢! – Ando

+0

不客气:) – RRikesh

+0

你能帮我解决这个问题吗?我决定传递另一个变量,我想将它添加到绘图字符串中。所以我有两个数组,我不知道如何加入它们,所以它需要第一个数组的第一个分段,然后是第二个分段的第一个分段,依此类推。$ p [] = $ distrib [$ k] [ 'langname声明'];这会带出Array([0] => none [1] => Malti [2] => English),另一个$ q [] = $ distrib [$ k] ['NumArt']; ([0] => 1 [1] => 2 [2] => 312),我怎样才能组合这两个,使我有['none',1],['Malti',2]等.. – Ando

0

我不是正面的,如果这是你在找什么,但:

假设你有$ VAR1 = 25在PHP。假设你要的是保存在VAR1你的JS文件,你会怎么做:

<?php 
    echo $var1=25; 
    echo "var var1=$var1"; 
?> 

请记住JavaScript是客户端和PHP是服务器端,因此2不相互作用(不包括AJAX等)。在发送响应之前运行PHP,并在浏览器中运行JavaScript。你可能已经知道,但仅仅是怀疑。

0

你还没有提到你想要什么值,或者你想要他们在哪里的JavaScript。

您似乎很熟悉PHP值,所以您只需要执行相同的操作,除了在javascript函数中执行操作。

0
//... 
$(document).ready(function(){ 

    <?php echo "var data = [".implode($distrib, ",")."];" ?> 

    // ... 
}); 

Stringify数组并向javascript声明var声明。