2015-07-02 12 views
8

Tak więc staram się zbudować wykres pączka google, w którym liczba kordinatów jest zmienna. Oto instrukcja problemu, muszę zrobić wykres pokazujący, ile kontaktów na administratora zostało dodanych do bazy danych.Wykres pączków Google dla nieznanej liczby zmiennych

przykład dane: - Administrator 1: - [email protected] ilość styków: - 4

Administrator 2: - [email protected] ilość styków : - 5

Liczba administratorów może zostać zwiększona, a także liczba kontaktów z nimi związanych, dlatego liczba współinicjatorów nie jest znana. Zrobiłem ten kod, aby działało, ale nie działa zgodnie z moimi oczekiwaniami. Właściwie to w ogóle nie działa. Jaki byłby najlepszy sposób na wykonanie mojego zadania?

HTML/PHP część (działa poprawnie)

<?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

Jaki jest wynik Twojego kodu? Umieść ostatni plik html/css/js w jsfiddle.net, abyśmy mogli go przejrzeć i zobaczyć, co tam jest nie tak. Wygląda na to, że problem leży w funkcji drawChart. To nie jest kod js tam ... Nie możesz umieścić pętli for wewnątrz tablicy. – Dekel

Odpowiedz

1

Jak to pytanie OTRZYMA 5 upvotes w 3 godziny ..... Wszystko to ma to kod large snippets i barelly wszelkie przydatne informacje.

Zacznę od zapisania mojego wejścia php bezpośrednio do dwóch globalnych zmiennych javascript (zamiast tworzenia ukrytych elementów HTML). Po ukończeniu że będę zastąpić

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

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

z

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

To by dodać dwie kolumny, faza i kontaktów na fazę, a następnie wypełnić go z jednym rzędem za Admin.

Przeczytaj więcej o przekazywaniu zmiennych php do zmiennych JavaScript here, bardzo dobra lektura, jeśli jesteś zainteresowany.