我在一个叫做数据库编程的课程中。我们得到了一个数据集并将其放入我们的服务器中。现在我必须使用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>
我还需要做些什么才能使表格正常工作?我似乎无法弄明白。所有这一切都是空白的。
如果这个问题措辞不正确,或者我不清楚任何事情请告诉我,我很抱歉。
答案 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>
}