【问题标题】:show mysql result using php while loop without table使用没有表的 php while 循环显示 mysql 结果
【发布时间】:2012-01-03 00:44:01
【问题描述】:

我用这段代码列出了 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>

这是不正确的。每个&lt;ul&gt; 应该包含4 个&lt;li&gt;

更新: 我更改了 $c = 0 并删除了顶部 &lt;ul&gt; 现在可以工作了!

【问题讨论】:

    标签: php mysql list loops


    【解决方案1】:

    在开头设置$c = 0。循环往往是从零开始的——而您对模的使用需要这样做。

    您的代码也很难阅读。也许考虑运算符和缩进块之间的空格?

    【讨论】:

    • 对不起,我还是不明白你想要什么。您能否发布您想要的 HTML 输出?
    • 我发现了问题!在 TOP
      no working 之后删除
        。谢谢
    【解决方案2】:

    问题是您的 $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++ 被移动到循环体的末尾)

    【讨论】:

    • 我忘了把&lt;div&gt;&lt;ul&gt;放在最前面!所以你的代码不适用于 4 &lt;UL&gt; &lt;/UL&gt; in each
        ` 4 li &lt;/UL&gt;
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多