kmllev Ответов: 0

Динамические вложенные столбцы?


Я пытаюсь построить динамическую таблицу, в которой столбцы могут быть разделены одним щелчком мыши. Например, если вы нажмете кнопку разделить на столбце 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-м слое больше не включаются.

Я застрял и не знаю, чего мне не хватает.

Структура таблицы:
столбцы[^]

0 Ответов