从两个数组填充动态表

时间:2014-02-20 11:10:21

标签: php html arrays yii dynamic-tables

第一个数组包含标题,另一个数组包含要填充的数据。我能够创建标题但我在根据标题填充数据时遇到问题。

$columns =([0]=>firstname, [1]=>lastname, [2]=>class);

和数据。

$data=(
array[0](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1) 
array[1](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1)
array[2](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1)
array[3](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1))

让我说清楚

问题是我有两个表,第一个有列,而另一个有记录,外键指向它们所属的列。列不断变化,因此非常动态。我想把这些数据放到一张表中...... 给我可用的选项。

3 个答案:

答案 0 :(得分:1)

参考此链接:

http://www.yiiplayground.com/index.php?r=UiModule/dataview/gridViewArray

您可以使用CArrayDataProvider创建gridview。

此链接包含与您的要求完全匹配的示例代码。

不使用Yii方法:

<table>
<thead>
<tr>
<?php
  foreach($columns  as $s)
  {
     echo "<th>$s</th>";
   }
?>
</tr>
<tbody>
<?php
  foreach($data as $d)
  {
     echo "<tr>";
     foreach($d as $cols)
       echo "<td>".$cols."</td>";// hope all columns are present in second array.
     echo "</tr>";
  }
?>
</tbody>
</table>

答案 1 :(得分:1)

在数据声明后插入:

$dataProvider = new CArrayDataProvider($data, array(
    //CDataProvider options, sort, etc..
));

更改渲染调用以包括将dataProvider传递给视图:

$this->render('view', array(
    'dataProvider' => $dataProvider,
));

在视图中:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    // other CGridView options
)); ?>

答案 2 :(得分:1)

最后我设法解决了这个问题....这是我的代码

action.php的

`

$recdata = $sql->showuploadedrecords($evntid);
        $coldata =$sql->showuploadedcols($evntid);
        $colmns = array();
        foreach ($coldata as $ky => $valu) {
            $colname = $valu['column_name'];
            $colmns[] = $colname;
        }


        $records = array();
        $total = count($recdata)/count($colmns);
        for ($i = 1; $i < $total +1; $i++) {
             $one =array();
            foreach ($recdata as $k => $v) {

                if($v['relate_records']==$i){
                   $one[]=$v;

                }

            }
             $records[] = $one;


        }



        $this->render('ViewUploaded', array('colmns' => $colmns,
            'data' => $records));
    }`

在我的观点上:

`echo '<tr role="row">';
            foreach ($colmns as $value) {
                echo '<th  class="sorting_asc" role="columnheader" tabindex="0" aria-controls="DataTables_Table_2" rowspan="1" colspan="1" style="width: 219px;" aria-sort="ascending" aria-label="Rendering engine: activate to sort column descending">'. $value . '</th>';   

            }
            echo '</tr>';
            ?>

                    </thead>



            <?php

                       foreach ($data as $key => $v) {
                            echo '<tr>'; 

                          for ($k = 0; $k < count($colmns); $k++) {

                       foreach ($v as $cell) {

                           if($cell['column_name']== $colmns[$k]){

                           echo'<td>'.$cell['item'].'</td>';

                           }
                       }

                       }

                        echo '</tr>'; 


                       }



          ?>







                        </tbody>

                 </table>`