Asistencia en la visualización de datos en la columna PHP MySQL (Traversal de árbol de preorden modificado)

StackOverflow https://stackoverflow.com/questions/3323626

Pregunta

Hola, estoy tratando de obtener una pantalla multicolumna (si se puede llamar así) con el código a continuación, aquí es el resultado:  alt text .¿Alguien puede ver por qué estas hojas están rotas?O dígame, por favor, cuál es mejor: una tabla de categorías vinculada a una subcatería, o una lista de modelos de adyacencia.

 $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;

Versión serializada texto de enlace

¿Fue útil?

Solución

reemplazar

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; //
  }

} 

por

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>';
  }

} 

Esto comenzará a nuevas columnas solo cuando comiencen los nuevos titulares.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top