使用PHP操作HTML表格的MySQL结果

时间:2015-01-15 11:31:10

标签: php html mysql html-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>";

3 个答案:

答案 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>";