2

データベースからの4つの画像をテーブルに表示したい(2 * 2)その方法を知っています。しかし、私には特別な条件もあります(4つ未満の画像がある場合は、デフォルトの画像が表示され、合計で4つの画像が表示されます)

これはwhileループで管理します。画像が4枚あれば問題なく動作しますが、画像が少ないと(デフォルトの画像は全部で4枚完成します)動作しません。私はそれを行う方法を理解することはできません。

何か助けはありますか?

<table>
<tr>
<?php                               
$todisplay = 4;

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT 0,4;");

while ($row = mysql_fetch_array($query)) {
$x++;
 echo "<td><img src='".$row['I1_Th'] .  "'/></td>";
 $displayed_number++;
 if ($x % 2==0) {
 echo "</tr><tr>";}
}   

echo str_repeat("<td>
<img src='images/png/defthumb.png'> </td>", $todisplay-$displayed_number);
?>
</tr></table>
4

2 に答える 2

2

あなたはそれからそう遠くはありませんでした-同じことをする別のループを作成するだけですが、代わりにデフォルトの画像を使用します。また、$displayed_numberと同じ値を保持しているようです$xので、削除しました。

<table>
<tr>
<?php                               
$todisplay = 4;

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT 0,4;");
$x = 0;

while ($row = mysql_fetch_array($query)) {
$x++;
 echo "<td><img src='".$row['I1_Th'] .  "'/></td>";

 if ($x % 2==0) {
 echo "</tr><tr>";}
}   

while ( $x < $todisplay) {
$x++;
 echo "<td><img src='images/png/defthumb.png'/></td>";
 if ($x % 2==0) {
 echo "</tr><tr>";}
}   
?>
</tr></table>
于 2013-02-24T20:26:26.730 に答える
1

クエリによって返された行をループする代わりに、単に 4 回ループして、代わりに行のフェッチを試みてみませんか?

<table>
<tr>
<?php                               
$tablerows = 2;

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT " + ($tablerows * 2) + ";");

for ($x = 1; $x <= ($tablerows * 2); $x++) {
  if ($row = mysql_fetch_array($query)) {
    echo "<td><img src='".$row['I1_Th'] .  "'/></td>";
  } else {
    echo "<td><img src='images/png/defthumb.png'></td>";
  }
  if ($x % 2==0 && $x != $tablerows * 2) {
    echo "</tr><tr>";}
}
?>
</tr></table>
于 2013-02-24T20:34:01.920 に答える