Berita

Menambahkan Total atau Subtotal di widgets.grid.CGridView

11 tahun yang lalu

(Oleh Badiyanto)

widgets.grid.CGridView adalah komponen untuk menampilkan hasil delam bentuk tabel. Pada saat Controller memanggil lewat methode render(...), akan memangil file view yang didalamnya terdapat zii.widgets.grid.CGridView, kemudian menyertakan data dalam bentuk array misal 'model'->$model, atau hasil dari Query.

Bagian ini akan mencoba membuat tabel dengan widgets.grid.CGridView dibaris akhir terdapat TOTAL/JUMLAH DATA.

1. Tambahkan fungsi dalam model sebagai berikut :

public function searchLatihan1()
    {
    $sql="SELECT
                id
                ,nama_pelatihan
                ,instruktur
         FROM
               kuliah.tbl_pelatihan";
     
     $dataLatihan=Yii::app()->db->createCommand($sql)->queryAll();   
     $larikData=array();
     $total=0;   
     $i=0;
     
     foreach ($dataLatihan as $dataLatihan1){      
          $i++;     
          $total = $total + $this->hitungJumPes($dataLatihan1["id"]);  
          $larikData[] = array(
                   'no'=>$i,
                   'nama_pelatihan'=>$dataLatihan1["nama_pelatihan"],                    
                   'instruktur'=>$dataLatihan1["instruktur"],         
                   'jumlah'=>$this->hitungJumPes($dataLatihan1["id"])
                );           
            }  
           
           $larikData[] = array(
                         'no'=>"",
                         'nama_pelatihan'=>"",                    
                         'instruktur'=>"TOTAL KESELURUHAN",         
                         'jumlah'=>$total,
                         );
                 
            $dataProvider=new CArrayDataProvider(
                $larikData,array(
                   'keyField'=>false,
                   'pagination'=>array('pageSize'=>100,),
           ));
 
          return $dataProvider; 
         
    }

Penjelasan

perintah :

$sql="SELECT
           id
          ,nama_pelatihan
          ,instruktur
      FROM
          kuliah.tbl_pelatihan"; adalah pengambilan/menapilkan rekaman denga menggunakan Query.

$dataLatihan=Yii::app()->db->createCommand($sql)->queryAll();   hasil query disimpan ke dalam variabel $dataLatihan, $larikData=array(); mendeklarsikan variabel array

 

foreach ($dataLatihan as $dataLatihan1){      
...................} melakukan loop untuk memindahkan data di variabel $dataLatihan ke $larikData

dengan perintah :

 $larikData[] = array(
                   'no'=>$i,
                   'nama_pelatihan'=>$dataLatihan1["nama_pelatihan"],                    
                   'instruktur'=>$dataLatihan1["instruktur"],         
                   'jumlah'=>$this->hitungJumPes($dataLatihan1["id"])
                );           
            }  

dan

$i++;      konter nomor urut,
$total = $total + $this->hitungJumPes($dataLatihan1["id"]);   menjumlahkan disimpan ke dalam variabel total dengan mengambil dari pemanggilan fungsi $this->hitungJumPes($dataLatihan1["id"]);

fungsi $this->hitungJumPes($dataLatihan1["id"]);

public function hitungJumPes($id)
    {     
     return TblPesPelat::model()->count('tbl_pelatihan_id=:id',array(':id'=>$id));
    }

2. Bagian Controller

public function actionJumlahPeserta()
    {
        $model=new TblPelatihan('search');
        $model->unsetAttributes();  // clear any default values
        if(isset($_GET['TblPelatihan']))
            $model->attributes=$_GET['TblPelatihan'];

        $this->render('jumlahPeserta',array(
            'model'=>$model,
        ));
    }
   

3. Bagian Views dalam file jumlahPeserta.php

h1>Laporan Peserta Pelatihan</h1>

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
    'model'=>$model,
)); ?>
</div><!-- search-form -->

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'tbl-pelatihan-grid',
    'dataProvider'=>$model->searchLatihan1(),
    'filter'=>$model,
    'columns'=>array(
   
         array(
            'name'=>'id',
            'type'=>'raw',
            'header'=>'ID',
            'value'=>'CHtml::encode($data["no"])',
            'htmlOptions'=>array('width'=>'3%','style'=>'text-align:left'),
        ),
        array(
            'name'=>'nama_pelatihan',
            'type'=>'raw',
            'header'=>'PELATIHAN',
            'value'=>'CHtml::encode($data["nama_pelatihan"])',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),  
        ),
         array(
            'name'=>'instruktur',
            'type'=>'raw',
            'header'=>'INSTRUKTUR',
            'value'=>'CHtml::encode($data["instruktur"])',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),  
        ),
         array(
            'name'=>'jumlah',
            'type'=>'raw',
            'header'=>'JUMLAH',
            'value'=>'CHtml::encode($data["jumlah"])',
            'htmlOptions'=>array('width'=>'10%','style'=>'text-align:right'),  
        ),
       
    ),
)); ?>

4. Uji Hasilnya


Berita Lainnya

Pelatihan Microsoft Excel Untuk Guru-guru PAUD SPS WIjaya Kusuma oleh HMJ KA STMIK AKAKOM YOGYAKARTA
Pelatihan Microsoft Excel Untuk Guru-guru PAUD SPS WIjaya Kusuma oleh HMJ KA STMIK AKAKOM YOGYAKARTA

6 tahun yang lalu

Himpunan Mahasiswa Jurusan Komputerisasi Akuntansi (HMJ KA) pada tanggal 12 Mei 2018 melakukan Pelatihan Microsoft Excel kepada Guru-guru PAUD SPS Wijaya Kusuma. ...

Selengkapnya
Seminar dan Workshop Nasional
Seminar dan Workshop Nasional "Modern Web Penetration Testing"

6 tahun yang lalu

Sabtu, 12 Mei 2018 UKM IK melaksanakan Seminar dan Workshop di STMIK AKAKOM dengan judul "modern web penetration testing" Dengan ...

Selengkapnya
Mahasiswa Akakom Meraih Beasiswa Menjadi Android Developer Expert oleh Google
Mahasiswa Akakom Meraih Beasiswa Menjadi Android Developer Expert oleh Google

7 tahun yang lalu

Bekerja sama dengan Google, Dicoding Indonesia memberikan beasiswa kepada dosen & mahasiswa untuk belajar mengembangkan Aplikasi sesuai dengan standar kurikulum ...

Selengkapnya

Teknologi Populer