私があなたの質問を正しく理解していれば、画像のグリッドが必要です。グリッドは 2 エントリのテーブルなので、実際には 2 つのループが必要です。行のすべてのエントリ (つまり、すべての列) は最初のループから取得され、すべての行は内部で最初のループを呼び出す 2 番目のループから取得されます。
この次のスニペットに行きます。ただし、あなたが与えなかった未知の制約がいくつかあるので、それらのいくつかを想定します。たとえば、データが 1 次元配列として返されると仮定します。
<?php
$data = array('one', 'two', 'three', 'four', 'five', 'six');
$nbColumns = 3;
?>
<table>
<?php
for($row = 0; $row * $nbColumns < count($data); ++$row) {
?>
<tr>
<?php
for($col = 0; $col < $nbColumns; ++$col) {
?>
<td><?php echo $data[$row * $nbColumns + $col]; ?></td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
これにより、次が生成されます。
<table>
<tr>
<td>one</td>
<td>two</td>
<td>three</td>
</tr>
<tr>
<td>four</td>
<td>five</td>
<td>six</td>
</tr>
</table>
このスニペットをニーズに合わせて調整できるはずです。
回答/スニペットを編集できるように、説明が必要なことがあれば教えてください。
編集:
何を説明する必要があるのかよくわかりません。
とにかく、最初のコードをスニペットに再挿入しただけで、特別なことは何もしていません。基本的に、上部include
に and の呼び出しを挿入しexecuteSelectQuery
、ダム番号を 2 行に置き換えました。最初は画像、2 番目はリンク/名前です。
これはそのまま動作するはずですが、コードの詳細をすべて把握していないため、動作することを保証できません。
<?php
include 'dbFunctions.php';
$arrStocks = executeSelectQuery("SELECT name,id,image,price FROM stocks");
$nbColumns = 3;
?>
<table>
<?php
for($row = 0; $row * $nbColumns < count($arrStocks); ++$row) {
?>
<tr>
<?php
for($col = 0; $col < $nbColumns; ++$col) {
$index = $row * $nbColumns + $col;
$name = $arrStocks[$index]['name'];
$image = $arrStocks[$index]['image'];
$id = $arrStocks[$index]['id'];
$price = $arrStocks[$index]['price'];
?>
<td>
<img src="stocks/<?php echo $image; ?>" alt="<?php echo $name; ?>">
<br>
<a href="stockDetails.php?id=<?php echo $id; ?>"><?php echo $name; ?></a>
</td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
結論として、table
目的を達成するために a を使用しないでください。私の答えは少しハックです ($nbColumns
あまり良くありません) が、table
s を使用して目的を達成するためのより良い方法はあまりありません。sを使用float
する方が良い解決策かもしれませんが、PHP 関連の問題ではなくなります...
EDIT2:
最後のスニペットを編集してテストしたところ、現在は機能しています ;-)