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 404 items.
Kerjasama program magang, ...
Kerjasama program magang, cloud academy, dan startup incubator dengan ACCI Sabtu, 16 Juni 2018

ACCI merupakan organisasi non-profit yang memiliki visi untuk menselaraskan perkembangan teknologi cloud computeing dan meningkatakan kualitas tenaga profesional untuk memenuhi ... Selengkapnya

Penandatanganan MoU Kerjasama ...
Penandatanganan MoU Kerjasama STMIK AKAKOM dengan PT. Asuransi Sinarmas Rabu, 23 Mei 2018

Sinarmas merupakan perusahaan brand yang memiliki 6 pilar bisnis, yaitu Pulp & Paper, Agri-business & Food, Financial Services, Developer & Real ... Selengkapnya

Penandatanganan Kerjasama Peneliti ...
Penandatanganan Kerjasama Peneliti STMIK AKAKOM dengan Dinas Pariwisata Kabupaten Bantul Senin, 21 Mei 2018

Aplikasi SIMISKIN merupakan hasil penelitian dosen-dosen STMIK AKAKOM dengan pendanaan dari Hibah Bersaing RISTEK DIKTI selama 3 tahun (2015-2017). Penelitian ini ... Selengkapnya