我希望有人能帮助我。我正在创建一个硬件网页 - 在内容部分将显示从数据库中读取的主要类别。我希望结果被读取为每行 3 个和 2 列,因为有 6 个类别。类似于我在下面看到的。
| CAT1 | CAT2 | CAT3 |
| CAT4 | CAT5 | CAT6 |
我目前将其显示在列中,但它只是在所有列中复制相同的数据。
即| CAT1 | CAT1 | CAT1 |
| CAT2 | CAT2 | CAT2 |
如果有人有任何想法,请告诉我。
这是我正在使用的代码:
$query = "SELECT distinct category FROM listings";
$result = mysql_query($query);
echo "<table>";
while($row = mysql_fetch_array($result)){
echo "<tr><td>" . $row['category'] . "</td><td>" . $row['category'] . "</td></tr>";
}
echo "</table>";
只要你愿意,这适用于所有类别。
$catNo = 1;
echo "<table> <tr>";
while($row = mysql_fetch_array($result)){
echo "<td>" . $row['category'] . "</td>";
if ($catNo % 3 == 0) {
echo "</tr><tr>"
}
$catNo++;
}
echo "</tr> </table>";
问题是您的 while
语句对每个<td>
使用相同的行,您可以使用计数器来检查何时放置新行:
$catNo = 1;
echo "<table> <tr>";
while($row = mysql_fetch_array($result)) {
echo "<td>" . $row['category'] . "</td>";
$catNo++;
if ($catNo == 3) {
echo "</tr><tr>"
//if you end up having more than six categories reset $catNo
$catNo = 1;
}
}
echo "</tr> </table>";
您
遇到的问题是您在每列中打印相同的值,因为$row没有移动到下一个迭代。给定查询的输出,您可以执行以下操作:
echo "<table><tr>";
$idx = 0;
while($row = mysql_fetch_array($result)) {
if(++$idx % 3 == 0) {
echo "</tr><tr>";
}
echo "<td>" . $row['category'] . "</td>";
}
echo "</tr></table>";
% 运算符是一个取模运算符,返回运算符的余数除以操作数。在这种情况下,$idx除以 3,所以在 3 行之后"</tr><tr>"
被回显,然后在循环完成后全部关闭。