画像データを含む数値的にインデックス付けされたオブジェクトの配列を想定すると、次のようになります。
<div class="row">
<?php
// loop through all my images taking the index and image object
foreach( $images as $idx=>$image ) {
// If this isn't the 1st image & the modulus of 5 and $idx is 0, make a new row.
if( $idx > 0 && !(5%$idx) ) {
</div><div class="row">
}
// Print out the image
echo '<img src="' . $image->filename . '" />';
} ?>
</div>
モジュラスは基本的に、最初の数値を 2 番目の数値で割った余りです。したがって、5 つの画像を印刷した場合、5/5=1 で余りがないため、新しい行を作成します。
私はそれが次のようなものを作成すると信じています:
<div class="row">
<img src="img1.jpg" />
<img src="img2.jpg" />
<img src="img3.jpg" />
<img src="img4.jpg" />
<img src="img5.jpg" />
</div>
<div class="row">
<img src="img6.jpg" />
<img src="img7.jpg" />
<img src="img8.jpg" />
<img src="img9.jpg" />
<img src="img10.jpg" />
</div>
次に、CSS を使用してスタイルを設定できます。
<style type="text/css">
div.row {
clear:left;
}
div.row img {
float:left;
}
</style>
画像のサイズ変更に関しては、次の 2 つのオプションがあります。
- 簡単なオプション: CSS で画像の幅を設定します (高さはそれに応じてスケーリングされます)。これは完璧とは言えず、画像の縦横比 (幅と高さ) が異なる場合でも、乱雑に見えます。
- GD や imagick (imagemagick 上の PHP レイヤー) などの PHP ライブラリを使用してサイズ変更 (および必要に応じてトリミング) します。個人的には GD の方が好きです。GD は PHP と一緒にパッケージ化されているため、幅広いサポートが得られます。そうは言っても、imagick はより速く、より単純なコードなので、それはあなた次第です。このサイトでは、画像のサイズ変更について 2 つを比較しています。
編集:あなたの質問に答えて、画像の配列を取得するには、次のようなことをする必要があります:
<?php
// Build an array of images
$sql = 'SELECT * FROM images';
$result = mysql_query( $sql );
while( $obj = mysql_fetch_object( $result ) ) {
$images[] = $obj;
}
?>