(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...
Sampah suatu benda benda yang tidak ternilai atau tidak berharga yang ada di sekitar lingkungan masyarakat. Sampah di Indonesia merupakan ... Selengkapnya
Sejumlah dosen dari berbagai perguruan tinggi di Jogja menjalankan program pengembangan mitra desa atau PPDM di Desa Wisata Kaki Langit ... Selengkapnya
Kualifikasi : 1. Warga Negara Indonesia 2. Pendidikan : Lulud Doktor dari Universitas dengan prodi yang terkait dengan Informatika serta terakreditasi A. Jika lulus ... Selengkapnya