我有一个包含人名的MySQL表。 使用PHP,将这些名称划分为3列的最佳方法是什么。
这可以使用HTML表来实现,但是可以仅使用<div>
来实现吗?
我听说可以使用%运算符完成此操作。这会是最好的方式,这将如何做?
答案 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>";
?>