Динамические вложенные столбцы?
Я пытаюсь построить динамическую таблицу, в которой столбцы могут быть разделены одним щелчком мыши. Например, если вы нажмете кнопку разделить на столбце 1 в слое 1, столбец 1 будет иметь два дочерних столбца = 2-й слой. Когда вы снова нажмете на кнопку разделить в слое 1, один столбец будет добавлен в слое 2, и так далее, и так далее. Однако теперь я застрял с тем, как определить правильный colspan в зависимости от максимального значения, установленного столбцом с наибольшим количеством дочерних столбцов.
В этом блоке кода я просто загружаю данные из базы данных. Данные передаются из модели в представление, в котором создается таблица.
Что я уже пробовал:
До сих пор это то, что у меня есть:
<table border=1> <tr> <?php $parentcols = array(); $maxcolspan = 0; //loop through parent columns in layer 1 foreach($parentcoldata as $parentkey) { $children = array(); foreach($childcoldata as $childcol) { //check if the current child col is a child of the current parent col if ($childcol->parentcol_id == $parentkey->id) { $curchild = array("childname" => $childcol->name, "layer_id" => $childcol->layer_id); $children[$childcol->id] = $curchild; } } //know number of children of current parent column $childnum = count($children); if ($childnum == 0) {unset($children); echo "Unset";} //set colspan based on column with the highest number of children if ($childnum > $maxcolspan) { $maxcolspan = $childnum; } //save the details about the parent column $parent = array("name" => $parentkey->name, "child" => $childnum, "children" => $children, "id" => $parentkey->id ); } //print row for parent columns - 1st layer for ($i=1; $i<=count($parentcols); $i++) { echo '<th id="parentcol'.$parentcols[$i]['id'].'" colspan='.$parentcols[$i]['child'].' style="padding: 5px">'.$parentcols[$i]['name'].'<br />'. '<a href="">Edit</a> <br />'. '<a href="">Delete</a> <br />'. '<a href="">Split</a>'. '</th>'; } ?> </tr> <?php //this is where i attempt to print the child columns for ($index = 1; $index <= $maxcolspan-1; $index++) { echo "<tr>"; foreach($parentcols as $parentcolid => $value) //$parentcolid = key/id { //loop through children columns foreach($value['children'] as $children => $child) { if ($child['layer_id'] == $index){ echo '<td id="'.$children.'" style="padding:5px">'.$child['childname']. '<a href="">Edit</a> <br />'. '<a href="">Delete</a> <br />'. '<a href="" parent-id="someparentid">Split</a>' .'</td>'; } } } echo "</tr>"; } ?> </table>
Но с этим кодом дочерние столбцы (3-й слой) дочерних столбцов во 2-м слое больше не включаются.
Я застрял и не знаю, чего мне не хватает.
Структура таблицы:
столбцы[^]