【问题标题】:php multiple alternate column loopphp多个交替列循环
【发布时间】:2012-01-18 15:18:23
【问题描述】:

我对 php 和 html 非常陌生,我试图从数据库表记录集创建这样的输出。其中“表记录 n”是 db 表记录集中的列

基本上该表格将是一个 1x2x1x2x4 列,有 5 行

<table border=1>
    <tr> 
        <td>table record 1 </td>
    </tr>

    <tr> 
        <td> table record 2 </td> <td>table record 3 </td>
    </tr>   
    <tr> 
        <td> table record 4 </td>
    </tr>
    <tr> 
        <td> table record 5 </td> <td>table record 6 </td>
    </tr>
    <tr> 
        <td> table record 7 </td> 
        <td>table record 8 </td>
        <td> table record 9 </td> 
        <td>table record 10</td>
    </tr>

</table>

我只到了这个

          $next_Column = 1;


          echo "<tr>";

           while ( $row = mysql_fetch_array( $result ) ) 
           { 
    echo "<td>". $row['name']. "</td>"; 
    $next_Column ++;

    if( $next_Column > 1 )
    {
        echo "<tr>";
        $next_Column = 1;
    }
       } 
          ?> 

【问题讨论】:

    标签: php recordset calculated-columns alternate


    【解决方案1】:

    上述循环将始终回显&lt;tr&gt;,因为当您到达if 时,$next_column 将始终> 1。您需要使用嵌套循环来遍历列。 this page 上的代码之类的东西应该会有所帮助。虽然,如果你知道你需要它的确切格式,为什么不让你的 php 像这样呢?

    <table border=1>
    <?php
        while ( $row = mysql_fetch_array( $result ) )
        {
            echo '<tr><td>' . $row[0] . '</td></tr>';
            echo '<tr><td>' . $row[1] . '</td><td>' . $row[2] . '</td></tr>';
            echo '<tr><td>' . $row[3] . '</td></tr>';
            echo '<tr><td>' . $row[4] . '</td><td>' . $row[5] . '</td></tr>';
            echo '<tr><td>' . $row[6] . '</td><td>' . $row[7] . '</td>';
            echo '<td>' . $row[8] . '</td><td>' . $row[9] . '</td></tr>';
        }
    ?>
    </table>
    

    请注意,所有这些数字都可以替换为引号中的列名(例如'name')。此外,上面的代码将为数据库中的每一行发出 5 个表行。这就是你想要做的吗?

    编辑:如果您尝试遍历每一行并将其添加到基于 THAT ROWS 列数的表中,那么我会建议这样的事情:

    <table border=1>
    <?php
        while ( $row = mysql_fetch_array( $result ) )
        {
            echo '<tr>';
    
            //Loop through cols
            foreach($row as $value)
            {
                if($value)
                {
                    echo '<td>' . $value . '</td>';
                }
            }
    
            echo '</tr>'
        }
    ?>
    </table>
    

    这只会将值放在数据库中的表行中,因此如果您有一行填充了 1 个列,则会得到 1 个表列,但填充了 4 个列的行将有 4 个表列。

    【讨论】:

    • 好吧,用我上面写的那个替换你的while循环,试一试,让我知道它是怎么回事。
    • 嗨@SuperTron 示例场景是这样的&lt;tr&gt; &lt;td&gt; userid 1 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; userid 2&lt;/td&gt; &lt;td&gt;userid 3 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; userid 4 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; userid5 &lt;/td&gt; &lt;td&gt;userid6 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; userid7 &lt;/td&gt; &lt;td&gt;userid8 &lt;/td&gt; &lt;td&gt; userid9 &lt;/td&gt; &lt;td&gt;userid10&lt;/td&gt; &lt;/tr&gt; 其中userid 是表本身的各个列
    • 是的,那么上面的代码应该为数据库中的每一行回显,假设信息在那里。
    • 感谢@SuperTron 的快速回复 :) 每一行都是一个不同的记录我尝试了你提供的代码它一次显示格式我试图完成的内容类似于这个的布局cashcashpinoy.com 其中每张图片都是数据库中的一条不同记录
    • 哦,所以您想遍历行并根据行数显示不同的列数?
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2023-03-07
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多