php - 将列表分成三列

标签 php mysql list loops divide

我有要从数据库中获取的值列表。列表可能很长,所以如果它有超过 15 个项目,我想分成两列,如果超过 30 个,我想分成三列。我怎样才能把它分成 3 列。例如..

01 | 12 | 23

02 | 13 | 24

03 | 14 | 25

04 | 15 | 26

05 | 16 | 27

06 | 17 | 28

07 | 18 | 29

08 | 19 | 30

09 | 20 | 31

10 | 21 |

11 | 22 |

现在我正在使用表,它在每个循环的开头都有巨大的 if-nest

    $result = mysql_query("SELECT namecount FROM table WHERE name='$myvar'");

        if (!$result)
            echo 'MySQL Error: ' . mysql_error();
        else
        {
            while ($row = mysql_fetch_array($result))
            {
                $namecount= $row['namecount'];
                for($i=1;$i<=$namecount;$i++)
                {
                    if($namecount>15)
                    {
                        if($i==1)
                            echo "\n<table><tr><td width=\"200px\">";
                            
                        if($namecount%2==0)
                        {
                            if($i==$namecount/2)
                                echo "</td>\n<td>"; 
                        }
                        else
                        {
                            if($i==($sailiot+3)/2)
                                echo "</td>\n<td>";
                        }
                    }

                //Print content here
                
                if($namecount>15)
                    {
                        if($namecount%2!=0 && $i==$namecount)
                            echo "<h3>&nbsp;</h3><p>&nbsp;<br>&nbsp;</p>"; //if last item and count is odd, print empty item
                            
                        if($i==$namecount)
                            echo "\n</td></tr></table>\n";                  
                    }
                }
            }
        }

这(有点)适用于两列,但三列呢?

最佳答案

我会提取 <tr>, </tr>在内循环之外,这节省了额外的if秒。为了拆分成多个列,您可以计算列中的项目数并引入第二个列内变量来跟踪:

while ($row = mysql_fetch_array($result)) {
    $namecount = $row['namecount'];

    // calculate items per column
    $columns = 1;
    if ($namecount > 15)
        $columns = 2;

    if ($namecount > 30)
        $columns = 3;

    $items = $namecount / $columns;
    if ($namecount % $columns > 0)
        ++$items;

    echo "\n<table><tr><td width=\"200px\">";
    for ($i = 1, $j = 1; $i <= $namecount; $i++, $j++) {
        if ($j > $items) {
            echo "</td>\n<td>";
            $j = 1; // reset for new column
        }

        // Print content here
    }

    if ($namecount % 2 != 0) {
         // if count is odd, print empty item
        echo "<h3>&nbsp;</h3><p>&nbsp;<br>&nbsp;</p>";
    }

    echo "\n</td></tr></table>\n";
}

关于php - 将列表分成三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413122/

相关文章:

javascript - 如何将 google 登录集成到我的网站并收集用户详细信息?

php - 如何在 Windows 上使用命令行访问 PHP?

mysql - 我在 Mac : I found htdocs, 上安装了 XAMPP,在本地主机 Web 浏览器中的哪里可以找到这些文件夹?

php - 如何通过合并两个表返回多行

Python pandas将列表插入单元格

php - 使用 php 循环减少数据库的多个列和行中的值

php - 结帐 woocommerce wordpress 中的简短说明

mysql - 想要在 spring mvc 3 中为我的登录表单使用 session 变量

从列表中删除重复的元素

c# - List<string[]> 通过 Linq 确定最大长度