0

好吧,我已经搞砸了大约 6 个小时,但我无法让它正常工作。我确定这只是我在做的一些愚蠢的事情,也许你们的新鲜眼睛可以指出这一点。

$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{ 然后给我两个 id 11s。显然我在这里遗漏了一些重要的东西。有任何想法吗?

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

4

3 回答 3

2

$i在两个if语句中都在递增。什么时候$i是 10,它增加到 11。但是你的第二if个大于 11,这意味着它$i必须是 12,并且没有任何地方$i增加。

两个建议:

  1. 增加$i外部if
  2. if {} else {}声明
于 2012-10-26T14:13:22.290 回答
0

你增加$i++了两次。它也是必要的,>=因为否则您将丢失第 11 行,并且循环将在没有输出的情况下运行 ( $1==11,因此它不小于或大于 11),直到记录集结束。

while ($row = mysql_fetch_array($sql)) {
    if ($i < 11){
        // first row
    } else {
        // second row
    }
    $i++; //increment
}
于 2012-10-26T14:13:54.503 回答
0

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

$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 语句中存在差异最终会大大简化事情。

于 2012-10-26T14:21:15.563 回答