2016-08-05 6 views
0

私はデータベースを使用してフォトギャラリーで作業しています。各行には、すべてがリセットされる前に3つの画像が表示されます。それは<img>/<img>/<img>/<div>形式になります。MySQLとPHP:一度に3行ずつクエリする

<img src="1" alt=""> 
<img src="2" alt=""> 
<img src="3" alt=""> 
<div class="clear-both"></div> 

をそして、それはデータベース内のすべての行に対してこれを繰り返し続けるでしょう:ソースコードを見るとき

だからあなたが持っていると思います。だから、9枚の画像は次のようになります。

<img src="1" alt=""> 
<img src="2" alt=""> 
<img src="3" alt=""> 
<div class="clear-both"></div> 
<img src="4" alt=""> 
<img src="5" alt=""> 
<img src="6" alt=""> 
<div class="clear-both"></div> 
<img src="7" alt=""> 
<img src="8" alt=""> 
<img src="9" alt=""> 
<div class="clear-both"></div> 

私はこれを処理するためにwhileを使用することができます考え出しました。しかし、私は追加するSQL文やPHP文を知らない。私はWHEREGROUP BYCOUNTを使用することを考えましたが、これらのどれも動作しません。

可能であれば、1と2の画像だけの行を処理できるようにしたいと考えています。

<img src="1" alt=""> 
<img src="2" alt=""> 
<img src="3" alt=""> 
<div class="clear-both"></div> 
<img src="4" alt=""> 
<div class="clear-both"></div> 

をそして8があった場合、それが表示されます:テーブル内の4行がある場合を意味し、それが表示されます助けを

<img src="1" alt=""> 
<img src="2" alt=""> 
<img src="3" alt=""> 
<div class="clear-both"></div> 
<img src="4" alt=""> 
<img src="5" alt=""> 
<img src="6" alt=""> 
<div class="clear-both"></div> 
<img src="7" alt=""> 
<img src="8" alt=""> 
<div class="clear-both"></div> 

感謝を。

PHP

$Database4 = new mysqli("localhost", "user", "pass", "Photography"); 
$Photos = $Database4 -> query("SELECT * 
           FROM `Year2016` 
           -- ORDER BY DateTaken 
           ;"); 

while ($DataRows = $Photos -> fetch_array()) { 
echo '<img src="photography/small/' . $DataRows["file"] . '" alt="">' . "\n"; 
} 

echo '<div class="clear-both"></div>' . "\n"; 

SQL

CREATE TABLE `Year2016`(
`file` text COLLATE utf8_bin NOT NULL, 
) 
ENGINE = InnoDB 
DEFAULT CHARSET = utf8 
COLLATE = utf8_bin; 

INSERT INTO `Year2016`(`file`) 
VALUES 
('red-1.png'), 
('red-2.png'), 
('red-3.png'), 
('red-4.png'), 
('red-5.png'), 
('red-6.png'); 

答えて

2

これはパイのように簡単です:

$i = 1; // special counter 
while ($DataRows = $Photos -> fetch_array()) { 
    echo '<img src="photography/small/' . $DataRows["file"] . '" alt="">' . "\n"; 
    if ($i % 3 == 0) { 
     echo '<div class="clear-both"></div>'; 
    } 
    $i++; 
} 
// the last one if last `$i` value is not divided by 3 
if ($i % 3 != 1) { 
    echo '<div class="clear-both"></div>'; 
} 
+0

ありがとうございました。私はすべてがとてもうまくいく様子を見ます。 –

関連する問題