【问题标题】:PHP MYSQL Associate array and tablePHP MYSQL 关联数组和表
【发布时间】:2014-05-12 06:02:48
【问题描述】:

这是一个代码。 这会从数据库中动态加载所有标题部分(即表的标题)。

以下代码可以正常工作。但是列不匹配。 即表头第一行第一列为空白,表中有错位。

代码

    <table border="1">
    <?php
    $book_query = mysql_query("select * from book_master");
    $i = 0;
    while($row = mysql_fetch_assoc($book_query))
    {

            $columns = array_keys($row);
            ?> 
            <th>
                <?php
                foreach($columns as $column)
                {
                ?>
                    <td><?php echo $column; ?> </td>

            </th>
            <?php 
        } 
        ?>
        <tr>
            <?php
            foreach($row as $key=>$value)
            {
                ?>
                <td><?php echo $value; ?></td>
                <?php
            }
            ?>
        </tr>
        <?php
        $i++;
    }
    ?>          
    </table>

编辑:

这是我的print_r($columns) 值:

Array ( [0] => Author Name [1] => Book Name [2] => Rating [3] => Location )

我知道问题出在循环上。有人可以帮帮我吗?

【问题讨论】:

  • 这是很糟糕的代码——你应该将数据处理和输出分开。而且您在这里生成了无效的 HTML——您将 td 元素放入 th 元素中; 两者都属于tr,并且不能相互嵌套。
  • CBroe - 现在工作正常。我已将 th 更改为 tr。现在没关系..是的,正如你所说 - 糟糕的代码。 ;)
  • 不推荐使用 mysql 扩展。新代码应该使用 mysqli 或 PDO,两者都有重要的优势,比如支持准备好的语句。另外,除非您正在编写数据库管理程序,否则不要使用SELECT *;只选择您需要的列。
  • outis - 表示感谢 :)

标签: php mysql for-loop foreach html-table


【解决方案1】:

希望这会对某人有所帮助。 只是我用TR替换了TH标签,输出很完美。

    <table border="1">
    <?php
    $book_query = mysql_query("select * from book_master");

    while($row = mysql_fetch_assoc($book_query))
    {

    $columns = array_keys($row);
    ?> 
    <tr>
    <?php
    foreach($columns as $column){ ?>
    <td><?php echo $column; ?> </td>
    <?php } ?>
    </tr>

    <tr>
    <?php
    foreach($row as $key=>$value){ ?>
    <td><?php echo $value; ?></td>
    <?php } ?>
    </tr>


    </table>

【讨论】:

    【解决方案2】:

    你可以尝试改变

             <th>
                <?php
                foreach($columns as $column)
                { ?>
                    <td><?php echo $column; ?> </td>
                <?php 
                }   
                ?>
            </th>
    

            <tr>
                <?php
                foreach($columns as $column)
                { ?>
                    <th><?php echo $column; ?> </th>
                <?php 
                }   
                ?>
            </tr>
    

    【讨论】:

      【解决方案3】:

      只需删除 TH 标签,因为它会创建一个额外的单元格,因此您的布局会混乱

      <table border="1">
          <?php
      
          $book_query = mysql_query("select * from book_master");
          $i = 0;
          while($row = mysql_fetch_assoc($book_query))
          {
          if($i == 0){
          $columns = array_keys($row);
          ?> 
          <?php
          foreach($columns as $column){ ?>
          <td><?php echo $column; ?> </td>
          <?php } ?>
          <?php } ?>
          <tr>
          <?php
          foreach($row as $key=>$value){ ?>
          <td><?php echo $value; ?></td>
          <?php } ?>
          </tr>
          <?php
          $i++;
          }
          ?>          
          </table>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多