2014-02-20 3 views
1

Первый массив содержит заголовки, а другой массив содержит данные для заполнения. Я могу создать заголовки, но у меня возникают проблемы с заполнением данных в соответствии с заголовками.Заполнение динамической таблицы из двух массивов

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

Позвольте мне сделать это более ясным

Дело в том, что у меня есть две таблицы первый имеет столбцы, а другой содержит записи с внешнего ключа, указывающей на колонку, в которой они принадлежат , Колонки продолжают меняться, поэтому они чрезвычайно динамичны. Я хочу опубликовать эти данные в таблицу ... дайте мне доступные варианты.

+1

Что вы пытаетесь сделать? Я думаю, вы должны использовать идентификатор для идентификации каждой записи. – user3004356

+0

. Я использую имя столбца, чтобы идентифицировать столбец –

+0

. Могу ли я спросить, почему колонки будут меняться? Можете ли вы использовать модель? –

ответ

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

см ссылку:

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

Вы можете создать GridView с использованием CArrayDataProvider.

Эта ссылка cotain пример кода, который точно соответствует вашему требованию.

без использования метода 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> 
+0

Я бы предпочел что-то, что имеет foreach и для itaration в моем случае. –

+0

У Yii уже есть возможность создать. Все нормально. Позвольте мне уточнить свой ответ. –

+0

Мои colmns не статичны ни, что означает, что я не могу определить количество колмсов. –

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 
)); ?> 
+0

Я сейчас редактировал свой вопрос ... Мне нравится ваша идея, но я еще не работал с CgridViews –

Смежные вопросы