【问题标题】:Populate a dynamic Table from two arrays从两个数组填充动态表
【发布时间】:2014-02-20 11:10:20
【问题描述】:

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

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

让我更清楚地说明这一点

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

【问题讨论】:

  • 你想做什么?我认为您应该使用 id 来识别每条记录
  • 我是用列名来标识列
  • @KevinKaburu 你能解释一下你是想从数组中填充 gridView 还是想填充其他东西?

标签: php html arrays yii dynamic-tables


【解决方案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
)); ?>

【讨论】:

  • 我现在已经编辑了我的问题......我喜欢你的想法,但我还没有使用 CgridViews
【解决方案2】:

参考这个链接:

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>

【讨论】:

  • 在我的情况下,我更喜欢具有 foreach 和迭代的东西。
  • Yii 已经有了创建选项。没关系。让我更新我的答案。
  • 我的列也不是静态的,这意味着我无法预先确定列的数量。
【解决方案3】:

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

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>`

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2015-08-15
    • 2012-02-09
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多