使用 PHP 使用 HTML Table 操作 MySQL 结果
Manipulating MySQL Results with HTML Table using PHP
我希望有人能帮助我。我正在创建一个硬件网页 - 在内容部分将显示从数据库中读取的主要类别。我希望结果被读取为每行 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>";
问题在于您的 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>";
% 运算符是模运算符,returns 运算符除以操作数的余数。本例$idx除以3,所以回显3行后"</tr><tr>"
,然后循环结束后全部关闭
只要您愿意,这适用于所有类别。
$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>";
我希望有人能帮助我。我正在创建一个硬件网页 - 在内容部分将显示从数据库中读取的主要类别。我希望结果被读取为每行 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>";
问题在于您的 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>";
% 运算符是模运算符,returns 运算符除以操作数的余数。本例$idx除以3,所以回显3行后"</tr><tr>"
,然后循环结束后全部关闭
只要您愿意,这适用于所有类别。
$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>";