一度に3つのインライン画像の2つのグリッド行を表示するグリッドシステム内のループに取り組んでいます(ページネーション)。<div id="clear"></div>
MySQL行が3行返されるたび に表示するようにコードをデバッグしようとしましたが、成功しませんでした。
PHP / HTML
<ul class="clean" style="width:940px; height:465px;">
<?php
$result = mysql_query("SELECT * FROM images");
$i=0;
//Begin image loop
while($row = mysql_fetch_array($result)){
//Start counter
$i++;
$n = ($i + 5);
$class = "";
$clear = "";
//Generate classes
if (($i % 3) == 1){
$class = "alpha";
}
if (($i % 3) == 0){
$class = "omega";
}
//Generate list items
if (($n % 6) == 0){?>
<li class="clearfix">
<?php }if (($i % 4) == 0){?>
<div id="clear"></div>
<?php }?>
<div class="grid_4 <?php echo $class;?>">
<p><a href="<?php echo $row["src"];?>" alt="<?php echo $row["alt"];?>">
<img src="<?php echo $row["src"];?>" alt="<?php echo $row["alt"];?>" />
</a><br />
<small class="center"><?php echo $row["excerpt"];?></small></p>
</div>
<?php if (($i % 6) == 0){?>
</li>
<!-- //slide -->
<?php }} //End image loop?>
</ul>
グリッドを設定する方法は、左から右への各グリッド行内alpha
に、最初の要素にomega
割り当てられたクラスと最後の要素に割り当てられたクラスがあります。<div id="clear"></div>
技術的に3つのMySQL行が返されるたびに表示するには、次のように機能する必要があります。
生成されたリストアイテム
<?php
if (($n % 6) == 0){?>
<li class="clearfix">
<?php }if (($i % 4) == 0){?>
<div id="clear"></div>
<?php }?>
しかし、そうではありません。返された6つのグリッド行内で合計18の画像に相当し<div id="clear"></div>
、MySQLの行1〜3と13〜15の後に正常に生成されますが、MySQLの行6〜9の場合、<div id="clear"></div>
MySQLの行6の後に表示され、9の後に表示されます。
これが理にかなっていることを願っています。どんな提案でも大歓迎です。