使用 PHP foreach 函数创建表

clo*_*3o5 1 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);


?>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

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

Kam*_*zot 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;?>
Run Code Online (Sandbox Code Playgroud)

另请注意,您需要冒号 ':' 而不是分号 ';' 声明后foreach。这种语法(不太为人所知)在这里描述: http://php.net/manual/en/control-structs.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;?>
Run Code Online (Sandbox Code Playgroud)