使用PHP foreach函数创建表

时间:2013-04-16 20:50:28

标签: php arrays foreach html-table

我在一个叫做数据库编程的课程中。我们得到了一个数据集并将其放入我们的服务器中。现在我必须使用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>

我还需要做些什么才能使表格正常工作?我似乎无法弄明白。所有这一切都是空白的。

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

2 个答案:

答案 0 :(得分:4)

$ 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;?>

答案 1 :(得分: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>
}