另一个.... html表没有填充mysql / PHP

时间:2012-08-22 06:23:21

标签: php mysql html-table

我已经广泛浏览了该网站并得出结论,我遇到了许多人所遇到的问题,但我看到的答案似乎都没有效果!

基本上,我试图从存储在mySQL表中的数据填充HTML表。数据位于名为“类别”的表中。当我加载页面时,表标题出现但没有表数据。

我已经编写并重写了我的代码不少于4次 - 它作为“ul”工作正常或者只是作为纯文本呈现时,但是只要我把它放到“表”中就好像停止工作了!

这是我的代码:

<?php
include("includes/dbconnect.php"); //This works fine as tested on the page

$sql = "SELECT * FROM products";
$myData = mysql_query($sql) or die (mysql_error());
$product = mysql_fetch_array($myData);

?>

<html>
<head>
<title></title>
</head>
<body>
    //This plain text works
<?php do {
echo $product['title']." <br />"; 
} while ($product = mysql_fetch_array($myData));
//-----------------------------------------
    //Table - doesnt work
echo "<table border=1>
<tr>
    <th>Title</th>
    <th>Category</th>
    <th>Sport</th>
    <th>Team</th>
    <th>Price</th>
    <th>Shipping</th>
</tr>";
while ($product = mysql_fetch_array($myData)) {
    echo "<tr>";
    echo "<td>".$product['title']."</td>";
    echo "<td>" . $product['category'] . "</td>";
    echo "<td>" . $product['sport'] . "</td>";
    echo "<td>" . $product['team'] . "</td>";
    echo "<td>" . $product['price'] . "</td>";
    echo "<td>" . $product['shipping'] . "</td>";
    echo "</tr>";
}
echo "</table>";
?>


</body>
</html>

我真的在我的智慧结束,我通过无数的YouTube教程工作,仍然由于某种原因代码不会工作。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

您已经在代码顶部的do while循环中运行mysql_fetch_array。您无法多次提取结果行。而是将所有返回的行推送到数组:

$products = array();
while ($product = mysql_fetch_array($myData)) {
    $products[] = $product;
}

然后,您可以循环浏览$products多次,以构建您的网页。所以对于你的桌子,这看起来像:

echo "<table border=1>
<tr>
    <th>Title</th>
    <th>Category</th>
    <th>Sport</th>
    <th>Team</th>
    <th>Price</th>
    <th>Shipping</th>
</tr>";
foreach($products as $item) {

    echo "<tr>";
    echo "<td>" . $item['title'] . "</td>";
    echo "<td>" . $item['category'] . "</td>";
    echo "<td>" . $item['sport'] . "</td>";
    echo "<td>" . $item['team'] . "</td>";
    echo "<td>" . $item['price'] . "</td>";
    echo "<td>" . $item['shipping'] . "</td>";
    echo "</tr>";    

}
echo "</table>";

答案 1 :(得分:0)

如果该代码看起来真的像这样删除do-while循环以及迭代$mydata的所有内容,它会起作用,因为你浪费了内部的mysql-counter

意味着在第二个循环中你的$result已经在最后,要么再次查询,要么将所有结果推送到一个数组中以供多次使用

答案 2 :(得分:0)

您已经使用此数据提取了一次数据..... $product = mysql_fetch_array($myData); 所以只需将此数组与foreach循环一起使用....

foreach($product as $sProduct){
// User $sProduct to access that single product.
}

答案 3 :(得分:0)

您的代码包含许多错误和实现

尝试这个,如果它适合你:

<?php
include("includes/dbconnect.php"); 
$sql = "SELECT * FROM products";
$myData = mysql_query($sql) or die (mysql_error());
?>
<html>
<head>
<title></title>
</head>
<body>
    //This plain text works
<?php 

if(mysql_num_rows ($myData) > 0)
{
    $html = "<table border=1><tr> 
                    <th>Title</th>
                    <th>Category</th>
                    <th>Sport</th>
                    <th>Team</th>
                    <th>Price</th>
                    <th>Shipping</th></tr>";

    while ($product = mysql_fetch_array($myData)) 
    {   
        $html .= "<tr>";
        $html .= "<td>".$product['title']."</td>";
        $html .= "<td>".$product['category']."</td>";
        $html .= "<td>".$product['sport']."</td>";
        $html .= "<td>".$product['team']."</td>";
        $html .= "<td>" . $product['shipping'] . "</td>";
        $html .=  "</tr>";
    }
    $html .=  "</table>";
    echo $html;
}
else
{
    echo "No Product Found";
}   
?>
</body>
</html>

如果这对您有用,您可以找出问题或者我会解释:)