首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果介于int和int之间,则显示行

问如果介于int和int之间,则显示行
EN

Stack Overflow用户
提问于 2012-10-26 22:09:39
回答 3查看 122关注 0票数 0

好吧,我已经花了大约6个小时来处理这件事,我就是不能让它正常工作。我确定这只是我在做的傻事,也许你们的新眼睛能指出。

代码语言:javascript
复制
$i = 0;
$sql = mysql_query("SELECT type, info, url FROM alerts WHERE username = '$user_logged_in' ORDER BY id ASC LIMIT 40");
$div_grid = '<div style="float:left;">';


while ($row = mysql_fetch_array($sql))
{
    if ($i < 11){
    $display = '<a href="' . $row['info'] . '"><div class="' . $row['type'] . "_alert" . '" style="float:left; margin-left:-22px;"></div></a>';


    $div_grid .='<div style="float:left;">' . $display . '</div>';
    $i++;
    } 
    if ($i > 11){
        $display = '<a href="' . $row['info'] . '"><div class="' . $row['type'] . "_alert" . '" style="float:left; margin-left:-22px; margin-top:14px;"></div></a>';


    $div_grid .='<div style="float:left;">' . $display . '</div>';
    $i++;
    }

}
$div_grid .= '</div>';

echo $div_grid;

由于某种原因,我得到了这些div输出的整个第一行,但是第二行没有出来。除非我设置了$i >= 11{它会给我两个id11。显然,我在这里遗漏了一些至关重要的东西。有什么想法吗?

另外,最后,我想把if语句设为>= 10 && <= 20;到目前为止,这似乎还没有起作用,但我猜首先会有其他地方的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-26 22:13:55

您正在将$i++递增两次。还有必要使用>=,因为否则将缺少第11行,并且循环将在没有输出的情况下运行($1==11,因此它不小于或大于11),直到记录集结束为止。

代码语言:javascript
复制
while ($row = mysql_fetch_array($sql)) {
    if ($i < 11){
        // first row
    } else {
        // second row
    }
    $i++; //increment
}
票数 0
EN

Stack Overflow用户

发布于 2012-10-26 22:13:22

您将在两个if语句中递增$i。当$i为10时,它会递增到11。但是您的第二个if大于11,这意味着$i必须是12,并且$i不会递增。

两个建议:

if's

  • do外部的
  1. increment $i if {} else {}语句
票数 2
EN

Stack Overflow用户

发布于 2012-10-26 22:21:16

一点重构可以帮助你更清楚地看到你的代码。

代码语言:javascript
复制
$i = 0;
$sql = mysql_query("SELECT type, info, url FROM alerts WHERE username = '$user_logged_in' ORDER BY id ASC LIMIT 40");
$div_grid = '<div style="float:left;">';

while ($row = mysql_fetch_array($sql))
{
    $displayStyle = 'float:left; margin-left:-22px;';

    if ($i > 11) $displayStyle .= ' margin-top:14px;';

    $display = '<a href="' . $row['info'] . '"><div class="' . $row['type'] . "_alert" . '" style="' . $displayStyle . '"></div></a>';
    $div_grid .='<div style="float:left;">' . $display . '</div>';
    $i++;

}

$div_grid .= '</div>';

echo $div_grid;

if/elseif if块中的大部分代码都是重复的。把相似之处提取出来,只在if语句中有不同之处,最终会使事情变得相当简单。

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

https://stackoverflow.com/questions/13088545

复制
相关文章

相似问题

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