如何获得相等的列?

时间:2015-12-27 22:42:23

标签: javascript php html css

我有一个类用于电子商务Web应用程序的类别菜单中的megamenu。

class categories {

    var $categorie;
    var $tabs;
    var $subcategorie;
    var $website;

    var $coloane = 3;
    var $randuri = 10;


    function tabs(){

        global $pdoconnect;

        $stmt =  $pdoconnect->query("SELECT * FROM taburi WHERE vizibil = '1' ORDER BY ordine ASC");
        $tabs = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $tabs_c = $stmt->rowCount();

        $return = "";
        if($tabs_c > 0){
            $i = 1;
            $return .= "\n<ul class=\"tabs\">\n";
            foreach($tabs as $t){
                $return .= "\t<li class=\"level0\">\n";
                $return .= "\t\t<div class=\"tab-title\">\n";
                $return .= "\t\t\t<span class=\"tab-image\">\n";
                $return .= "\t\t\t\t".'<img src="'.$this->website.'/media/taburi/'.$t['logo'].'" />'."\n";
                $return .= "\t\t\t</span>\n";
                $return .= $t['nume'];
                $return .= "\t\t</div>\n";
                $return .= "\t".'<div class="level1 hmm-megamenu-box">'."\n";
                $return .= $this->categorie($t['id']);
                $return .= "\t</div>\n";
                $return .= "\t</li>\n";
            }
            $return .= "</ul>";
        }
        return  $return;
    }

    function categorie($tab){
        global $pdoconnect;

        $return = "";
        $stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE tab =:tab AND vizibil='1'");
        $stmt->bindValue(':tab', $tab, PDO::PARAM_INT);
        $stmt->execute();

        $categorie   = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $categorie_c = $stmt->rowCount();

        if($categorie_c > 0){
            $i = 0;
            $return .= "<div class=\"hmm-megamenu-block\">\n";
            foreach ($categorie as $cat) {
                $return .= "\t<div class=\"hmm-megamenu-column\">\n";
                // if($i % 2 == 0 && !empty($i) && $this->countSubcategorii($cat['categorie']) <= $this->randuri){
                //  $return .= "</div><div class=\"hmm-megamenu-column\">\n";
                // }
                $return .= "\t\t\t<a class=\"head-list\">".$cat['categorie']."<i class=\"fa fa-chevron-right\" style=\"font-size: 8px; margin-left: 5px;\"></i></a>\n";
                $return .= $this->subcategorie($cat['categorie']);
                $return .= "\t\t</div>\n";
                $i++;
            }

            $return .= "</div>";

        }
        return $return;

    }


    function subcategorie($cat){
        global $pdoconnect;

        $return = "";
        $stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE categorie=:categorie AND subcategorie IS NOT NULL");
        $stmt->bindValue(':categorie', $cat, PDO::PARAM_STR);
        $stmt->execute();

        $subcategorie = $stmt->fetchAll(PDO::FETCH_ASSOC);

        $subcategorie_c = $stmt->rowCount();

        if($subcategorie_c > 0){
            foreach ($subcategorie as $scat) {
                $return .= "\t".'<a href="'.$this->website.'/c/'.strtolower($scat['seo']).'">'.$scat['subcategorie'].'</a>'."\n";
            }
        }
        return $return;
    }
}

目前菜单项看起来像这样

enter image description here

但是期望的结果应该是

enter image description here

我怎样才能用php获得这个结果?

2 个答案:

答案 0 :(得分:1)

我怀疑问题在样式和HTML标记中都是双重的。

从样式角度来看,您当前的布局或多或少是一个网格。你需要在CSS中使用更多流畅的东西。

为了实现这一点,您可能需要预先计算列,以便您知道自己将X组中的Y个项均匀分布到3列中。这使您可以处理一个组可能拥有的项目数超出菜单高度(并且需要溢出)的情况​​。

答案 1 :(得分:0)

解决

function categorie($tab){
    global $pdoconnect;

    $return = "";
    $stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE tab =:tab AND vizibil='1'");
    $stmt->bindValue(':tab', $tab, PDO::PARAM_INT);
    $stmt->execute();

    $categorie   = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $categorie_c = $stmt->rowCount();
    $return     .= "<div class=\"hmm-megamenu-block\">\n";
    if($categorie_c > 0){
        $i = 1;
        $return .= "\t<div class=\"hmm-megamenu-column\">\n";
        foreach ($categorie as $cat) {
            if($i % 3 == 0 && !empty($i) && $this->countSubcategorii($cat['categorie']) <= $this->randuri){
                $return .= "</div><div class=\"hmm-megamenu-column\">\n";
            }else if($i % 3 == 0 && !empty($i) && $this->countCategorii($tab) >= $this->coloane){
                $return .= "</div><div class=\"hmm-megamenu-column\">\n";
            }else if($i % 2== 0 && $this->countCategorii($tab) == 2){
                $return .= "</div><div class=\"hmm-megamenu-column\">\n";
            }
            $return .= "\t\t\t<a class=\"head-list\">".$cat['categorie']."<i class=\"fa fa-chevron-right\" style=\"font-size: 8px; margin-left: 5px;\"></i></a>\n";
            $return .= $this->subcategorie($cat['categorie']);
            $i++;

        }

        $return .= "</div>";


    }
    $return .= "</div>";
    return $return;

}