Berita

Filtering menggunakan CDbCriteria Perameter Input dan condition

11 tahun yang lalu

(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

TIM PKM STMIK AKAKOM Membina Warga Karanggayam Bantul Menuju Desa Peduli Lingkungan
TIM PKM STMIK AKAKOM Membina Warga Karanggayam Bantul Menuju Desa Peduli Lingkungan

6 tahun yang lalu

Sampah  rumah  tangga  memiliki  andil  yang besar  dalam pencemaran  lingkungan  jika  ...

Selengkapnya
Pelaksanaan Lomba Tarung Derajat Pekan Olahraga Mahasiswa Daerah (POMDA) DIY
Pelaksanaan Lomba Tarung Derajat Pekan Olahraga Mahasiswa Daerah (POMDA) DIY

6 tahun yang lalu

STMIK AKAKOM Yogyakarta menjadi salah satu tuan rumah Pekan Olahraga Mahasiswa Daerah (POMDA) DIY, cabang olahraga Tarung Derajat yang dilaksanakan ...

Selengkapnya
Kuliah Umum “Big Data dan Smart City”
Kuliah Umum “Big Data dan Smart City”

6 tahun yang lalu

STMIK Akakom Yogyakarta mengadakan kuliah umum dengan tema “Big Data dan Smart City” sebagai rangkaian kegiatan International Seminar ...

Selengkapnya