Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以列方式将动态数据显示为表_Php_Mysql_Html Table - Fatal编程技术网

Php 以列方式将动态数据显示为表

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

我正面临一个问题,并试图解决这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):
    ?><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