我使用以下代码列出4横向<UL>
和<li>
的mysql结果:
echo"<div>";
$c = 1; // change to $c = 0
$media = mysql_query("SELECT * FROM " . "$prefix" . "screen where id=\"$id\" order by id desc limit 16");
while ($cms = mysql_fetch_assoc($media)) {
if (!($c%4)) echo ($c!=0 ? "</ul>" : "")."<ul>";
echo "<li><a href=\"#\"><img src=\"#\"></a></li>\n";
$c++;
}
echo "</ul></div>\n";
for ($cnt=$c;$cnt%4>0;$cnt++);
以上代码的HTML输出是:
<UL>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
<li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
<li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
这是不正确的。每个<ul>
应包含4个<li>
。
更新:
我更改了$ c = 0并删除了顶部<ul>
现在已经工作了!
答案 0 :(得分:0)
在开头设置$c = 0
。循环往往是从零开始的 - 你使用模数需要这个。
您的代码也很难阅读。也许考虑运算符和缩进块之间的空格?
答案 1 :(得分:0)
问题是你的$ c = 1在顶部。由于这首先是1,所以它只打印3个(1 + 1 + 1 + 1 = 4,4%4 = 0)然后计数为零,现在将打印4。 这个小修复应该可以解决问题。
$c = 0;
$media = mysql_query("SELECT * FROM " . "$config_ccms_prefix" . "screen where id=\"$id\" order by id desc limit 16");
while ($cms = mysql_fetch_assoc($media)) {
if (!($c % 4))
echo "<ul>";
echo "<li><a href=\"#\"><img src=\"#\"></a></li>\n";
if(!($c++ % 4))
echo "</ul>";
}
echo "</div>\n";
for ($cnt = $c; $cnt % 4 > 0; $cnt++);
(注意$ c在开始时设置为0,echo和$ c ++移动到循环体的末尾)