将数据拆分为3列

时间:2011-08-21 14:45:25

标签: php mysql

我有一个包含人名的MySQL表。 使用PHP,将这些名称划分为3列的最佳方法是什么。

这可以使用HTML表来实现,但是可以仅使用<div>来实现吗?

我听说可以使用%运算符完成此操作。这会是最好的方式,这将如何做?

1 个答案:

答案 0 :(得分:8)

您可以使用模数运算符执行此操作,但实际上只需使用CSS。

使用display: inline-block,您可以获得良好的列效果。看看this JSFiddle here。我只使用JavaScript,因为我很懒;在您的情况下,PHP将生成<div>列表。如果您想将它们限制在一定宽度,只需将它们放在具有固定宽度的容器<div>中。


我已经提出了一个使用表格的解决方案,这是你应该做的事情(你没有给出任何特殊用例)。代码如下,以及工作演示here

$columns = 4;       // The number of columns you want.

echo "<table>";     // Open the table

// Main printing loop. change `30` to however many pieces of data you have
for($i = 0; $i < 30; $i++)
{
    // If we've reached the end of a row, close it and start another
    if(!($i % $columns))
    {
        if($i > 0)
        {
            echo "</tr>";       // Close the row above this if it's not the first row
        }

        echo "<tr>";    // Start a new row
    }

    echo "<td>Cell</td>";       // Add a cell and your content
}

// Close the last row, and the table
echo "</tr>
</table>";

最后,我们采用以列为中心的布局,这次回到div。这里有一些CSS;这应该放在一个单独的文件中,不要内联

<?php
$rows = 10;     // The number of columns you want.
$numItems = 30;     // Number of rows in each column

// Open the first div. PLEASE put the CSS in a .css file; inline used for brevity
echo "<div style=\"width: 150px; display: inline-block\">";

// Main printing loop.
for($i = 0; $i < $numItems; $i++)
{
    // If we've reached our last row, move over to a new div
    if(!($i % $rows) && $i > 0)
    {
        echo "</div><div style=\"width: 150px; display: inline-block\">";
    }

    echo "<div>Cell $i</div>";      // Add a cell and your content
}

// Close the last div
echo "</div>";
?>