2013-06-12 90 views
0

我面臨一個問題,並試圖解決這個問題4個小時,但至今沒有解決方案。 我有動態數據,我喜歡以下面的表格顯示PHP:在列中顯示動態數據表格

Header1 .................. Header2 ........... .... .. HeaderN
DATA1頭1的....頭2的DATA1 ...頭2的HeaderN的DATA1
DATA2頭1的.... .... DATA2 HeaderN
DATA3頭1中的DATA2 .... Header2的data3 .... HeaderN的data3
.................................. ...........................
Header1的dataN .... Header2的dataN .... HeaderN的dataN

這是我的代碼

foreach($query_all_field as $secondary_data): 
    ?><th><?php echo $secondary_data;?></th><?php 
      $sql_data = mysql_query("SELECT `$secondary_data` FROM `$table_name`"); 
      if(mysql_num_rows($sql_data)){ 
       while($result_data = mysql_fetch_object($sql_data)){ 
       ?><tr><td><?php echo $result_data->$secondary_data;?></td></tr><?php 
       } 
      } 
endforeach; 

最重要的事情是$secondary_data表這完全是動態的所有頭名。然後我試圖找到每個頭的數據。

但現在正顯示出這樣

頭1
頭1
數據2頭1的
DATA3頭1中的數據1
頭2頭2的
數據1
數據2頭2
數據3頭2
的 。 。 。
HeaderN
數據2 HeaderN
數據3 HeaderN

回答

1

您不能正確構建表格。您在關閉/使用前一個元素之前打開一個TR元素。嘗試:

echo '<table><tr>'; 

foreach($query_all_field as $secondary_data): 
    ?> 
    <td> 
      <table> 
       <tr><th><?php echo $secondary_data;?></th></tr> 
       <?php 
       $sql_data = mysql_query("SELECT `$secondary_data` FROM `$table_name`"); 
       if(mysql_num_rows($sql_data)){ 
        while($result_data = mysql_fetch_object($sql_data)){ 
        ?><tr><td><?php echo $result_data->$secondary_data;?></td></tr><?php 
        } 
        }?> 
      </table> 
    </td> 
    <?php 
endforeach; 

echo '</tr></table>'; 
+0

這是工作的兄弟,需要正確設計。非常感謝 – Kabir

0

的的HeaderN
數據1你需要兩個循環,而不是一個。

在循環中,首先顯示標題,然後將標題字段存儲在數組中(如果需要)。

第二個循環遍歷數據庫行,並有一個內部循環來顯示不同表格單元格中的不同字段。

0

查詢是昂貴的,所以如果可能的話,你應該只在一次這樣的情況下,做他們。

爲了得到我想要的結果,您可以在一個查詢中檢索所有數據,在第一行使用array_keys找出正在處理的列,然後循環遍歷數據,添加一個新的表格行爲每個數據庫行。例如;

$data = mysql_query("SELECT * FROM `$table_name`"); 
if (mysql_num_rows($data)) { 
    echo '<table>'; 
    $headerRow = true; 
    while ($row = mysql_fetch_assoc($data)) { 
     if ($headerRow) { 
      $headerRow = false; 
      echo '<tr>'; 
      foreach (array_keys($row) as $header) { 
       echo "<th>$header</th>"; 
      } 
      echo '</tr>';  
     } 
     echo '<tr>'; 
     foreach ($row as $value) { 
      echo "<td>$value</td>"; 
     } 
     echo '</tr>'; 
    } 
    echo '</table>'; 
} 

還應當指出的是,mysql_*功能過時,你應該考慮切換到不同的庫,例如庫MySQLi或PDO。