1

データベースから返された各画像にIDを割り当てようとしています。ID は img id に入れられます。ID は、返されたデータベース行数の合計数から取得する必要があります。

<?php 
while ($result  = mysql_fetch_assoc($query)) {
$imgURL = $result['imageUrl'];
$imgID = mysql_num_rows($query);

for ($i=0; $i <= $imgID; $i++) { 
}

echo"<img id =\"$i\" src=\"uploads/$imgURL\"/>";
}

?>

見返りとして、画像はデータベースから表示されますが、img id が連続した番号 (つまり、1、2、3 など) ではなく、合計数が返されます。返された画像ごとに個別の番号を割り当てるにはどうすればよいですか?

すべてのヘルプは大歓迎です。ありがとうございました!

4

4 に答える 4

0

間違った場所にブラケットがあります。私はあなたのためにそれを書き直しました:

<?php 
while ($result  = mysql_fetch_assoc($query)) {
    $imgURL = $result['imageUrl'];
    $imgID = mysql_num_rows($query);

    for ($i=0; $i <= $imgID; $i++) { 
        echo "<img id =\"$i\" src=\"uploads/$imgURL\"/>";
    }
}
?>

IDがデータベースのフィールドからのものでない限り、一貫性の問題が発生する可能性もあります。クエリに並べ替えがない場合、特定の順序は保証されません。これを修正する最も一般的な方法は、「id」と呼ばれる別のフィールドを作成し、それにauto_increment属性を与えることです。このように、それはあなたに決して変わらないユニークな連番を与えるでしょう。この番号で並べ替えることもできます。

于 2012-11-20T20:35:16.460 に答える
0

行数を計算したり、複数のループを作成したりする必要もありません。$iwhileループのパスごとにインクリメントしてみましょう。

$i = 0;
while ($result = mysql_fetch_assoc($query)) {
    $imgURL = $result['imageUrl'];
    echo '<img id ="' . $i . '" src="uploads/' . $imgURL . '" />';
    $i++;
}
于 2012-11-20T20:35:33.887 に答える
0

あなたはこのようなことをすべきです。同じ行で同じことを何度も繰り返しているため、あなたが行ったことはまったく役に立ちません。

<?php
$imgID = 0;
while ($result  = mysql_fetch_assoc($query)) {
$imgURL = $result['imageUrl'];
echo"<img id =\"$imgID\" src=\"uploads/$imgURL\"/>";
$imgID = $imgID + 1;
}

?> 
于 2012-11-20T20:37:45.020 に答える
0

for ループ内にエコーを配置する必要があります。

for ($i=0; $i <= $imgID; $i++) { 
    echo "<img id =\"$i\" src=\"uploads/$imgURL\"/>";
}

編集:余談ですが、そのように画像を識別したくない場合があります。アプリケーション ロジックによっては、クエリ内のレコードの順序が一貫していない場合があります。各レコードにはデータベース内で一意の ID が必要であり、その値は反復回数よりも望ましいでしょう。

于 2012-11-20T20:34:02.087 に答える