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

标签 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

非常感谢您的帮助!

亲切的问候, 凯文。

最佳答案

您正在使用 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...

关于javascript - 如何在每个帖子上显示谷歌图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278759/

相关文章:

javascript - 检查 JS 是否可以访问 iframe 的文档

javascript - 使用 Javascript/Jquery 从 json 读取 header /列值

javascript - 带有文本输入选项的 JS 交互式测验

javascript - 如何使用 Puppeteer 和 Chrome DevTools 协议(protocol)修改请求 header ? (可能是JS语法问题)

php - 如何使用nginx重定向同一目录下的多个文件?

php - 使用适当的所有权和权限将上传的文件放入主目录

php - 按列对行进行排序,同时将具有公共(public)列的行放在一起

node.js - 使用 Socket.io 填充 google Area Chart - 'google.visualization.DataTable is not a constructor'

javascript - 在 Google Chart 中自定义 onmouseover 事件

javascript - 动态更改 Google Charts 中的 View 列名称