Filtering menggunakan CDbCriteria Perameter Input dan condition

Kamis, 24 Oktober 2013

(oleh : Badiyanto)

 Lanjutan dari tutorial sebelumnya,  bagian ini akan menampilkan data buku dengan cara  memasukkan pengarang terlebih dahulu menggunakan kelas CDbCriteria.  Anda bisa menambahkan method dalam model TblBuku.php sebagai berikut :

public function lihatBuku3($id)
    {
        $criteria=new CDbCriteria(array(
                      "condition" => "pengarang_id=:pengarang_id",
                      'params' => array(':pengarang_id'=>$id),
                    ));

        $criteria->compare('id',$this->id);
        $criteria->compare('judul_buku',$this->judul_buku,true);
        $criteria->compare('pengarang_id',$this->pengarang_id);
        $criteria->compare('penerbit_id',$this->penerbit_id);
        $criteria->compare('isbn_issn',$this->isbn_issn,true);

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }     
}


Perintah:  $criteria=new CDbCriteria(array(
                      "condition" => "pengarang_id=:pengarang_id",
                      'params' => array(':pengarang_id'=>$id),
                    ));

pengararan_id nama kolom pada tabel tbl_buku, :pengarang_id", nama parameter,
 'params' => array(':pengarang_id'=>$id), memasukkan nilai parameter dengan variabel $id.

 $criteria->compare('id',$this->id); digunakan untuk filtering pencarian.

Perintah :
return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,

Mengirimkan hasil isi dari $model ke CGridView.


Kemudian tambahkan methode dalam TblBukuController.php fungsi aksi actionInputPengarang3() sebagai input nama pengarang dan
actionDaftarBuku3() seperti pada kode berikut :

public function actionInputPengarang3()
    {
        $model=new TblBuku;
        $model->unsetAttributes();  // clear any default values
        if(isset($_POST['TblBuku'])){
            $id = $_POST['TblBuku']['pengarang_id'];
            $this->redirect(array('daftarBuku3','id'=>$id));
         }
        $this->render('inputPengarang3',array('model'=>$model,));                   
    }
public function actionDaftarBuku3()
    {
        $model=new TblBuku;
        $model->unsetAttributes();  // clear any default values
        if(isset($_GET['TblBuku']))
            $model->attributes=$_GET['TblBuku'];
        $this->render('daftarBuku3',array(
            'model'=>$model,
        ));
    }

dan bagian accessRules()

public function accessRules()
    {
        return array(
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view','daftarBuku','daftarBuku2','inputPengarang','daftarBuku3','inputPengarang3'),
                'users'=>array('*'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions'=>array('create','update','daftarBuku2'),
                'users'=>array('@'),
            ),
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions'=>array('admin','delete'),
                'users'=>array('admin'),
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

 

dan tambahkan program dalam view/tbelBuku/ dengan nama file daftarBuku3.php

<?php
/* @var $this TblBukuController */
/* @var $model TblBuku */
/* @var $form CActiveForm */
?>
<div class="wide form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'tbl-buku-form',
    'enableAjaxValidation'=>false,)); ?>
    <p class="note">Fields with <span class="required">*</span> are required.</p>
    <?php echo $form->errorSummary($model); ?>
    <div class="row">
        <?php echo $form->labelEx($model,'pengarang_id'); ?>
       
        <?php echo $form->dropDownList($model,'pengarang_id',
                  CHtml::listData(TblPengarang::model()->findAll(), 'id','nama_pengarang'),
              array('prompt'=>'= Pilihan =','style'=>'width:200px;')); ?>
       
        <?php echo $form->error($model,'pengarang_id'); ?>
    </div>   
    <div class="row buttons">
        <?php echo CHtml::submitButton('Proses'); ?>
    </div>
<?php $this->endWidget(); ?>
</div><!-- form -->

Laporan daftar buku buatlah file daftarBuku3.php kemudian disampan ke viws/tblBuku/..

file daftarBuku.php

<h1>
DAFTAR BUKU MENURUT PENGARANG
</h1>
<!-- // menbaca id pengarang// -->
<?php $id = $_GET["id"]; ?>
<?php $this->widget('zii.widgets.CDetailView', array(
    'data'=>$model,
    'attributes'=>array(
    array(
          'label'=>'Nama Pengrarang',
          'type'=>'html',
          'value'=>TblPengarang::model()->findByPk($id)->nama_pengarang,
          ),
    array(
          'label'=>'Alamat',
          'type'=>'html',
          'value'=>TblPengarang::model()->findByPk($id)->alamat,
          ),     
    ),
)); ?>

<!-- menampilkan tabel dengan grid.Cgridwiew//-->
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'tbl-buku-grid',
    'dataProvider'=>$model->lihatBuku3($id),
    'columns'=>array(
           array(
            'name'=>'id',
            'type'=>'raw',
            'header'=>'NO',
            'value'=>'CHtml::encode($data->id)',
            'htmlOptions'=>array('width'=>'3%','style'=>'text-align:left'),
        ),
        array(
            'name'=>'judul',
            'type'=>'raw',
            'header'=>'JUDUL BUKU',
            'value'=>'CHtml::encode($data->judul_buku)',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),   
        ),
      array(
            'name'=>'nama_pengarang',
            'type'=>'raw',
            'header'=>'NAMA PENERBIT',
            'value'=>'CHtml::encode($data->penerbit->nama_penerbit)',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),
        ),   
         array(
            'name'=>'isbn_issn',
            'type'=>'raw',
            'header'=>'ISBN/ISSN',
            'value'=>'CHtml::encode($data->isbn_issn)',
            'htmlOptions'=>array('width'=>'10%','style'=>'text-align:left'),

        ),   
    ),
)); ?>

Salahkan dicoba http://localhost/coba/index.php?r=inputPengarang3


Berita Lainnya

Showing 1-3 of 433 items.
Akakom IT FEST 2019: ...
Akakom IT FEST 2019: Be Smart with Having Fun Sabtu, 16 Maret 2019

STMIK Akakom Yogyakarta kembali menggelar acara IT FEST 2019 pada Sabtu (10/03/2019). Berbeda dari IT FEST 2016, acara IT FEST 2019 dimotori oleh Badan ... Selengkapnya

Pembekalan Calon Wisudawan/...
Pembekalan Calon Wisudawan/wati: Pembekalan Softskill Dalam Menghadapi Dunia Kerja Kamis, 14 Maret 2019

STMIK Akakom mengadakan kegiatan pembekalan calon wisudawan periode gasal (Maret) 2019. Tentunya ini diselenggarakan untuk calon wisudawan-wisudawati sebagai motivasi dan memberikan ... Selengkapnya

Sahril, Mahasiswa STMIK ...
Sahril, Mahasiswa STMIK Akakom, Lolos ke Singapore dalam Ajang National Bootcamp Indonesia Next 2018 Telkomsel Rabu, 20 Februari 2019

Sahril mahasiswa jurusan Teknik Informatika angkatan tahun ajaran 2016 kembali mengharumkan nama STMIK AKAKOM dengan mengikuti kegiatan National Bootcamp Indonesia Next 2018 ... Selengkapnya