php - PHP/MySQL 循环问题

标签 php mysql grid-system

我正在网格系统中开发一个循环,该系统一次显示 2 个网格行,每行 3 个内嵌图像(分页)。我一直在尝试调试我的代码以显示 <div id="clear"></div>每 3 行返回 MySQL 行后,但尚未成功。

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类(class)分配到最后。为了显示<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 行之后。

我希望这是有道理的,任何建议将不胜感激。

最佳答案

看看这样的东西是否适合你。

<?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
}
?>

关于php - PHP/MySQL 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638175/

相关文章:

php - Wamp - 新安装后我无法登录 phpmyadmin #2002

php - 如何将 sql 计数值放在变量上?

javascript - 如何从ajax获取表单ID并在symfony2的点击功能中设置它

php - 在数据库中上下移动行

php - 使用时间过滤数据库查询

MySQL实现表到数据库

css - 如何使用无语义的 css 框架使 div 跨度为页面长度的 100%?

php - 消息和视频共享youtube php

javascript - Bootstrap 4 网格系统错误

css - Div 未使用 css 网格正确对齐