首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按列将动态数据显示为表

按列将动态数据显示为表
EN

Stack Overflow用户
提问于 2013-06-12 23:15:06
回答 3查看 3.9K关注 0票数 0

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

这是我的代码:

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-12 23:23:19

您没有正确构建您的表。您正在打开一个TR元素,然后再关闭/使用它前面的元素。尝试:

代码语言:javascript
复制
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>';
票数 1
EN

Stack Overflow用户

发布于 2013-06-12 23:20:22

你需要两个循环而不是一个。

在循环中,首先显示标题,然后可以将标题字段存储在数组中(如果需要...)。

第二个循环遍历数据库行,并有一个内部循环来显示不同表单元格中的不同字段。

票数 0
EN

Stack Overflow用户

发布于 2013-06-12 23:29:33

查询代价很高,所以如果可能的话,在这种情况下你应该只做一次。

要获得我认为您想要的内容,您可以在一个查询中检索所有数据,在第一行上使用array_keys来了解您正在处理哪些列,然后遍历数据,为每个数据库行添加一个新的表行。例如:

代码语言:javascript
复制
$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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17069110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档