2013-04-16 144 views
0

我在一個名爲數據庫編程的類中。我們獲得了一個數據集並將其放入我們的服務器。現在我必須使用jquery插件來幫助可視化數據。我正在使用Graph Us插件並嘗試使用「填充」選項。使用PHP foreach函數創建表格

我的教授幫我建立這個功能:

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

你能告訴我們print_r($ new_row)的結果嗎? – pjongjang

+0

格式是真的關閉。您是否介意按照以下方式重新格式化您的PHP:http://framework.zend.com/manual/1.12/en/coding-standard.coding-style.html,並刪除HTML中的空行。 – mzedeler

回答

3

您的$ 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;?> 
+0

這個工作,但它不顯示錶中的信息,我怎麼想它......它只是顯示錶中的所有國家,然後列出數字1-119 – clo3o5

+0

你還沒有說過你想要的信息被顯示。你想要每個國家的價值總和,平均值,產品,標準差?你應該能夠通過調整內部循環來計算所有這些事情。 –

+0

我只想顯示每年的值。我不需要總和平均值或任何其他計算值...只是顯示的值,他們將被添加到圖形使用GraphUP Jquery插件 – clo3o5

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> 
} 
+0

這將取代我發佈的第一個查詢? – clo3o5

+0

@bwoebi:它被稱爲僞代碼的原因。 –

+0

@MarcB是的,但它很糟糕閱讀此〜〜 – bwoebi