2017-09-05 27 views
0

Greetings stackoverflow! 我目前把一些手放在图表上,特别是谷歌图表和使用php和phpmyadmin,我试图从普通查询和结果集中的数据库(课程名称+一个饼图的数字)拉结果,但是我只在循环时才得到一行,我会在下面发布我的代码,以便在可能的情况下获得一些提示。 (固定它,首先检查ANSWER)使用php和mysql的GoogleCharts

<?php 
    include('../session.php'); 
include("../config.php"); 
    ?> 

<?php 




$sqlMostTakenCourse="SELECT course_title, count(*) 
FROM wp_wpcw_user_courses, wp_wpcw_courses 
WHERE wp_wpcw_user_courses.course_id = wp_wpcw_courses.course_id 
AND wp_wpcw_user_courses.course_progress >0 
AND wp_wpcw_user_courses.user_id 
IN (

SELECT wp_users.ID 
FROM wp_users, wp_usermeta, jdashboard 
WHERE wp_usermeta.meta_key = 'CouponCode' 
AND jdashboard.username = 'jad' 
AND wp_usermeta.meta_value = jdashboard.coupon 
AND wp_usermeta.user_id = wp_users.ID 
) 
GROUP BY course_title 
ORDER BY count(*) DESC "; 



mysqli_set_charset($db,"utf8"); 

$resultMostTakenCourse = mysqli_query($db, $sqlMostTakenCourse); 



    if(mysqli_num_rows($resultMostTakenCourse) > 0){ 

     while($row = mysqli_fetch_array($resultMostTakenCourse)){ 



    ?> 


<html> 
    <head> 
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
    <script type="text/javascript"> 
     google.charts.load('current', {'packages':['corechart']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 

     var data = google.visualization.arrayToDataTable([ 
      ['Task', 'Hours per Day' ], 

      [ ' <?php echo $row[0]; ?>', <?php echo $row[1];  ?>  ], 

      ['Sleep', 7] 
     ]); 
<?php }} ?> 
     var options = { 
      title: 'My Daily Activities' 

     }; 

     var chart = new google.visualization.PieChart(document.getElementById('piechart')); 

     chart.draw(data, options); 
     } 
    </script> 
    </head> 
    <body> 
    <div id="piechart" style="width: 900px; height: 500px;"></div> 
    </body> 
</html> 

[ ' <?php echo $row[0]; ?>', <?php echo $row[1]; ?> ],从数据库中提取唯一1行,我将回顾我的代码,看看有什么遗漏,并希望得到一些帮助和提示。 编辑:我意识到循环没有根据行创建['名称',数字],将尝试解决该问题

+0

你应该意识到,这是没有意义的输出完整的HTML文档中的循环...'html','head','都必须出现body'内只有一次,而不是多个倍。 – CBroe

+0

谢谢你,我已经把他们从循环中拿出来了,但是你有任何其他的想法或小费来解决这个问题吗? – Lalati

+0

那么你也_overwriting_你的JS函数'drawChart'在每个循环迭代... – CBroe

回答

0

我修复了使用data.addRow()函数和初始化变量之前循环,修改代码如下:

<html> 
    <head> 
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
    <script type="text/javascript"> 
     google.charts.load('current', {'packages':['corechart']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 
var data = new google.visualization.DataTable(); 
data.addColumn('string', 'Course'); 
data.addColumn('number', 'Count'); 

<?php 



     while($row = mysqli_fetch_array($resultMostTakenCourse)){ 



    ?> 


data.addRow(['<?php echo $row[0]; ?>', <?php echo $row[1]; ?>]); 

     <?php } ?> 

     var options = { 
      title: 'Courses/Registered times' 

     }; 

     var chart = new google.visualization.PieChart(document.getElementById('piechart')); 

     chart.draw(data, options); 
     }