[Yii Framework] Membuat Entry Data One to Many Relation dengan Tabel Dinamis
August 11, 2011 152 Comments
Pastinya banyak sekali kasus dimana kita diharuskan membuat form entry data yang dimana tabel nya memiliki hubungan one to many. Nah, biasanya untuk mempermudah user, kita membuat form entry data terebut menjadi sebuah tabel dinamis seperti gambar berikut:
Yah, bisa anda lihat disana dimana kita harus menginput sebuah data Kelas sekaligus murid-murid yang ada di dalam kelas tersebut.
Sebenarnya postingan ini adalah sedikit pengembangan pada postingan sebelumnya, jadi akan lebih baik jika anda membaca postingan sebelumnya terlebih dahulu :D. Okeh, langsung saja.. Sama seperti postingan sebelumnya, saya akan menjelaskan dulu definisi tabel-tabel yang saya gunakan pada postingan ini.
Saya disini menggunakan 2 buah tabel, tabel “Kelas” dan tabel “Murid”, berikut penjelasannya :
Tabel Kelas :
- id : integer, Primary key, auto increment
- namaKelas : varchar(10)
- waliKelas : varchar(30)
- id: integer, Primary Key, auto increment
- nama : varchar(50)
- jk: varchar(10)
- kelas : integer, Foreign Key tabel “kelas” attribute “id”
public function actionCreate() { $model=new Kelas; $model2=new Murid; if(isset($_POST['Kelas'])) { $model->attributes=$_POST['Kelas']; if($model->save()) { if(isset($_POST['nama'])) { $total = count($_POST['nama']); for ($i = 0; $i <= $total; $i++) { if(isset($_POST['nama'][$i])) { $jiakakak = new Murid; $jiakakak->kelas=$model->id; $jiakakak->nama = $_POST['nama'][$i]; $jiakakak->jk = $_POST['jk'][$i]; $jiakakak->save(); } } $this->redirect(array('view','id'=>$model->id)); } } } $this->render('create',array( 'model'=>$model, 'model2'=>$model2, )); }
Penjelasan : Code di atas adalah code yang akan melakukan penyimpanan pada data baik data “Kelas” maupun data “Murid”. Disana terlihat saya melakukan perulangan pada penyimpanan tabelnya. Itu karena kita melakukan penyimpanan banyak data pada tabel “Murid”, sedangkan pada tabel “kelas” kita hanya melakukan penyimpanan 1 data saja. Lalu saya membuat attribut “kelas” pada tabel “Murid” tidak di input 1 per 1, melainkan langsung mengikuti semua “kelas” yang sudah di input di atas. Jadi nginput kelasnya cukup 1 kali aja dan itu akan mengarah ke semua murid yang di input di bawah nya..
Nah, kalo tabel yang anda gunakan berbeda attribut-attribut nya dengan yang saya paparkan, silahkan anda sesuaikan yak.. 😀
okeh, next step.. Buatlah sebuah file .php di protected/extensions/appendo/views/. Kasih nama “jiakak”, jadi akan ada tabel jiakak.php di dalam folder tersebut. Lalu isi file tersebut dengan code berikut:
<table class="appendo-gii" id="<?php echo $id ?>"> <thead> <tr> <th>Nama </th><th>Jenis Kelamin</th> </tr> </thead> <tbody> <?php if ($model->nama == null): ?> <tr> <td><?php echo CHtml::textField('nama[]','',array('style'=>'width:120px')); ?></td> <td> <?php echo CHtml::dropDownList('jk[]',"string", array( "Laki-laki"=>"Laki-laki", "Perempuan"=>"Perempuan", ),array('style'=>'width:100px')); ?> </td> </tr> <?php else: ?> <?php for($i = 0; $i < sizeof($model->nama); ++$i): ?> <tr> <td><?php echo CHtml::textField('nama[]',$model->nama[$i],array('style'=>'width:120px')); ?></td> <td> <?php echo CHtml::dropDownList('jk[]',$model->jk[$i], array( "Laki-laki"=>"Laki-laki", "Perempuan"=>"Perempuan", ),array('style'=>'width:100px')); ?> </td> </tr> <?php endfor; ?> <tr> <td><?php echo CHtml::textField('nama[]','',array('style'=>'width:120px')); ?></td> <td> <?php echo CHtml::dropDownList('jk[]',"string", array( "Laki-laki"=>"Laki-laki", "Perempuan"=>"Perempuan", ),array('style'=>'width:100px')); ?> </td> </tr> <?php endif; ?> </tbody> </table>
Penjelasan : code di atas adalah code untuk melakukan pengaturan attribut sesuai dengan tabel “Murid”. Saya disana memasuki attribute “nama” dan “jk” sesuai dengan yang ada pada database saya tadi. Tapi saya tidak memasukkan attribute “id” dan “kelas”, kenapa?? untuk attribute “id”, dia adalah attribtue dengan auto increment yang artinya attribute tersebut akan di input secara otomatis dari database, jadi ga perlu di input. Sementara attribute “kelas”, saya akan mengambil nilai nya dari inputan lain, jadi ga saya masukin biar ga nginput 1 per 1 nilainya.. 😀 . Lagi-lagi jika tabel anda berbeda dengan yang saya miliki, silahkan anda modifikasi sesuai dengan attribute yang ada di tabel anda :D…
Lalu buka “protected/views/kelas/_form.php”, tambahkan sebuah attribute seperti berikut:
<div class="row"> <?php $this->widget('application.extensions.appendo.JAppendo',array( 'id' => 'repeateEnum', 'model' => $model2, 'viewName' => 'jiakak', 'labelDel' => 'Remove Row', // 'cssFile' => 'css/jquery.appendo2.css' )); ?> </div>
Sehingga code lengkap pada “_form.php” nya akan menjadi seperti berikut:
<div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'kelas-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,'namaKelas'); ?> <?php echo $form->textField($model,'namaKelas',array('size'=>10,'maxlength'=>10)); ?> <?php echo $form->error($model,'namaKelas'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'waliKelas'); ?> <?php echo $form->textField($model,'waliKelas',array('size'=>30,'maxlength'=>30)); ?> <?php echo $form->error($model,'waliKelas'); ?> </div> <div class="row"> <?php $this->widget('application.extensions.appendo.JAppendo',array( 'id' => 'repeateEnum', 'model' => $model2, 'viewName' => 'jiakak', 'labelDel' => 'Remove Row', // 'cssFile' => 'css/jquery.appendo2.css' )); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> </div> <?php $this->endWidget(); ?> </div>
Penjelasan : code di atas adalah form input yang akan di tampilkan. Disana saya menambahkan sebuah control tabel dinamis yang digunakan untuk melakukan input data dengan tabel dinamis yang bisa kita tambahkan dan kurangi sesuka hati :D.
Nah, jika anda sudah berhasil melakukan proses di atas..Harusnya anda sudah bisa melakukan input data dengan menggunakan tabel dinamis. Terakhir mari kita poles tampilan untuk menampilkan datanya agar lebih enak dilihat. Bukalah “protected/views/kelas/view.php”, lalu edit menjadi seperti berikut:
<?php $this->breadcrumbs=array( 'Kelases'=>array('index'), $model->id, ); $this->menu=array( array('label'=>'List Kelas', 'url'=>array('index')), array('label'=>'Create Kelas', 'url'=>array('create')), array('label'=>'Update Kelas', 'url'=>array('update', 'id'=>$model->id)), array('label'=>'Delete Kelas', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?')), array('label'=>'Manage Kelas', 'url'=>array('admin')), ); ?> <h1>View Kelas #<?php echo $model->id; ?></h1> <?php $this->widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'namaKelas', 'waliKelas', ), )); ?> <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$murid, 'columns'=>array( 'id', 'nama', 'jk', array( 'name'=>'Kelas', 'value'=>'Kelas::model()->findByPk($data->kelas)->namaKelas', ), ), )); ?>
Lalu jangan lupa di KelasController, tepatnya di actionView, edit code ny menjadi seperti berikut:
public function actionView($id) { $kelas=Murid::model()->findByAttributes(array('kelas'=>$id)); $haha=new CDbCriteria; $criteria=new CDbCriteria; $criteria->compare('kelas',$id); $murid=new CActiveDataProvider('Murid', array('criteria'=>$criteria,) ); $this->render('view',array( 'model'=>$this->loadModel($id), 'murid'=>$murid, )); }
Dan anda akan lihat hasilnya seperti berikut:
Hohohoho….
Selesai… Selamat mencoba… dan lagi-lagi pesan saya… silahkan anda modifikasi code di atas sesuai tabel anda…
Semoga membantu… 😀
Permisi numpang tanya2..Gan..saya masih pemula bgt gan? kalo bikin input data kya gimana ya gan..
tetapi pas data saya input ternyata data tersebut sudah ada di query
misalnya saya masukan data Perjalanan :
Kotaasal: Bandung
Kotatujuan: Jakarta
nah ketika saya input Bandung cama Jakarta ternya data tersebut sudah ada. itu gimana ya gan codingnya…tolong kasih pencerahan..thanks..
sebelum agan save, agan cek dlu aja gan data nya ada apa nggak misal kek gini:
$itu=Kota::model()->findByPk($id);
if($itu==null)
{
simpanData;
}
else
{
janganSimpanData;
}
Pingback: [Yii Framework] Membuat Entry Data Many to many dengan Tabel Dinamis « Sabitlabscode
Pingback: [Yii Framework] Insert One to Many Relation dengan Data Yang Sudah Ada « Sabitlabscode
q nyoba koding diatas gan, tp kalo create kelas ko error ‘Undefined variable: model2 ‘ ya?
sorry ganggu gan…
masih newbie c….
br belajar yii 4 hr….
tq
;D
di controller ny, di action create nya uda di definisiin belum model2 ny gan? kek gini contohnya :
$this->render(‘create’,array(
‘model’=>$model,
‘model2’=>$model2,
));
udah jd gan…
ternyata di view createnya lom ditaruh model2 …
tq…
kalo buat upload file bisa ga appendonya??
udah tek coba pake filefield ternyata bisa buat upload ga….
tq…
sory gan, ane baru buka blog nya..
hehe, udah bisa ya gan.. okeh deh…
q coba di satu foorm ada 2 appendonya…
tp appendo yg ke 2 ga ada add rownya…
memang ga bisa di satu form ada lebih dari satu appendo ya???
soalnya q joinnya 4 table…
n kalo mo ditambah di view tabel utamanya q ga bisa….
hiks….
ga ada add row ny mksd ny cuma input 1 row aja gan? klo gtu mending ga usah pake appendo, pake form biasa aja gan.. tapi klo emang harus pake appendo, harusnya bisa2 aja kok gan dipake lebih dari 1..
iya….
q coba main2 di appendonya, eh malah add rownya nambahnya diyang pertama…
jadi appendo yg pertama punya 2 add row tapi yg kedua ga ada sama sekali…
dah pernah coba pake ztabularinputmanager gan???
q mo coba pake tp masih lum mudeng koding2nya ditaruh dimana….
oh, iya sih gan.. bisa jadi itu karena dia nangkep nilainya ketimpa2 gan sama jappendo yg satu nyo..
ga pernah coba jga gan..
ya udah…
q mo coba cari cara lain….
tq gan…
di view data muridnya kok muncul semua ga di bagi per kelas gan? di tunggu pencerahannya ^^
hmm, klo yg saya paparin di atas udah di bagi per kelas kok gan..
itu bisa dilihat dari code pada controller nya yg : $kelas=Murid::model()->findByAttributes(array(‘kelas’=>$id));
okay ty gan ^^
emang muncul semua gan…..
makanya q bikin query sendiri……
hehehhehehhehehehe…..
jadi penasaran … hehe
buat function di model buat datanya. misal kek gini..
public function images($id){
$criteria = new CDbCriteria( array(
‘condition’ => ‘id = :id’,
‘params’ => array(‘:id’ => $id
) );
return new CActiveDataProvider(‘Image’, array(
‘criteria’=>$criteria,
));
}
trus di view, dataProvidernya diganti kek gini..
‘dataProvider’=>$model->images($model->id),
mksd ny yg mana gan?
yg ardy bilang….
data yg ditampilin muncul semua…..
walo pilih salah satu kelas tapi yg muncul semua…
ga bermaksud menjelek2an po gimana ya gan, cuma dikit koreksi doang…..
qta makasih banget agan dah bikin postingan ilmu yg banyak n bermanfaat….
oh.. nanti ane cek lagi deh klo gtu gan..
hehe, nyantai aja gan.. ga ada yg salah dg koreksi kok.. saya jga manusia bisa salah..
thanks koreksinya gan..
sori gan, baru bisa kesini lagi.. lagi sibuk kerjaan..
btw, URL yg di akses wktu agan ngeliat per kelas nya itu yg action “index” ato action “view” ya gan??
cz ane liat2 code ny, ga salah kayaknya gan..
ane coba di kompi ane uda berhasil jga gan..
kalo punya q “view” gan…
coba bisa kasih liat URL yg agan akses ga?
$content=Image::model()->findByAttributes(array(‘id_content’=>$id));
$image=new CActiveDataProvider($content);
$this->render(‘view’,array(
‘model’=>$this->loadModel($id),
‘image’=>$image,
));
itu q di satu view da 2 model….
view image nya pake gridview bukan list view
Solusinya di Agan dimana ? Apa ada perubahan di function viewnya juga ?
Mohon sharing contoh script untuk kasus seperti kelas dan murid ini..
Terimakasih
wah, kok bisa ya?
cz di compi ane udh bener hasilnya gan..
itu bisa dlihat dari ada nya findByAttribute nya gan..
brarti tempaq kali gan…
pemrograman kan emang gitu to…
banyak jalan menuju roma…..
tapi tempatq dah bisa c….
tq gan…
oh, okeh2 gan..
akhirnya berhasil … hehe
btw ty sabitzhabit ma angel 😀
sama2 gan..
ane baru coba-coba nih gan,,
untuk view, sudah bisa muncul..
cuman masalahnya, pas ane create.
data2 murid ga masuk ke database..itu kenapa yhh kira2 gan??
nb: controller.php,_form.php,create.php udah ane sesuaikan ama diatas
maap gan,, ane dah coba-coba semua nih..
ko yng tampil semua kelas yh?
jadi kita pilih kelas dengan ID = 1
yang muncul semua murid..
mohon pencerahannya gan. tq
wah, ane jg bingung nih.. d kompi ane klo udah dpilih view Id sekian yg muncul itu murid pada kelas tertentu gan..
maap gan, ane jg dpt masalah yg sama nech,
setelah kita pilih ID = 1
yg muncul semua murid.
apakah ada hubungannya dengan foreign key nya ya?
kalo coding saya ud cek semuanya, ud sama persis.
tolong bantuannya ya gan.
Masalah saya juga sama Gan… Walaupun id kelas 1 yang dipilih tapi semua data murid dimunculkan semua dengan kelas lain
Mungkin perlu ada perubahan di bagian controllernya, tapi saya bingung buatnya
kayaknya perlu ada tambahan buat sortir data hanya dari kelas 1 saja
public function actionView($id)
{
$kelas=Murid::model()->findByAttributes(array(‘kelas’=>$id));
$murid=new CActiveDataProvider($kelas);
$this->render(‘view’,array(
‘model’=>$this->loadModel($id),
‘murid’=>$murid,
));
}
Nambahinnya dimana yah ?
gan,, mau tanya lagi.. kan tutorial disini tuh ‘CREATE’ entry data,,
nah,,kalo ‘UPDATE’nya gimana?
kan defaultnya kan gini
public function actionUpdate{
$model -> $this->loadModel($id);
.
.
}
ane rubah jadi gini
public function actionUpdate{
$model -> $this->loadModel($id);
$kelas-> $this->loadKelas($id);
.
.
}
ttp ga muncul gan ..
mohon pencerahannya ..
nilai ny udah di lembar ke Jappendo ny gan?
gan saya nyoba sudah jadi,cuma pada saat update view di tabel murid di detailnya munculinnya gmn gan..kan yang muncul cuma kelasnya gan..trus ini gan biar remove apendonya bisa sesuai dengan yang kita pilih tidak harus menghapus dari record paling bawah gmn gan…mohon pencerahan gan …sudah mentok nih…
wah, saya udah lupa.. kalo ga salah utk update ada di set di jappendonya itu mas biar dia muncul..
tapi kalo utk msalah delete per row, sepertinya jappendo emang ga nyediain fitur utk ngapus di row tertentu (ini asumsi saya, ga tau juga kalo ternyata ada pilihan utk itu..) cmiiw..
mnurut saya klo emang banyak custom ada di wiki website yii framework utk mmbuat entry data kayak gini custom sndiri pake jquery.. saya sendiri blum prnah coba sih, tapi kyak nya itu plihan bagus..
Bit,, kalo misalnya “Kelas” nya dimasukkan duluan (tidak disimpan bersamaan pada saat create “Murid”) tuh bisa ga? jadi controller yg dipake itu “Murid”, cuma kan gw udah buat, tpi ngerror di jQuerynya..
errmsgnya gini : jQuery(“#repeateEnum”).appendo is not a function.
kira2 apa yg perlu dibenerin yak?
tengs before, Bit
kalo emang cuma mau ngiput kelas ny aja mending ga usah di pasang di sana jappendo nya bor..
Cz jappendo kan di pasang disana biar bisa input murid..
Gan mau tanya nih gan kalo bikin autonumber tp gabungan misal tabel operaso nomernya OP-0401-001
untuk Op adalah kode operasi pake string
untuk 0401 adalah tanggal dan bulan
untuk 001 adalah auto numbernya gan
biar klik baru muncul generate nomer seperti itu di text gmna gan..minta pencerahan gan?
mau dimunculin langsung di text dulu apa langsung di simpen hasil ny gan?
punyaku jadi kayak gini mas..?
PHP error
Declaration of KelasController::actionUpdate() should be compatible with that of Controller::actionUpdate()
itu kenapa ya gan?
apa masalahnya dikelascontrolernya ya, tepatnya actionupdate?
itu kayak ny di actionUpdate nya yang salah mas..
untuk kelas controller apakah harus diedit juga ya untuk actionUpdate, actionDelete? codingnya gimana ya gan? maklum masih newbie
makasih gan?
itu coding ny dari generate pake Gii atau buat sendiri gan?
harus ny kalo udah dari generate ga ada masalah gan..
PHP Error
Declaration of KelasController::actionUpdate() should be compatible with that of Controller::actionUpdate()
C:\xampp\htdocs\sitampan\protected\controllers\KelasController.php(4)
01 createController(“kelas/index”)
#2
+
C:\xampp\htdocs\yii\framework\web\CWebApplication.php(136): CWebApplication->runController(“kelas/index”)
#3
+
C:\xampp\htdocs\yii\framework\base\CApplication.php(158): CWebApplication->processRequest()
#4
–
C:\xampp\htdocs\sitampan\index.php(13): CApplication->run()
08 defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
09 // specify how many levels of call stack should be shown in each log message
10 defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);
11
12 require_once($yii);
13 Yii::createWebApplication($config)->run();
2012-02-07 14:07:24 Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 Yii Framework/1.1.8
Masih tetap error mas, padahal aku sebagian copy paste aja dari contoh diatas, apa yang salah ya…makasih..
dan tabel aku generate dan crude juga …
wah, kalo yg dari CRUD ny juga error, mngkin ada yg gak kompatible settingan di PCnya mas..
dimunculin di teksnya gan nomer OP-0401-001 biar klik tombol baru trus muncul di teksnya gan scripenya gmn gan kaloo pake YII…mohon pencerahan gan
di blog saya ada tutor untuk membuat tampilan dinamis dengan AJAX, coba lihat itu gan..
gan, mau minta pencerahan
kalo utk field nama, jenis kelamin dan kelas di view ditambahi autocomplete bisa?
misal pas ketik nama, maka kelas dan JK akan muncul otomatis.
kalo bisa mohon tutorialnya
terima kasih
mksd ny buat autocomplete biasa atau di jappendo ny gan?
mungkin spt ini Gan yg dimaksud http://www.codemashups.com/source/jquery/jquery-autocomplete-p1/
mungkin bisa dibuatkan tutorialnya 😀
matur tengkyu
wah, ga ngerti juga saya mas..
@rudy : yang pasti foreign key nya harus menyimpan informasi dari kelasnya gan..
jadi masing-masing data murid harus ada keterangan dia punya kelas yang mana gan..
sip.. tq gan atas infonya..
ane coba dulu..
Kok nasibnya sama seperti agan angel (http://goo.gl/aoku3)
error ‘Undefined variable: model2 ‘ ya?
Sudah dicoba copy paste source code persis sama dengan tutorialnya, tapi masih tetep error.
FYI, model2 jg sudah didefinisikan di bagian controller (pasti lah, namanya jg copy paste 🙂
mohon petunjuknya ya gan.
model2 akan di lempar ke form “create.php” lalu dari “create.php” akan dilempar kembali ke “_form.php” gan.. apa udah dilakukan seperti itu?
Sori gan kelupaan.
Saya ikutin yang diatas, hasilnya kayak gini
Kelas yang lain juga tetap muncul
wah, saya benar2 minta maaf. Ternyata selama ini memang ada yang salah :
ini diganti aja mas $murid=new CActiveDataProvider($kelas);
menjadi :
$haha=new CDbCriteria;
$criteria=new CDbCriteria;
$criteria->compare(‘kelas’,$id);
$murid=new CActiveDataProvider(‘Murid’,
array(‘criteria’=>$criteria,)
);
akan saya update juga di postingannya… mohon maaf ya..
Sudah Bisa Gan.. Trims
di create.php juga harus di modif kayaknya jadi :
renderPartial(‘_form’, array(‘model’=>$model,
‘model2’=>$model2,)); ?>
sip gan..
Nanya Gan, kalo kita pengen dropdownlist ngambil data dari tabel yang lain gimana gan ? khan untuk form biasa tanpa jappendo saya bisa, tapi pas pake jappendo, kok gagal yah ..
gagal gimana maksudnya gan?
Khan kalo yang contoh, parameter jenis kelamin langsung di definisikan , tapi kalo misalnya kita pengen ngambil parameter nama dari tabel user misalnya , caranya gimana ?
Contohnya :
findAll(),
‘id’, ‘nama’),array(
‘id’=>’username’, ’empty’=>’–Nama Anda ?–‘)); ?>
tabel saya :
id ->int(11)
username -> varchar(30)
nama ->varchar(30)
Kalau di form biasa itu bisa di load daftar namanya, tapi di jappendo selalu error unable to change to string..
Mohon bantuannya 😀
saya buat seperti ini gan :
findAll(),’id_obat’,’nama_obat’),
array(’empty’=>’– Pilih Obat –‘));
?>
ga error gan..
eh, sory gan.. ga nge load code nya di comment.. intinya agan itu salah definisiin dropdownlistnya gan..
coba periksa lagi code nya gan..
bang sabit, untuk update menggunakan tampilan appendo, itu dibuat view baru terus nilai2 yg akan diupdated dilempar ke view baru tersebut? masih blom terlalu ngerti bang, maklum newbi ne
Kalo untuk update, yang dilempar itu nilai nya yang mau di update gan.. dikirim semua list nilai yang mau di update..
list nilainya dalam bentuk array y gan?
bisa pake fungsi findAll() yang ada di yii aja gan ngirimnya..
sippp gan sarannya, thx udh solved masalahnya, >.<
Mas kalau di jappendo ditambah autocomplete ga bisa ya? Saya coba malah error
iya, setau saya juga ga bisa mas..
pake jqrel copy aja kalo ga salah bisa mas..
mas, makasiih tutornya. cmn sy ada masalah nich pas nyobanya.sy udah coba sesuai dengan tutornya sama persis.tp ketika nyoba masukin data.data muridnya ga bisa masuk terus ya.terutama untuk nama dan jenis kelaminnya. mohon pencerahannya
biasa nya itu ga bisa masuk kalo dia ga lolos validasi nya mbak.. coba di cek di model nya apakah udah lolos validasi nya gan..
oh iya bener mas. makasih ya.
Gan pnyak saya eror padalah udah dikasih
$this->render(‘create’,array(
‘model’=>$model,
‘model2′=>$model2,
));
Maaf newbie 🙂
Undefined variable: model2
C:\xampp\htdocs\test\protected\views\kelas\_form.php(32)
20 error($model,’namaKelas’); ?>
21
22
23
24 labelEx($model,’waliKelas’); ?>
25 textField($model,’waliKelas’,array(‘size’=>30,’maxlength’=>30)); ?>
26 error($model,’waliKelas’); ?>
27
28
29
30 widget(‘application.extensions.appendo.JAppendo’,array(
31 ‘id’ => ‘repeateEnum’,
32 ‘model’ => $model2,
33 ‘viewName’ => ‘jiakak’,
34 ‘labelDel’ => ‘Remove Row’,
35 // ‘cssFile’ => ‘css/jquery.appendo2.css’
36 )); ?>
37
38
39
40 isNewRecord ? ‘Create’ : ‘Save’); ?>
41
42 endWidget(); ?>
43
ini yang salah 😦
mohon pencerahannya
Udah bisa Gan
Thanks
sori mas ga cepet jawab kemarin.. lagi banyak kerjaan.. okeh, bagus lah kalo udah bisa mas..
mas sabit, utk action delete dan updateny gimana?
terutama utk delete, kalo kita delete kelasnya akan error. soalny foreign key pada tabel murid ada nyangkut di tabel kelas.
tolong d bantu controler deletenya. terima kasih mas sabit
harus di delete dulu data-data tabel lain yang mengacu ke dia mas.
Kunjungi Juga Farifam.com untuk tutorial dan forum Yii Framework yang direspon lebih cepat dari di blog ini..
kalo otomatis ke delete semua sesuai kelasnya bisa mas ?
bisa mas, tapi harus dibuat fungsinya mas.. pake fungsi beforeDelete aja yang ada di Yii nya mas..
Kunjungi Juga Farifam.com untuk tutorial dan forum Yii Framework yang lebih lengkap dan direspon lebih cepat dari di blog ini..
mas sabit ada contoh untuk kasus beforesave d atas gk? makasih 😀
kalo ga salah saya pernah buat thread kusus utk beforesave mbak..
mas sabit, boleh minta tolong gk. tolong saya d bantu tutorial untuk actionUpdate dan Delete nya, Jadi biar bisa update dan delete tabel muridnya. terima kasih sebelumnya sudah d bantu.
saya banyak belajar dari blog agan, makasih sebelumnya 🙂
saya minta bimbingan dong gan buat bkin action update dan delete nya.
biar data murid nya bisa langsung di hapus ap di edit .
wah, itu lumayan panjang cara nya mbak kalo mau dibuatin.. skrg belum sempet saya mbak..
gan sabit , mohon dong seperti request yang lain juga tolong di share action update and deletenya juga dong
Hello greetings from Argentina, I’m starting with yii and found your page and is just what I needed but to make an example of your codes I get an error Undefined variable: model2 can guide me please thanks!!
Hai Claudio, greeting from Indonesia..
maybe you forget to define your $model2 variable in your controller, or you have been defined it but not pass it to your view view “render”..
that joy thanks for your answer! , If I knew then lol sorry now I’m trying to do the update as serious only managed to get data from model and fa model2 for help thank you very much for answering me!!
Salam sabit, mohon bantuan anda, bagaimana jika situasi jika mempunyai child yang lebih dari satu.. contonnya:
public function actionCreate()
{
$model=new Kelas;
$model2=new Murid;
$model3=new Guru; // bagainama codingnya jika mau tambah model ini
$model4=new lain2; // dan seterusnya tambah ini.
………….
……..
…
}
thanks so much.
itu udah bener kayak gitu gan..
salam sabit, gi mana ya coding actionCreate dan actionUpdate nya jika member ada banyak dan melebihi 1, kalo ikut contoh yg mas bagi ya itu cuma 1 model sahaja iaitu class murid..g mana jika banyak class contohnya model1,model2,model3 dan seterusnya.. bisa ngak mas bagi satu examplenya? thanks
klo lebih dari 2 model agan definisiin aja sama dengan cara di atas, cuma model nya ada banyak gan..
oh ic..nevermind, sy cuba guna kaedah jqrelcopy (https://sabitlabscode.wordpress.com/2012/06/14/yii-framework-ajax-dependent-dropdownlist-in-multi-value-grid-form/) dulu, ternyata nampak lebih mudah..
oke.
Table Murid column kelas seharusnya foreign keynya dengan table Kelas column namaKelas ya?
ga jadi denk, udah bener ternyata 🙂
tolong bikin panduan update & deletenya donk gan
thx bgt sebelomnya
gan, klo inputan header, isiannya pengen disamping text, ga dibawah text (untuk menghemat tempat) caranya bagaimana ya?
cth : nama kelas : |______________________|
wali kelas : |______________________|
itu mainin css nya gan, utk lebih jelas agan harus pelajari css nya. Kalo ga mau repot coba lihat css bootstrap, dia uda nyediain biar ga susah buat jadi gitu.
ok siip gan, udah ane coba tinggal di copy ke form.css pake yii.css nya bootstrap
Thanks gan 🙂 klo udah ada waktu tolong bikin panduan update & deletenya donk gan ^_^
Thanks.
Property “Murid.namaKelas” is not defined.
gan maksud eror gt apa gan mohon bantuanya….
itu di tabel murid ada ga field namaKelas gan? itu mksd nya field namaKelas ga ada di database/model..
hello am following the tutorial so far the code right, but I can not make the function create, this is my code, could you tell me what is wrong? no achievement data raise $ model 2 help! please!! thank you!!!!
public function actionUpdate($id)
{
$model=new Partediario;
$model2=new Detalle;
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST[‘Partediario’]))
{
$model->attributes=$_POST[‘Partediario’];
if($model->save())
if(isset($_POST[‘num_rollo’]))
{
$total = count($_POST[‘num_rollo’]);
for ($i = 0; $i partediario_id=$model->id;
$jiakakak->num_rollo = $_POST[‘num_rollo’][$i];
$jiakakak->cant_cortes = $_POST[‘cant_cortes’][$i];
$jiakakak->codseg_id = $_POST[‘codseg_id’][$i];
$jiakakak->calidad = $_POST[‘calidad’][$i];
$jiakakak->primmetros = $_POST[‘primmetros’][$i];
$jiakakak->segmetros = $_POST[‘segmetros’][$i];
$jiakakak->retmetros = $_POST[‘retmetros’][$i];
$jiakakak->mimetros = $_POST[‘mimetros’][$i];
$jiakakak->observacion = $_POST[‘observacion’][$i];
$jiakakak->save();
}
$this->redirect(array(‘view’,’id’=>$model->id));
}
}
}
$this->render(‘update’,array(
‘model’=>$model,
‘model2’=>$model2,
));
}
are you find an error message there? may you post it here?
kalo soal validasinya gmna gan?
seandainya form nama ndak di isi, truz muncul pesan validasinya, itu gimana bikinnya?
itu salah satu yang cukup sulit disini..
agan mau ga mau harus buat sendiri.. bisa dengan javascript..
mas kalo “Undefined variable: select ” itu kenapa yah??
kamu ada nulis code “select” sementara itu ga ada agan definisiin di code..
mas sabit knp ya validasinya untuk murid gak jalan??
maksud saya kl klik create kelas dan muridnya keluar validasi merahnya pada formnya..
makasi
memang ga otomatis gitu gan.. harus di custom dlu.. agan bisa munculin pesan error nya dengan setting sendiri validasinya.. di blog ini ada tutorial untuk membuat custom validation gan..
mas sabit, untuk di kolom nama saya buat dropdownlis tapi kenapa ga muncul yah?
saya pake ini:
echo CHtml::dropDownList(‘nama[]’,CHtml::listData (Tes::model() -> findAll(),
‘no’,’nama’), array(’empty’=>’–nama produk–‘));
kalo ga salah coba ganti ini CHtml::dropDownList(‘nama[]‘,”,CHtml::listData (Tes::model() -> findAll(),
‘no’,’nama’), array(‘empty’=>’–nama produk–’));
Undefined variable: model2
C:\xampp\htdocs\webpkl\protected\views\kelas\_form.php(33)
21 error($model,’namaKelas’); ?>
22
23
24
25 labelEx($model,’waliKelas’); ?>
26 textField($model,’waliKelas’,array(‘size’=>30,’maxlength’=>30)); ?>
27 error($model,’waliKelas’); ?>
28
29
30
31 widget(‘application.extensions.appendo.JAppendo’,array(
32 ‘id’ => ‘repeateEnum’,
33 ‘model’ => $model2,
34 ‘viewName’ => ‘jiakak’,
35 ‘labelDel’ => ‘Remove Row’,
36 // ‘cssFile’ => ‘css/jquery.appendo2.css’
37 )); ?>
38
39
40
41 isNewRecord ? ‘Create’ : ‘Save’); ?>
42
43
44 endWidget(); ?>
45
dah nyobain persis tp kok eror gt ya kak??? ada c coment seblumnya blg krg di view..tp bingung…msh newbie bgt nih…mohon pencerahan….
udah bs denk kak ^^
okey gan..
$model2 belum di definisiin gan..
mas sabit, saya sudah coba, tapi masih eror di jiakak.php bagian
nama == null): ?>
“nama” itu diambil dari tabel murid kan?
error nya apa sis?
mas sabit, dibagian field jappendonya saya menggunakan widget CJuiDateTimePicker, tapi pas row kedua dan seterusnya widgetnya datepickernya ga muncul..itu kira-kira kenapa ya?
kalo jappendo emang saya sering dengar keluhan ga bisa jalan kalo mengandung javascript, tapi saya juga belum prnah coba di jappendo utk pemecahannya.. saya pake jqqrel copy sekarang..
mas sabit, kok error : Undefined variable: model2
62 widget(‘application.extensions.appendo.JAppendo’,array(
63 ‘id’ => ‘repeateEnum’,
64 ‘model’ => $model2,
65 ‘viewName’ => ‘jiakak’,
66 ‘labelDel’ => ‘Remove Row’,
67 // ‘cssFile’ => ‘css/jquery.appendo2.css’
68 )); ?>
69
Padahal di create.php sudah didefinisikan, di action create dan update juga sudah, mohon bimbingannya.
Sudah bisa, tapi kenapa file detail transaksi (model2) tidak bisa tersimpan??
Bisa minta tolong didefinisikan action updatenya??
ga bisa disimpan biasa nya karena validasinya masih gagal.. cek di model nya untuk tahu validasinya apa.
Sudah bisa 🙂
sekarang kendalanya transaksi detailnya masih tidak bisa tersimpan, kenapa ya??
model2 belum di definisiin sis
Maha guru, untuk proses create nya udah oke tak ada masalah ketika pas action update data list muritnya ndak ikut kenapa ya? jadi kelas sama wali murit bisa tp untuk muridnya ndak ikut kolomnya sama kyk input baru. trims
saya pernah buat yang ada update nya, cuma postingan lama dan saya lupa dmana posisinya.. coba di search aja mas..
kalau copy sekalian sama value textfieldnya sebelum di add row gmn gan?
harus di set di javascript nya gan, cuma kayak nya extension nya ga support, jadi harus buat sendiri.
bro,saya menggunakan cjuiautocomplete di dalam appendo itu
cjuiautocomplete saya jalan untuk row yang pertama
ketika saya add row lagi cjuiautocomplete saya tidak jalan,
ini code di appendonya : http://pastebin.com/FGgtyVF0
kira2 apa yg salah ya thx
coba cek dengan firebug error nya
masbro, saya udah ikutin tutor nya tp ko murid nya cuman 1 yg masuk database… error nya gini : CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘4’ for key ‘kelas’. The SQL statement executed was: INSERT INTO `murid` (`kelas`, `nama`, `jk`) VALUES (:yp0, :yp1, :yp2)
ada data yang salah, itu duplicate data nya kata nya gan.
td saya nyoba tpi undifined ‘model2’ gmna gan ??
Mas Sabit
Saya lg coba namun masih ada masalah di :
Undefined variable: model2
\protected\views\kelas\_form.php(27)
kira2 salahnya dimana ya mas
Udah bisa saya tambahkan di sini
renderPartial(‘_form’, array(‘model’=>$model, ‘model2’=>$model2)); ?>
kalo misalkan tabel kelas sama murid nya di ganti jadi table pelanggan dan menupesanan trs nanti di view ada field total di ambil dari jumlah * harga, nah masukin code yg untuk ngambil total nya dimana? saya udah coba di file view nya, tp gagal
Kalau menggunakan jappendo, kita g bisa pake custom css, atau bukan template default ya? Saya lagi pake template bootstrap. Tapi kok tombol add row nya g muncul?