我希望有人可以帮助我。我正在创建一个硬件网页 - 在内容部分将显示从数据库中读取的主要类别。我希望结果读取为每行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>";
答案 0 :(得分:2)
问题在于您的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>";
答案 1 :(得分:2)
您遇到的问题是您在每列中打印相同的值,因为$ 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>"
后,在循环结束后全部关闭。
答案 2 :(得分:2)
只要您愿意,这项工作适用于所有类别。
$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>";