1

我在一个名为数据库编程的课程中。我们得到了一个数据集并将其放入我们的服务器中。现在我必须使用一个 jquery 插件来帮助可视化该数据。我正在使用 Graph Us 插件并尝试使用“填写”选项。

我的教授帮助我创建了这个函数:

<?php
include 'connect.php';
$country_query = "SELECT DISTINCT Country FROM FemaleMaleRatioNew";
$result = mysqli_query($sql_link, $country_query);
$new_row = array();
while ($row = mysqli_fetch_assoc($result)) {
    $country = $row['Country']; 
    $query = sprintf("SELECT Year, Value FROM FemaleMaleRatioNew WHERE Country =     '%s'", $country);  
    $country_result = mysqli_query($sql_link, $query);
    while ($country_row = mysqli_fetch_assoc($country_result) ) {
        $new_row[$country][] = array('year' => $country_row['Year'],
                            'value'=> $country_row['Value']
                            );

    }
}   

//print_r($new_row);


?>

print_r($new_row);确保它有效并且确实有效,它会在激活时打印出数组。

然后他指导我创建这样的表:

    <body>  

    <table id="demo">

    <?php  foreach($new_row as $row):?> 




            <tr>
                <td><?=$row['year'];?></td>
                <td><?=$row['country'];?></td>
            </tr>
    <?php endforeach;?>



    </table>

<script type="text/javascript">
$(document).ready(function() {

// Here we're "graphing up" only the cells with the "data" class
$('#demo td').graphup({
    // Define any options here
    colorMap: 'heatmap',
    painter: 'fill',
    // ...
});

});
</script>
</body>

我还需要做什么才能让桌子正常工作?我似乎无法弄清楚。它所做的只是空白。

很抱歉,如果这个问题的措辞不正确,或者我对任何事情都不清楚,请告诉我。

4

2 回答 2

5

您的 $new_row 变量中的每个国家/地区都有多行。您必须先遍历国家/地区,然后遍历各个数据行:

<?php  foreach($new_row as $country => $rows): ?>
  <?php  foreach($rows as $row): ?>
        <tr>
            <td><?=$country;?></td>
            <td><?=$row['Year'];?></td>
            <td><?=$row['Value'];?></td>
        </tr>
  <?php endforeach;?>
<?php endforeach;?>

另请注意,您需要冒号 ':' 而不是分号 ';' 声明后foreach。此处描述了此语法(鲜为人知):http: //php.net/manual/en/control-structures.alternative-syntax.php

如果您想显示每个国家/地区的某种聚合(例如总和)并且您想在 PHP(而不是 MySQL)中计算它,您可以这样做:

<?php foreach($new_row as $country => $rows): 
  $sum = 0;
  foreach($rows as $row): 
    $sum += $row['Value'];
  endforeach;
?>
        <tr>
            <td><?=$country;?></td>
            <td><?=$sum;?></td>
        </tr>
<?php endforeach;?>
于 2013-04-16T20:57:22.613 回答
1

您应该使用单个 JOINed 查询来执行此操作,但您可能还没有在课堂上得到它。既然是作业,我不会给你明确的答案,但这是伪代码:

$countries = SELECT DISTINCT Country FROM YourTable;
while($country_row = fetch_row($countries)) {
   echo $country_row['Country'];
   echo <table>;
   $status = SELECT Year, Value FROM YourTable WHERE Country=$country_row['Country'];
   while($stats_row = fetch_row($status) {
        echo <tr><td>$stats_row['Year']</td><td>$stats_row['Value']}</td>
   }
   echo </table>
}
于 2013-04-16T20:55:49.643 回答