(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...