如何在每个帖子上显示谷歌图表

时间:2015-10-22 10:22:36

标签: javascript php google-visualization

当我在我的while循环中添加谷歌图表时,它只会在第一篇文章中显示一次。我想在每个帖子旁边显示谷歌图表。

不幸的是,即使在while循环中添加它也不起作用。

这是我的代码:

            <div id="wrapper">

        <?php include "includes/navigation.php"; ?>
        <?php include "../includes/functions.php"; ?>

        <div id="page-wrapper">

            <div class="container-fluid">

                <!-- Page Heading -->
                <div class="row">
                    <div class="col-lg-12">
                        <h1 class="page-header">
                            Statistieken
                            <small><?php echo $_SESSION['username']; ?></small>
                        </h1>

                        <!-- week nav -->
                        <ul class="nav nav-pills">
                          <li role="presentation"><a href="#">Week 1</a></li>
                          <li role="presentation"><a href="#">Week 2</a></li>
                            <li role="presentation"><a href="#">Week 3</a></li>
                        </ul>
                        <!-- einde week nav -->


                        <!-- logboek van user -->

                        <?php 


                        $the_user_id = $_SESSION['user_id'];

                        $query = "SELECT * FROM logboek WHERE logboek_user = $the_user_id LIMIT 3 ";
                        $select_logboek_user = mysqli_query($connection, $query);
                        confirmQuery($select_logboek_user);

                        while($row = mysqli_fetch_assoc($select_logboek_user)){

                            $logboek_image = $row['logboek_image'];
                            $logboek_title = $row['logboek_title'];
                            $logboek_content = $row['logboek_content'];
                            $logboek_date = $row['logboek_date'];
                            $logboek_time = $row['logboek_time'];
                            $logboek_studielastuur = $row['logboek_studielastuur'];


                        ?>

                         <?php

                            echo $logboek_studielastuur;

                            ?>


                          <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Task', 'Hours per Day'],
          ['Work',     11],
          ['Eat',      2],
          ['Commute',  2],
          ['Watch TV', 2],
          ['Sleep',    7]
        ]);

        var options = {
          title: 'My Daily Activities',
          pieHole: 0.4,
        };

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


                      <!-- 2 colum logboek -->    
                      <div class="row">

                          <div class="col-xs-4 col-sm-3">
                              <?php echo '<div id="donutchart" style="width: auto; height: auto;"></div>'; ?>   
                          </div>


                          <div class="col-xs-8 col-sm-3">
                              <img src="images/<?php echo $logboek_image ?>" class="img-responsive" alt="">
                              <h3 class="text-center"><?php echo $logboek_title; ?></h3>
                              <small><?php echo $logboek_date; ?></small>
                              <small><?php echo $logboek_time; ?></small>
                              <p><?php echo $logboek_content; ?></p>
                          </div>

                        </div>
                        <!-- einde 2 colum logboek -->    






<!-- full width logboek
                        <h3 class="text-center"><?php echo $logboek_title; ?></h3>
                        <img src="images/<?php echo $logboek_image ?>" class="img-responsive" alt="">
                        <small><?php echo $logboek_date; ?></small>
                        <small><?php echo $logboek_time; ?></small>
                        <p><?php echo $logboek_content; ?></p>
-->

                        <?php } ?>

                        <!-- einde logboek user -->







                        <nav class="navbar navbar-default navbar-fixed-bottom">
                          <div class="container">
                               <ul class="nav nav-tabs">
                                    <li role="presentation"><a href="aanwezigheid.php"><i class="fa fa-check"></i> Aanwezigheid</a></li>
                                    <li role="presentation"><a href="#"><i class="fa fa-check-square-o"></i> Status</a></li>
                                    <li role="presentation" class="active"><a href="statistieken.php?source=view_all_statistieken"><i class="fa fa-bar-chart"></i> Statistieken</a></li>
                                    <li role="presentation"><a href="statistieken.php?source=add_logboek"><i class="fa fa-book"></i> Logboek</a></li>
                                    <li role="presentation"><a href="statistieken.php?source=add_logboek"><i class="fa fa-calendar"></i> Rooster</a></li>

                    </div>
                              </nav>
                </div>
                <!-- /.row -->

            </div>
            <!-- /.container-fluid -->

        </div>
        <!-- /#page-wrapper -->
<?php include "includes/footer.php"; ?>

以下是图片说明:

enter image description here

我真的很感谢你的帮助!

亲切的问候, 凯文。

1 个答案:

答案 0 :(得分:1)

您正在使用getElementById来定位放置圆环图的位置。问题是应该只有一个具有相同ID的元素,它们应该是唯一的!确认此规则后,浏览器会在找到第一个元素后停止查找元素。

你应该为每个帖子使用一个非常独特的ID,它会起作用......

由于您的代码太大,我将重现一个小例子:

<?PHP
    foreach($posts as $post){
        echo '<div class="donutchart" id="donutchart_'.$post['id'].'"></div>';
        ?>
        <script>
            var data = theGraphData;
            var chart = new google.visualization.PieChart(document.getElementById('donutchart_<?=$post['id']?>'));
            chart.draw(data, options);
        </script>
    }
?>

基本上,你在每个部分调用正确ID上的javascript ...还有其他一些方法可以这样做,比如直接在元素上添加数据,在绘制完所有内容后,javascript会查找它们并执行操作工作。另外,请确保每次foreach增量都不加载google API ...

相关问题