好吧,我已经花了大约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{它会给我两个id11。显然,我在这里遗漏了一些至关重要的东西。有什么想法吗?
另外,最后,我想把if语句设为>= 10 && <= 20;到目前为止,这似乎还没有起作用,但我猜首先会有其他地方的问题。
发布于 2012-10-26 22:13:55
您正在将$i++递增两次。还有必要使用>=,因为否则将缺少第11行,并且循环将在没有输出的情况下运行($1==11,因此它不小于或大于11),直到记录集结束为止。
while ($row = mysql_fetch_array($sql)) {
if ($i < 11){
// first row
} else {
// second row
}
$i++; //increment
}发布于 2012-10-26 22:13:22
您将在两个if语句中递增$i。当$i为10时,它会递增到11。但是您的第二个if大于11,这意味着$i必须是12,并且$i不会递增。
两个建议:
if's
$i if {} else {}语句发布于 2012-10-26 22:21:16
一点重构可以帮助你更清楚地看到你的代码。
$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语句中有不同之处,最终会使事情变得相当简单。
https://stackoverflow.com/questions/13088545
复制相似问题