首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MySQL循环中的问题

PHP/MySQL循环中的问题
EN

Stack Overflow用户
提问于 2012-07-24 19:42:51
回答 2查看 349关注 0票数 0

我正在网格系统中处理一个循环,它一次显示2行3幅内联图像(分页)。在每3个返回的<div id="clear"></div>行之后,我一直试图调试我的代码以显示MySQL,但没有成功。

PHP/

代码语言:javascript
复制
<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类。为了在技术上每3次返回<div id="clear"></div>行之后显示MySQL,这应该是可行的:

生成的列表项

代码语言:javascript
复制
<?php 
if (($n % 6) == 0){?>

<li class="clearfix"> 
<?php }if (($i % 4) == 0){?>
  <div id="clear"></div>
<?php }?> 

但是没有。在6个返回的网格行中,等于18个总图像,它在MySQL第1-3行和13-15行之后生成MySQL,但是对于MySQL行6-9,<div id="clear"></div>显示在MySQL第6行之后,它应该在9之后显示。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-24 20:26:19

看看这样的事对你有用吗。

代码语言:javascript
复制
<?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
}
?>
票数 1
EN

Stack Overflow用户

发布于 2012-07-24 19:55:36

好吧,所以我认为这和你的if (($i % 4) == 0)声明有关。您应该使用3的模数,而不是4的模数。<div id="clear"></div> --这将在第一行给出一个

为了防止这种情况,你可以说:

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

试一试,让我知道它是否适合你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11638175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档