Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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
帮助在colunm PHP MySQL(修改的预排序树Trasversal)中显示数据_Php_Mysql_Adjacency List Model_Modified Preorder Tree T - Fatal编程技术网

帮助在colunm PHP MySQL(修改的预排序树Trasversal)中显示数据

帮助在colunm PHP MySQL(修改的预排序树Trasversal)中显示数据,php,mysql,adjacency-list-model,modified-preorder-tree-t,Php,Mysql,Adjacency List Model,Modified Preorder Tree T,您好,我正在尝试使用下面的代码获得一个多列显示(如果可以这样称呼的话),结果如下: . 有人能明白为什么这些叶子会断了吗?或者请告诉我哪一个更好:链接到子类别的类别表,还是邻接模型列表 $stmt = $conn->prepare("SELECT node.idCat_ad ,node.".$cat_name.",(COUNT(parent.".$cat_name.") - 1) AS depth FROM cat_ad AS node

您好,我正在尝试使用下面的代码获得一个多列显示(如果可以这样称呼的话),结果如下: . 有人能明白为什么这些叶子会断了吗?或者请告诉我哪一个更好:链接到子类别的类别表,还是邻接模型列表

 $stmt = $conn->prepare("SELECT  node.idCat_ad ,node.".$cat_name.",(COUNT(parent.".$cat_name.") - 1) AS depth 
                       FROM cat_ad AS node 
                       CROSS JOIN cat_ad AS parent 
                       WHERE node.left_node BETWEEN parent.left_node AND parent.right_node
                       GROUP BY node.idCat_ad
                       ORDER BY node.left_node"); 

$stmt->execute();
$treeArray = $stmt->fetchAll();
?>

<div class="column_in_categories">
<div class="menucategories"><ul>

<?php
$x = 0; //counter
$num_cols = 3; //3 colums
$num_rows = count($resTree); //num columns

$result = ''; 

$newArray =array_slice($resTree,1); //removing the root tree

foreach ($newArray as $currNode) { 

   if ($currNode['depth'] ==1) { //no links in root

     $result .= '<li class="header '.$classSprites.'">' . $currNode[$cat_name] . '</li>';

  } else{ //if child, we put a link

   $result .= '<li class="subcat"><a href="#">' . $currNode[$cat_name] . '</a></li>';
  }

 $x++; // incrementing da counter

 if ($x == ceil($num_rows / $num_cols)) { //if a colunm, we clause it and begin another

   $result .= '</ul></div> <div class="menucategories"><ul><li style="display:none;">&nbsp;</li>';
   $x=0; //
  }

} 
$result .="</ul></div>";
print $result;
$stmt=$conn->prepare(“选择node.idCat_ad,node.”.$cat_name.,(计数(父项.$cat_name.)-1)作为深度
从cat_ad AS节点
交叉连接cat_ad作为父级
其中node.left\u节点位于parent.left\u节点和parent.right\u节点之间
按节点分组。idCat_ad
按节点排序。左_节点“);
$stmt->execute();
$trearray=$stmt->fetchAll();
?>
    替换

    foreach ($newArray as $currNode) { 
    
       if ($currNode['depth'] ==1) { //no links in root
    
         $result .= '<li class="header '.$classSprites.'">' . $currNode[$cat_name] . '</li>';
    
      } else{ //if child, we put a link
    
       $result .= '<li class="subcat"><a href="#">' . $currNode[$cat_name] . '</a></li>';
      }
    
     $x++; // incrementing da counter
    
     if ($x == ceil($num_rows / $num_cols)) { //if a colunm, we clause it and begin another
    
       $result .= '</ul></div> <div class="menucategories"><ul><li style="display:none;">&nbsp;</li>';
       $x=0; //
      }
    
    } 
    
    foreach($newArray作为$currNode){
    如果($currNode['depth']==1){//root中没有链接
    $result.='
  • ”.$currNode[$cat_name]。
  • ; }否则{//如果是child,我们就放一个链接 $result.='
  • ; } $x++;//递增da计数器 如果($x==ceil($num_rows/$num_cols)){//如果是一个colunm,我们将它子句化并开始另一个colunm $result.='
  • ”; $x=0// } }
  • foreach($newArray作为$currNode){
    $x++;//递增da计数器
    如果($x>=ceil($num_rows/$num_cols)和$currNode['depth']==1){//如果是一个colunm,我们将它子句化并开始另一个colunm
    $result.='
  • ”; $x=0// } 如果($currNode['depth']==1){//root中没有链接 $result.='
  • ”.$currNode[$cat_name]。
  • ; }否则{//如果是child,我们就放一个链接 $result.='
  • ; } }

    这将仅在新标题开始时才开始新列

    有没有可能您可以提供一个序列化版本的
    $resTree
    ,这样我就可以试着为这个问题找到一个解决方案?@Lucanos,我上传了序列化版本。在上面的代码下面找到它谢谢你的时间。事实上,新的阵营只有在新的头条新闻之后才会出现。现在出现了一个新的问题:如果$num_cols设置为3,那么我将得到2列,如果它等于[1]∞]-{3} :),我得到一列。
    foreach ($newArray as $currNode) { 
    
     $x++; // incrementing da counter
    
     if ($x >= ceil($num_rows / $num_cols) and $currNode['depth'] ==1) { //if a colunm, we clause it and begin another
    
       $result .= '</ul></div> <div class="menucategories"><ul><li style="display:none;">&nbsp;</li>';
       $x=0; //
      }
    
       if ($currNode['depth'] ==1) { //no links in root
    
         $result .= '<li class="header '.$classSprites.'">' . $currNode[$cat_name] . '</li>';
    
      } else{ //if child, we put a link
    
       $result .= '<li class="subcat"><a href="#">' . $currNode[$cat_name] . '</a></li>';
      }
    
    }