i’m a newbie…
i want to ask how to export record data to excel based on filter? at this time, i just can export all record data.
please help me.
it’s code at controller
public function actionPrintXls() {
set_time_limit(0);
if (!isset($_POST['PHasilAgendaMonitoringPk'])) {
throw new CHttpException(403, 'Invalid request. Please do not repeat this request again.');
}
ini_set('memory_limit', '2G');
$model = new PHasilAgendaMonitoringPk('searchDisplay');
$model->attributes = $_POST['PHasilAgendaMonitoringPk'];
$model->limit = 0;
//VIEW EXCEL
$view = $this->renderPartial('/report/kemitraan/lap_monitoringPk', array(
'model' => $model->searchDisplay()->data
), true);
Helper::ToXls('daftarMonitoringPk', $view);
}
it’s code at model
class PHasilAgendaMonitoringPk extends CActiveRecord36 {
const STATUS_BATAL = -1;
const STATUS_BELUM = 0;
const STATUS_SUDAH = 1;
public $ikut_pameran;
public $fk_wilayah_id = null;
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return PHasilAgendaMonitoringPk the static model class
*/
public static function model($className = __CLASS__) {
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName() {
return 'p_hasil_agenda_monitoring_pk';
}
/**
* @return array validation rules for model attributes.
*/
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array(
'fk_agenda_id, fk_personal_id',
'required'
),
array(
'tgl_input, tgl_kunjungan',
'required',
'on' => 'entryMonitoring'
),
array(
'fk_wilayah_id',
'safe',
'on' => 'displayMonitoring'
),
array(
'tahap_penyaluran_kredit, jangka_waktu_angsuran, jumlah_tunggakan, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, user_act, obsolete',
'numerical',
'integerOnly' => true
),
array(
'nilai_kredit, nilai_angsur_perbulan, nilai_tunggakan, aset_awal, aset_akhir, omzet_awal, omzet_akhir',
'numerical'
),
array(
'fk_agenda_id',
'length',
'max' => 20
),
array(
'fk_personal_id, ',
'length',
'max' => 11
),
array(
'kode, sektor_usaha, no_telp, no_hp, status_pinjaman',
'length',
'max' => 45
),
array(
'nama_kode_mitra, alamat',
'length',
'max' => 150
),
array(
'nama_usaha, jenis_produk, jenis_usaha, daerah_pemasaran, nama_pemilik_usaha',
'length',
'max' => 100
),
array(
'mulai_berdiri_tahun, tahun_terdaftar_mitra',
'length',
'max' => 4
),
array(
'tgl_input, tgl_kunjungan, ikut_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, time_act',
'safe'
),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array(
'id, fk_agenda_id, fk_personal_id, kode, tgl_input, tgl_kunjungan, nama_kode_mitra, nama_usaha, jenis_produk, sektor_usaha, jenis_usaha, mulai_berdiri_tahun, daerah_pemasaran, nama_pemilik_usaha, alamat, no_telp, no_hp, tahun_terdaftar_mitra, tahap_penyaluran_kredit, nilai_kredit, jangka_waktu_angsuran, nilai_angsur_perbulan, jumlah_tunggakan, nilai_tunggakan, status_pinjaman, aset_awal, aset_akhir, omzet_awal, omzet_akhir, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, user_act, time_act, obsolete',
'safe',
'on' => 'search'
),
array(
'id, fk_agenda_id, fk_personal_id, kode, tgl_input, tgl_kunjungan, nama_kode_mitra, nama_usaha, jenis_produk, sektor_usaha, jenis_usaha, mulai_berdiri_tahun, daerah_pemasaran, nama_pemilik_usaha, alamat, no_telp, no_hp, tahun_terdaftar_mitra, tahap_penyaluran_kredit, nilai_kredit, jangka_waktu_angsuran, nilai_angsur_perbulan, jumlah_tunggakan, nilai_tunggakan, status_pinjaman, aset_awal, aset_akhir, omzet_awal, omzet_akhir, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, user_act, time_act, obsolete',
'safe',
'on' => 'searchDisplay'
),
);
}
/**
* @return array relational rules.
*/
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'fkAgenda' => array(
self::BELONGS_TO,
'PAgenda',
'fk_agenda_id'
),
'fkPersonal' => array(
self::BELONGS_TO,
'PPersonal',
'fk_personal_id'
),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels() {
return array(
'id' => 'ID',
'fk_agenda_id' => 'Agenda',
'fk_personal_id' => 'Personal',
'kode' => 'Kode',
'tgl_input' => 'Tgl Input',
'tgl_kunjungan' => 'Tgl Kunjungan',
'nama_kode_mitra' => 'Nama Kode Mitra',
'nama_usaha' => 'Nama Usaha',
'jenis_produk' => 'Jenis Produk',
'sektor_usaha' => 'Sektor Usaha',
'jenis_usaha' => 'Jenis Usaha',
'mulai_berdiri_tahun' => 'Mulai Berdiri Tahun',
'daerah_pemasaran' => 'Daerah Pemasaran',
'nama_pemilik_usaha' => 'Nama Pemilik Usaha',
'alamat' => 'Alamat',
'no_telp' => 'No Telp',
'no_hp' => 'No Hp',
'tahun_terdaftar_mitra' => 'Tahun Terdaftar Mitra',
'tahap_penyaluran_kredit' => 'Tahap Penyaluran Kredit',
'nilai_kredit' => 'Nilai Kredit',
'jangka_waktu_angsuran' => 'Jangka Waktu Angsuran',
'nilai_angsur_perbulan' => 'Nilai Angsur Perbulan',
'jumlah_tunggakan' => 'Jumlah Tunggakan',
'nilai_tunggakan' => 'Nilai Tunggakan',
'status_pinjaman' => 'Status Pinjaman',
'aset_awal' => 'Aset Awal',
'aset_akhir' => 'Aset Akhir',
'omzet_awal' => 'Omzet Awal',
'omzet_akhir' => 'Omzet Akhir',
'jml_karyawan' => 'Jml Karyawan',
'rencana_jml_karyawan' => 'Rencana Jml Karyawan',
'hasil_pelatihan_diterapkan' => 'Hasil Pelatihan Diterapkan',
'keikutsertaan_pameran' => 'Keikutsertaan Pameran',
'ikut_pameran' => 'Keikutsertaan Pameran',
'penghargaan_pengalaman' => 'Penghargaan Pengalaman',
'permasalahan_dihadapi' => 'Permasalahan Dihadapi',
'pelatihan_list' => 'Daftar Pelatihan',
'rekomendasi' => 'Rekomendasi',
'user_act' => 'User Act',
'time_act' => 'Time Act',
'obsolete' => 'Obsolete',
);
}
public function searchDisplay() {
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria = new CDbCriteria;
$criteria->with = array(
'fkAgenda' => array('joinType' => 'inner join'),
'fkAgenda.fkPelaksana1' => array('joinType' => 'inner join'),
'fkPersonal' => array('joinType' => 'inner join'),
'fkPersonal.fkWilayah' => array('joinType' => 'inner join')
);
$criteria->condition = "t.kode is not null";
if (!empty($this->fk_wilayah_id)) {
$criteria->addCondition("fkWilayah.id=:wilayah_id or fkWilayah.fk_wilayah_id=:wilayah_id or fkWilayah.fk_provinsi_id=:wilayah_id or fkWilayah.fk_kota_id=:wilayah_id");
$criteria->params = array(":wilayah_id" => $this->fk_wilayah_id);
}
if (!empty($this->fkAgenda->fkPelaksana1->nama)) {
$criteria->addCondition('fkAgenda.fkPelaksana1.nama like "%' . $this->fkAgenda->fkPelaksana1->nama . '%"');
}
if (!empty($this->kode)) {
$criteria->addCondition('t.kode like "%' . $this->kode . '%"');
}
if (!empty($this->nama_kode_mitra)) {
$criteria->addCondition('t.nama_kode_mitra like "%' . $this->nama_kode_mitra . '%"');
}
if (!empty($this->nama_usaha)) {
$criteria->addCondition('t.nama_usaha like "%' . $this->nama_usaha . '%"');
}
if (!empty($this->sektor_usaha)) {
$criteria->addCondition('t.sektor_usaha like "%' . $this->sektor_usaha . '%"');
}
if (!empty($this->jenis_produk)) {
$criteria->addCondition('t.jenis_produk like "%' . $this->jenis_produk . '%"');
}
$criteria->addCondition ("fkAgenda.fk_regional_id in ({$this->regional})");
$criteria->compare('t.id', $this->id);
$criteria->compare('t.fk_agenda_id', $this->fk_agenda_id);
$criteria->compare('t.tgl_input', $this->tgl_input, true);
$criteria->compare('t.tgl_kunjungan', $this->tgl_kunjungan, true);
$criteria->compare('t.nama_kode_mitra', $this->nama_kode_mitra, true);
$criteria->compare('t.jenis_usaha', $this->jenis_usaha, true);
$criteria->compare('t.mulai_berdiri_tahun', $this->mulai_berdiri_tahun, true);
$criteria->compare('t.daerah_pemasaran', $this->daerah_pemasaran, true);
$criteria->compare('t.nama_pemilik_usaha', $this->nama_pemilik_usaha, true);
$criteria->compare('t.alamat', $this->alamat, true);
$criteria->compare('t.no_telp', $this->no_telp, true);
$criteria->compare('t.no_hp', $this->no_hp, true);
$criteria->compare('t.tahun_terdaftar_mitra', $this->tahun_terdaftar_mitra, true);
$criteria->compare('t.tahap_penyaluran_kredit', $this->tahap_penyaluran_kredit);
$criteria->compare('t.nilai_kredit', $this->nilai_kredit);
$criteria->compare('t.jangka_waktu_angsuran', $this->jangka_waktu_angsuran);
$criteria->compare('t.nilai_angsur_perbulan', $this->nilai_angsur_perbulan);
$criteria->compare('t.jumlah_tunggakan', $this->jumlah_tunggakan);
$criteria->compare('t.nilai_tunggakan', $this->nilai_tunggakan);
$criteria->compare('t.status_pinjaman', $this->status_pinjaman, true);
$criteria->compare('t.aset_awal', $this->aset_awal);
$criteria->compare('t.aset_akhir', $this->aset_akhir);
$criteria->compare('t.omzet_awal', $this->omzet_awal);
$criteria->compare('t.omzet_akhir', $this->omzet_akhir);
$criteria->compare('t.jml_karyawan', $this->jml_karyawan);
$criteria->compare('t.rencana_jml_karyawan', $this->rencana_jml_karyawan);
$criteria->compare('t.hasil_pelatihan_diterapkan', $this->hasil_pelatihan_diterapkan);
$criteria->compare('t.keikutsertaan_pameran', $this->keikutsertaan_pameran);
$criteria->compare('t.penghargaan_pengalaman', $this->penghargaan_pengalaman, true);
$criteria->compare('t.permasalahan_dihadapi', $this->permasalahan_dihadapi, true);
$criteria->compare('t.pelatihan_list', $this->pelatihan_list, true);
$criteria->compare('t.rekomendasi', $this->rekomendasi, true);
$criteria->compare('fkPelaksana1.nama', $this->user_act, true);
$criteria->compare('t.time_act', $this->time_act, true);
$criteria->compare('t.obsolete', $this->obsolete);
$limit = $this->limit == 0 || empty($this->limit) ? $this->count($criteria) : $this->limit;
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array('pageSize' => $limit),
));
}
}
and it’s code at view (not view excel, but view to display result record data and a download button)
<?php
$this->breadcrumbs = array(
'Display Monitoring' => array('display/monitoringPk'),
'Manage',
);
$this->pageTitle = 'Kelola Display Monitoring';
Yii::app()->clientScript->registerScript('search', "
$('#btn_cari').click(function(){
$.fn.yiiGridView.update('pproposal-pk-grid', {
data: {'PHasilAgendaMonitoringPk[fk_wilayah_id]': $('#fk_wilayah_id').val()}
});
return false;
});
", CClientScript::POS_END);
?>
<div class="well">
<legend>Filter</legend>
<?php
$this->widget('ext.wilayah.Wilayah', array(
'name' => 'fk_wilayah_id',
'display' => 'leftToRight',
'width' => '220px',
'allowClear' => true
));
echo '<hr>';
echo CHtml::button('CARI', array('id' => 'btn_cari', 'class' => 'btn btn-primary'));
?>
</div>
<div style="width: 100%; overflow-x: auto;">
<?php
//if (Yii::app()->user->regional == PRegional::REGIONAL_TONASA) {
$this->widget('ext.iAct.IAct', array(
'url' => 'hasilAgendaMonitoringPk/printXls',
//'value' => $_GET['ajax'],
'id' => 'btnDownlodMonitoringPk',
'idForm' => 'formDownloadMonitoringPk',
'includeElement' => array('PHasilAgendaMonitoringPk' => array(
array('name' => 'fk_agenda_id', 'selector' => '$("#fk_agenda_id")'),
array('name' => 'kode', 'selector' => '$("#kode")'),
array('name' => 'nama_kode_mitra', 'selector' => '$("#nama_kode_mitra")'),
array('name' => 'nama_usaha', 'selector' => '$("#nama_usaha")'),
array('name' => 'sektor_usaha', 'selector' => '$("#sektor_usaha")'),
array('name' => 'jenis_produk', 'selector' => '$("#jenis_produk")'),
// array('name' => 'tgl_kunjungan', 'selector' => '$("#PProposalPk_search_mitra")'),
// array('name' => 'rekeningBank', 'selector' => '$("#PProposalPk_rekeningBank")'),
// array('name' => 'search_tgl', 'selector' => '$("#PProposalPk_search_tgl")'),
// array('name' => 'search_tgl_diterima', 'selector' => '$("#PProposalPk_search_tgl_diterima")'),
) ),
'titlePopover' => '',
'class' => 'icon-circle-arrow-down xls',
'contentPopover' => 'Download Monitoring PK'
));
//}
$this->renderPartial('_gridMonitoringPK', array('model' => $model));
?>
</div>