Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得相等的列?_Javascript_Php_Html_Css - Fatal编程技术网

Javascript 如何获得相等的列?

Javascript 如何获得相等的列?,javascript,php,html,css,Javascript,Php,Html,Css,我有一个megamenu类,用于电子商务web应用程序的类别菜单 class categories { var $categorie; var $tabs; var $subcategorie; var $website; var $coloane = 3; var $randuri = 10; function tabs(){ global $pdoconnect; $stmt = $pdoc

我有一个megamenu类,用于电子商务web应用程序的类别菜单

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;
    }
}
类别{
var$分类;
var$tabs;
var$子类别;
var$网站;
var$路环=3;
var$randuri=10;
函数选项卡(){
全球$pdoconnect;
$stmt=$pdoconnect->query(“从taburi中选择*,其中vizibil='1'ORDER BY ordine ASC”);
$tabs=$stmt->fetchAll(PDO::FETCH_ASSOC);
$tabs_c=$stmt->rowCount();
$return=“”;
如果($tabs_c>0){
$i=1;
$return.=“\n
    \n”; foreach($t){ $return.=“\t
  • \n”; $return.=“\t\t\n”; $return.=“\t\t\n”; $return.=“\t\t\t.'website./media/taburi/'。$t['logo'].“/>.”“\n”; $return.=“\t\t\n”; $return.=$t['nume']; $return.=“\t\t\n”; $return.=“\t”。“\n”; $return.=$this->categorie($t['id']); $return.=“\t\n”; $return.=“\t
  • \n”; } $return.=“
”; } return$return; } 功能分类($tab){ 全球$pdoconnect; $return=“”; $stmt=$pdoconnect->prepare(“从categorii中选择*,其中tab=:tab和vizibil='1'); $stmt->bindValue(':tab',$tab,PDO::PARAM_INT); $stmt->execute(); $categorie=$stmt->fetchAll(PDO::FETCH_ASSOC); $categorie_c=$stmt->rowCount(); 如果($categorie_c>0){ $i=0; $return.=“\n”; foreach($分类为$cat){ $return.=“\t\n”; //如果($i%2==0&&!空($i)&&$this->countSubcategorii($cat['categorie'])randuri){ //$return.=“\n”; // } $return.=“\t\t\t.”“\n”; } } return$return; } }
目前,菜单项如下所示

但预期的结果应该是


仅使用php如何获得此结果?

我怀疑问题有两个方面,即样式和HTML标记

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

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

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;

}
功能分类($tab){
全球$pdoconnect;
$return=“”;
$stmt=$pdoconnect->prepare(“从categorii中选择*,其中tab=:tab和vizibil='1');
$stmt->bindValue(':tab',$tab,PDO::PARAM_INT);
$stmt->execute();
$categorie=$stmt->fetchAll(PDO::FETCH_ASSOC);
$categorie_c=$stmt->rowCount();
$return.=“\n”;
如果($categorie_c>0){
$i=1;
$return.=“\t\n”;
foreach($分类为$cat){
如果($i%3==0&&!空($i)&&$this->countSubcategorii($cat['categorie'])randuri){
$return.=“\n”;
}否则如果($i%3==0&&!空($i)&$this->countCategorii($tab)>=$this->coloane){
$return.=“\n”;
}如果($i%2==0&&$this->countCategorii($tab)==2),则为else{
$return.=“\n”;
}
$return.=“\t\t\t”。$cat['categorie']”“\n”;
$return.=$this->subcategories($cat['categorie']);
$i++;
}
$return.=“”;
}
$return.=“”;
return$return;
}

这真的不是一个CSS问题吗?不是的,我需要用phpAnd来做这件事,这条评论告诉我,在实际编码任何东西之前,你应该读很多书,年轻的学徒^^^你可以在数组上使用php中的count函数(),然后除以三(如果你有三列),但这在CSS中更像一层。