0

一度に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の後に表示されます。

これが理にかなっていることを願っています。どんな提案でも大歓迎です。

4

2 に答える 2

1

if (($i % 4) == 0)さて、それはあなたの発言と関係があると思います。モジュラスは4ではなく3で使用する必要があります。これにより<div id="clear"></div>、最初の行にaが表示されます。

それを防ぐために、あなたは言うことができます:

if ((($i % 3) == 0) && $i != 0)

それを試してみてください、それがあなたのために働くかどうか私に知らせてください!

于 2012-07-24T19:55:36.727 に答える
1

このようなものがあなたのために働くかどうか見てください。

<?php
$i = 1;
$result = mysql_query("SELECT * FROM images");

$max_count = mysql_num_rows($result);

if($max_count > 0)
{
?>
<ul>
<?php
while($row = mysql_fetch_array($result)) {
    if($i % 3 == 1) {
        $class = 'alpha';
    } elseif($i % 3 == 0) {
        $class = 'omega';
    } else {
        $class = ''; //Do NOT carry through the loops
    }

    if($i % 6 == 1 || $i == 1) {
?>
    <li>
<?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 % 3 == 0) {
?>
        <div class='clear'>&nbsp;</div>
<?php
    }

    if($i % 6 == 0 || $i == $max_count) {
?>
    </li>
<?php
    }

    $i++; //Move Row Count Along
}
?>
</ul>
<?php
}
?>
于 2012-07-24T20:26:19.937 に答える