1

我已经构建了以下函数,但是是否可以让它将我的列表从一个拆分为多个,这样我每个最多可以有 8<li><ul>

function buildProductsMenu($base) {

    $sql = "SELECT *
            FROM tbl_category";
    $result     = dbQuery($sql);
    while ($row = dbFetchAssoc($result)) {
    echo "<ul>";        
        echo "<li class='title'>$row[cat_name]</li>";
            $sqlProd = "SELECT *
                FROM tbl_product WHERE cat_id = $row[cat_id]";
            $resultProd     = dbQuery($sqlProd);
            while ($rowProd = dbFetchAssoc($resultProd)) {
                extract($rowProd);
                echo "<li><a href='".$base."products/".strtolower($row['cat_name'])."/".strtolower($pd_name)."'>".$pd_name."</a></li>";
            }       
    echo "</ul>";               
    }
}

与 jurgemaister 解决方案一起去

function buildProductsMenu($base) {

    $sql = "SELECT *
            FROM tbl_category";
    $result     = dbQuery($sql);
    while ($row = dbFetchAssoc($result)) {
        echo "<ul>";        
        echo "<li class='title'>$row[cat_name]</li>";
        $sqlProd = "SELECT * FROM tbl_product WHERE cat_id = $row[cat_id]";
        $resultProd     = dbQuery($sqlProd);
        $counter = 1;
        while ($rowProd = dbFetchAssoc($resultProd)) {
            extract($rowProd);
            if($counter % 12 == 0) {
                $counter = 1;
                echo "</ul><ul style='margin-top:25px;'>";
            }
            echo "<li><a href='".$base."products/".strtolower($row['cat_name'])."/".strtolower($pd_name)."'>".$pd_name."</a></li>";
            $counter++;
        }
        echo "</ul>";
    }
}
4

2 回答 2

1

好的,与其直接从函数中回显 LI,我建议您将它们全部添加到数组中,一旦将事物放入数组中,它总是更易于管理。

在最终的 LI 数组上使用array_chunk(),它将把它分成八组。

于 2012-07-03T09:57:39.953 回答
1

您可以添加一个计数器,当该计数器达到 8 时,您开始一个新的ul.

$counter = 1;
while ($rowProd = dbFetchAssoc($resultProd)) {
    extract($rowProd);

    if($counter % 8 == 0) {
        $counter = 1;
        echo "</ul><ul>";
    }

    echo "<li><a href='".$base."products/".strtolower($row['cat_name'])."/".strtolower($pd_name)."'>".$pd_name."</a></li>";
    counter++;
} 
于 2012-07-03T10:00:07.100 回答