0

私はこのサイトをよく見て、多くの人が経験する問題に遭遇しているという結論に達しましたが、私が見た答えはどれもうまくいかないようです!

基本的に、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

4 に答える 4

1

mysql_fetch_arrayコードの先頭でdowhileループを実行しました。結果行を複数回プルすることはできません。代わりに、返されたすべての行を配列にプッシュします。

$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>";
于 2012-08-22T06:26:56.623 に答える
0

そのコードが本当にこのように見える場合は、do-whileループと、反復するすべてのものを削除してください。$mydata内部のmysql-counterを無駄にするため、これは機能します。

つまり、2番目のループで$resultは、すでに最後にあります。もう一度クエリを実行するか、すべての結果を配列にプッシュして複数回使用します。

于 2012-08-22T06:27:24.847 に答える
0

これですでにデータを 1 回プルしています.....$product = mysql_fetch_array($myData); だから、この配列を foreach ループで使用するだけです....

foreach($product as $sProduct){
// User $sProduct to access that single product.
}
于 2012-08-22T06:32:53.923 に答える
-1

あなたのコードには多くのバグと実装が含まれています

うまくいく場合はこれを試してください:

<?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>

これがうまくいく場合は、問題を理解するか、私が説明します:)

于 2012-08-22T06:49:38.143 に答える