0
<script type="text/javascript">
    function drawVisualization() {
        // Prepare the data
    <?php   while($row = mysql_fetch_array($result)){ ?>
        var data = google.visualization.arrayToDataTable([
          ['Name', 'Gender', 'Age', 'Freqency'],
          ['<?php echo $row['name']?>', 
           '<?php echo $row['gender']?>', 
           '<?php echo $row['age']?>', 
           '<?php echo $row['freq']?>']
        ]);
    <?php  ?>
    }

...

</script>

这可行并出现一个图表,但只显示数据库表中的最后一个条目,并且有 4 个条目。

我究竟做错了什么?谢谢

4

2 回答 2

4

尝试一下:

<script type="text/javascript">
      function drawVisualization() {
        // Prepare the data

        var data = google.visualization.arrayToDataTable([
          ['Name', 'Gender', 'Age', 'Freqency'],
          <?php   while($row = mysql_fetch_array($result)){ ?>
          ['<?php echo $row['name']?>' , '<?php echo $row['gender']?>', <?php echo $row['age']?>, <?php echo $row['freq']?>],
          <?php } ?>
        ]);
于 2012-11-16T14:30:22.727 回答
1

您正在构建错误的数据结构。如果您查看了生成页面的源代码,您会看到

 var data = google.visualization.arrayToDataTable(...);
 var data = google.visualization.arrayToDataTable(...);
 var data = google.visualization.arrayToDataTable(...);
 var data = google.visualization.arrayToDataTable(...);

每个新行都会覆盖/销毁前一行。将var data行移出 fetch 循环:

var data = google.visualiation.arrayToDataTable([
['Name', 'Gender', 'Age', 'Freqency'],
<?php 
while($row = mysql_fetch_array($result)) {
    echo json_encode($row);
}
?>

这可能行不通,但应该给你一个大致的想法。注意 json_encode() 的使用。你没有在你的代码中使用它,如果一个人的名字(比如说)包含一个',你会引入一个 javascript 语法错误并杀死整个脚本。使用 json_encode() 保证您将 php 数据转换为语法正确的 javascript。

于 2012-11-16T14:30:14.400 回答