Php 以列方式将动态数据显示为表
我正面临一个问题,并试图解决这4个小时,但没有解决方案,直到现在。 我有动态数据,我喜欢如下表所示 校长1。。。。。。。。。。。。。。。。。。校长2。。头部Php 以列方式将动态数据显示为表,php,mysql,html-table,Php,Mysql,Html Table,我正面临一个问题,并试图解决这4个小时,但没有解决方案,直到现在。 我有动态数据,我喜欢如下表所示 校长1。。。。。。。。。。。。。。。。。。校长2。。头部 标题1的数据1。。。。标题2的数据1。。。。总部数据1 标题1的数据2。。。。标题2的数据2。。。。总部数据2 标题1的数据3。。。。标题2的数据3。。。。总部数据3 校长1的数据。。。。校长2的数据号。。。。首部数据网 这是我的代码: foreach($query_all_field as $secondary_data): ?
标题1的数据1。。。。标题2的数据1。。。。总部数据1
标题1的数据2。。。。标题2的数据2。。。。总部数据2
标题1的数据3。。。。标题2的数据3。。。。总部数据3
校长1的数据。。。。校长2的数据号。。。。首部数据网 这是我的代码:
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;
foreach($query\u all\u字段作为$secondary\u数据):
?>您需要两个循环而不是一个
在循环中,首先显示标题,然后可以将标题字段存储在数组中(如果需要…)
第二个循环遍历数据库行,并有一个内部循环来显示不同表单元格中的不同字段。您没有正确构造表。在关闭/使用前面的元素之前,您正在打开一个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>';
echo';
foreach($query\u all\u字段作为$secondary\u数据):
?>
查询的成本很高,因此如果可能,在这种情况下,您应该只执行一次查询
要获得我认为您需要的内容,您可以在一个查询中检索所有数据,在第一行上使用array\u 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>';
}
$data=mysql\u查询(“从“$table\u name”中选择*”;
if(mysql_num_行($data)){
回声';
$headerRow=真;
while($row=mysql\u fetch\u assoc($data)){
如果($headerRow){
$headerRow=错误;
回声';
foreach(数组_键($row)作为$header){
回显“$header”;
}
回声';
}
回声';
foreach(行作为$value){
回显“$value”;
}
回声';
}
回声';
}
还应该注意的是,mysql.*
函数已被弃用,您应该考虑切换到其他库,如mysqli或PDO