2015-07-02 35 views
8

因此,我正在嘗試構建一個谷歌甜甜圈圖表,其中的座標數量是可變的。 下面是問題陳述,我必須製作一個圖表,顯示每個管理員向數據庫中添加了多少聯繫人。未知數量變量的谷歌甜甜圈圖表

實施例的數據: - 管理員1: - [email protected] 觸點數目: - 4

管理員2: - [email protected] 觸點數目 : - 5

可以增加管理員的數量,以及與他們有關的聯繫人數量,因此不知道座標的數量。 我已經使這個代碼,使其工作,但它不符合我的期望。其實它根本不起作用。 什麼是完成我的任務的最佳方式?

HTML/PHP的一部分(正常工作)

<?php 
       //get data here 
       try 
       { 
        $s = $conn->query("SELECT * from users"); 
       } 
       catch(PDOException $e) 
       { 
        echo $e->getMessage(); 
       } 
       $i=-1; 
       while($admins = $s->fetch(PDO::FETCH_OBJ)) 
       { 
        $i++; 
        $number = $user->get_numberofcontacts_per_admin($admins->email); 
        echo "<input type='hidden' name='a$i' id='a$i' value=$admins->email>"; 
        echo "<input type='hidden' name='c$i' id='c$i' value=$number>"; 
       } 

       ?> 
       <input type='hidden' name='ta' id='ta' value='<?php echo $i; ?>' > <!-- total admins --> 

的Javascript

<script type="text/javascript"> 

    //get ta 
    var ta = parseInt(document.getElementById('ta').value); 
    var admins = new Array(); 
    for(i=0;i<=ta;i++) 
    { 
     admins[i] = document.getElementById('a' + i).value; 
     contacts[i] = parseInt(document.getElementById('c' + i).value); 
    } 
    //alert(p4); 
     google.load("visualization", "1", {packages:["corechart"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
     var data = google.visualization.arrayToDataTable([ 
      ['Phase', 'Contacts per phase'], 

     for(i=0;i<=ta;i++) 
     { 
      ['admins[i]',  contacts[i]], 
     } 
     ]); 

     var options = { 
      title: 'Contacts per phase', 
      pieHole: 0.4, 
      is3D: true, 
     }; 

     var chart = new google.visualization.PieChart(document.getElementById('donutchart7')); 
     chart.draw(data, options); 
     } 
    </script> 
+0

你的代碼的輸出是什麼?把最後的html/css/js放到jsfiddle.net中,這樣我們可以查看它,看看有什麼錯誤。看起來問題在drawChart函數內。這不是js代碼...你不能在數組中放置一個for循環。 – Dekel

回答

1

如何這個問題收到5個upvotes在3個小時.....它有的只是large代碼snippets和barelly任何有用的信息。

我會開始將我的php輸入直接保存到兩個全局javascript變量中(而不是創建隱藏的HTML元素)。 完成,我會用

var data = google.visualization.DataTable(); 
    data.addColumn('string','Phase'); 
    data.addColumn('string','Contacts per Phase'); 

    for(i=0;i<admins.length;i++){ 
     data.addRow([admins[i], contacts[i]]); 
    }; 

這將增加兩列,相位和每相聯繫,然後每個管理員一行來填充它取代

var data = google.visualization.arrayToDataTable([ 
     ['Phase', 'Contacts per phase'], 

    for(i=0;i<=ta;i++) 
    { 
     ['admins[i]',  contacts[i]], 
    } 
    ]); 

後。

閱讀更多關於將PHP變量傳遞給Javascript變量的信息here,如果您有興趣,可以閱讀非常好的閱讀材料。