1

誰か助けてもらえますか?これは私を怒らせています。

mysqlテーブルを呼び出しており、結果を複数回表示したい(またはifステートメントで結果を確認したい)。ただし、このループ(以下を参照)では、最初のインスタンス($ i = 1)でテーブルとその行を配列として呼び出すだけです。このコードは、Boxと呼ばれる20のdivを作成しますが、最初のdivにのみテーブルデータを入力します。なんで?

私は外側のループ内でforeachループを使用する必要があると思います(これはwordPressで動作するようになっています)が、構文を理解できません。どんな助けでも本当にありがたいです。

$i=1;
while ($i <= 20)
{
    echo "<div class=\"Box ".$i."\">";
    echo $i;
    echo "<br>";
    while ($row = mysql_fetch_array($result))
    {
    echo $row['name'];
    }
    echo "</div>";
    $i++;

}
4

5 に答える 5

1

私が理解している場合、ループ内で同じ結果リソースを複数回使用しようとしています。

最初に結果リソースをループした後、再びループできるように元の位置に巻き戻す必要があります。で巻き戻すことができますmysql_data_seek($result, 0)が、より良い戦略は、ループの前にすべてを配列にロードし、各ループで配列を反復することです。

// Load everything into the array `$results` first.
$results = array();
while ($row = mysql_fetch_assoc($result)) {
  $results[] = $row['name'];
}

// Better an incremental for loop than a while with a counter
// for a situation where you know the endpoint values of $i
for ($i = 1; $i <= 20; $i++)
{
    echo "<div class='Box $i'>";
    echo $i;
    echo "<br>";
    // Inside your HTML, use the $results array 
    // rather than the MySQL resource
    foreach ($results as $row)
    {
      echo $row['name'];
    }
    echo "</div>";
}
于 2012-07-04T12:21:38.937 に答える
1

よくわからないかもしれませんが、これを試してみてください:

$i=1;
while ($row = mysql_fetch_array($result) && $i <= 20) {
    echo "<div class=\"Box ".$i."\">";
    echo $i;
    echo "<br>";
    echo $row['name'];
    echo "</div>";
    $i++;
}

コードでは、最初のループ内で「mysql ループ」を実行するためです。

于 2012-07-04T12:21:58.767 に答える
0

これをやってみて、

$i=1;
while ($row = mysql_fetch_array($result))
{
    echo "<div class=\"Box ".$i."\">";
    echo $i;
    echo "<br>";
    echo $row['name'];
    echo "</div>";
    $i++;

}
于 2012-07-04T12:20:10.350 に答える
0

mysql_fetch_array($result) が指定されると、$result をフェッチに再度使用することはできません。したがって、ループでは機能しません。結果を配列に保存し、必要な場所で使用することをお勧めします。

于 2012-07-04T12:21:38.153 に答える
0

mysql_data_seek を使用して、結果のポインターにリセットできます。それらをすべてやり直したい場合は、次のようにします。

mysql_data_seek ( $result, 0 );
于 2012-07-04T12:46:32.353 に答える