我正面临着一个问题,试图解决这个问题4个小时,但直到现在还没有解决方案。我有动态数据,我喜欢将其显示为如下表格
Header1..Header2.............。。HeaderN
Header1的data1 ...Header2的data1 ...HeaderN的data1
Header1的data2 ...Header2的data2 ...HeaderN的data2
Header1的data3 ...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是一个完全动态的表的所有头名称。然后,我尝试查找每个标头的数据。
但它现在是这样显示的:
Header1
Header1的data1
Header1的data2
Header1的data3
Header2
Header2的data1
Header2的data2
Header2的data3
。。。
HeaderN
HeaderN的data1
HeaderN的data2
HeaderN的data3
发布于 2013-06-12 23:23:19
您没有正确构建您的表。您正在打开一个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>';发布于 2013-06-12 23:20:22
你需要两个循环而不是一个。
在循环中,首先显示标题,然后可以将标题字段存储在数组中(如果需要...)。
第二个循环遍历数据库行,并有一个内部循环来显示不同表单元格中的不同字段。
发布于 2013-06-12 23:29:33
查询代价很高,所以如果可能的话,在这种情况下你应该只做一次。
要获得我认为您想要的内容,您可以在一个查询中检索所有数据,在第一行上使用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。
https://stackoverflow.com/questions/17069110
复制相似问题