Berita

Akses SQL Menggunakan CArrayDataProvider(...) dengan Perameter Input

11 tahun yang lalu

(oleh : Badiyanto)

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

public function lihatBuku2($id)
     {
     $sql='SELECT
        tbl_buku.id
        , tbl_buku.judul_buku
        , tbl_penerbit.nama_penerbit
        , tbl_pengarang.nama_pengarang
        , tbl_buku.isbn_issn
        FROM
           kuliah.tbl_buku
          INNER JOIN kuliah.tbl_penerbit
                ON (tbl_buku.penerbit_id = tbl_penerbit.id)
          INNER JOIN kuliah.tbl_pengarang
                ON (tbl_buku.pengarang_id = tbl_pengarang.id)
          WHERE tbl_buku.pengarang_id = '. $id .           
          ' ORDER BY tbl_buku.id ';
       
     $daftarBuku=Yii::app()->db->createCommand($sql)->queryAll();   
     $dataProvider=new CArrayDataProvider(
                $daftarBuku,array(
                   'keyField'=>false,
                   'pagination'=>array('pageSize'=>100,),
           ));
 
          return $dataProvider; 
         
     }

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

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

Kemudian buatlah program yang disimpan ke folder views/tblBuku/
inputPengarang.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 -->

dan tambahkan program dalam view/tbelBuku/ dengan nama file daftarBuku2.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->lihatBuku2($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["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'),

        ),   
    ),
)); ?>

Gambar hubugan Model, Views dan Controller

Pada saat user menjalankan http://localhost/coba/index.php?r=tblBuku/inputPengarang

maka Controller lewat aksi cationInputPengarang() memanggil file inputPengarang.php., serta menjalankan daftarBuku2 dengan mengirim variabel $id, lewat perintah $this->redirect(array('daftarBuku2','id'=>$id));. Kemudian pada saat user menekan tombol proses, aksi dilakukan oleh actionDaftarBuku3, akan memanggil file daftaBuku2.php, dengan menyertakan parameter $id,  kemudian dalam file daftaBuku2.php nilainya diambil dengan dengan perintah  <?php $id = $_GET["id"]; ?> digunakan untuk memberikan nilai input lewat variabel $id pada fungsi/method TblPengarang::model()->findByPk($id)->nama_pengarang,  dan 'dataProvider'=>$model->lihatBuku2($id), yang akan  dtampilkan ke gridView

Hasil uji coba

Klik Proses


Lanjutan ...? tunggu sedang cari ide...


Berita Lainnya

WEBINAR : Peran Teknologi Digital untuk Mendukung Tatanan Kehidupan Baru.
WEBINAR : Peran Teknologi Digital untuk Mendukung Tatanan Kehidupan Baru.

4 tahun yang lalu

WEBINAR : Peran Teknologi Digital untuk Mendukung Tatanan Kehidupan Baru. Diselenggarakan dalam Rangka Dies Natalis STMIK AKAKOM ke-41. Pelaksanaan: Selasa, 30 Juni 2020 ...

Selengkapnya
PERPANJANGAN  KEDUA KESIAPSIAGAAN dan PENCEGAHAN COVID-19 di LINGKUNGAN STMIK AKAKOM YOGYAKARTA
PERPANJANGAN KEDUA KESIAPSIAGAAN dan PENCEGAHAN COVID-19 di LINGKUNGAN STMIK AKAKOM YOGYAKARTA

4 tahun yang lalu

STMIK Akakom Yogyakarta menyiapkan Perpanjangan Kedua Status Siaga COVID-19 melalui pembelajaran daring dan Work From Home (WFH). Berlaku sejak surat ...

Selengkapnya
Semarak Ramadhan, STMIK Akakom Bagi Hidangan berbuka puasa Gratis ke Mahasiswa STMIK Akakom.
Semarak Ramadhan, STMIK Akakom Bagi Hidangan berbuka puasa Gratis ke Mahasiswa STMIK Akakom.

4 tahun yang lalu

Jumat 24 April 2020 merupakan jadwal awal puasa 1 Ramadhan 1441 Hijriah. Ramadhan adalah salah satu bulan yang mulia bagi umat Islam yang selalu ...

Selengkapnya

Teknologi Populer