Select Option dan Join Tabel di Codeigniter #5
Artikel ini merupakan lanjutan dari artikel CRUD dan Validasi Data di CodeIgniter 4 #4, sebelumnya kita sudah mempelajari CRUD dan menampilkan data pada Datatable. Kali ini kita akan membahas bagaimana menampilkan select option role (Admin dan Member) pada form modal tambah dan edit, juga memodifikasi Datatable supaya dapat menampilkan role pada tampilan awal halaman user, seperti ini:
Menambahkan Select Option Role
Sebenarnya kode untuk Select Option Role sudah ada pada kode Controller User.php dan pada form modaltambah.php juga modaledit.php, saya akan menjelaskan alurnya saja.
Query tabel role
Intinya kita hanya perlu mengambil dari database, memilih semua isi dari tabel role untuk selanjutnya ditampilkan pada form modaltambah.php dan modaledit.php, kita dapat melakukan query dari model atau bisa juga dari Controller. Nah, kali ini saya akan melakukan query dari Controller, tepatnya Controller User.php, perhatikan kode berikut ini:
php
//tampil modal tambah
public function tambahdata()
{
if ($this->request->isAJAX()) {
//data role
$role = new Modelrole;
$data['role'] = $role->findAll();
....
....
....
}
//tampil edit data
public function editdata()
{
if ($this->request->isAJAX()) {
$id_user = $this->request->getVar('id_user');
//data user
$request = Services::request();
$user = new Modeluser($request);
$data['user'] = $user->find($id_user);
//data role
$role = new Modelrole;
$data['role'] = $role->findAll();
....
....
Perhatikan potongan kode baris di atas, di sana terdapat dua fungsi yaitu: tambahdata dan editdata, kedua fungsi tersebut merupakan fungsi yang akan diakses oleh form modaltambah.php dan modaledit.php, terdapat kode:
php
//data role
$role = new Modelrole;
$data['role'] = $role->findAll();
Kode tersebut untuk menampilkan semua isi dari tabel role, jadi kalau dijabarkan akan secara sederhana seperti ini: "sistem tolong tampilkan semua isi data role, berdasarkan Modelrole atau variabel $role", dalam Modelrole kita sudah mendekralasikan filed mana yang dapat diakses, sehingga data yang diambil berdasarkan dekralasi tersebut.
Menampilkan pada form modaltambah.php dan modaledit.php
Perhatikan potongan kode berikut ini:
Potongan kode modaltambah.php
html
<div class="form-group row">
<label for="" class="col-sm-2 col-form-label">Role</label>
<div class="col-sm-4">
<select name="id_role" id="id_role" class="form-control">
<option value="">--Pilih--</option>
<?php foreach ($role as $c) : ?>
<option value="<?= $c['id_role'] ?>"><?= $c['role'] ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
Potongan kode modaledit.php
html
<div class="form-group row">
<label for="" class="col-sm-2 col-form-label">Role</label>
<div class="col-sm-4">
<select name="id_role" id="id_role" class="form-control">
<option value="">--Pilih--</option>
<?php foreach ($role as $c) : ?>
<?php if ($c['id_role'] == $user['id_role']) { ?>
<option value="<?= $c['id_role'] ?>" selected><?= $c['role'] ?></option>
<?php } else { ?>
<option value="<?= $c['id_role'] ?>"><?= $c['role'] ?></option>
<?php
}
endforeach; ?>
</select>
</div>
</div>
Pada modaletambah.php select option role belum dipilih, sehingga tampilan awal ketika form modaltambah muncul pada bagian role akan menampilkan --Pilih--, sedangkan pada modaledit.php pengguna sudah memilih role, sehingga dalam baris kode modaledit.php ada percabangan jika (if), id_role hasil query role sama dengan id_role hasil query user, maka option selected, jadi nanti akan muncul role yang sudah dipilih, perhatikan gambar berikut untuk membandingkan:
Form Modal Tambah
Form Modal Edit
Menambahkan Kolom Role pada Datatable
Bagian ini merupakan pembahasan inti di mana kita akan menampilkan query hasil join antar tabel yaitu tabel user dan role, langkahnya cukup sederhana, kita cukup mengedit tiga file:
- Model Modeluser.php
- Controller User.php
- View datauser.php
Model Modeluser.php
Kita akan menggabungkan (join) tabel user dan role, berdasarkan id_role, intinya id_role akan menjadi kunci relasi untuk menggabungkan tabel-tabel tersebut, perhatikan potongan baris kode pada Modeluser.php berikut ini:
Baris kode sebelum diubah
php
function __construct(RequestInterface $request)
{
$request = Services::request();
parent::__construct();
$this->db = db_connect();
$this->request = $request;
//bagian kueri tabel
$this->dt = $this->db->table($this->table);
}
Baris kode setelah diubah
php
function __construct(RequestInterface $request)
{
$request = Services::request();
parent::__construct();
$this->db = db_connect();
$this->request = $request;
//bagian kueri tabel
//bagian yang telah diubah
$this->dt = $this->db->table($this->table)->select('id_user,nama,email,role')->join('role', 'role.id_role=user.id_role');
}
Silahkan ubah kode Modeluser.php seperti kode di atas (baris ke 27), kita cukup menambahkan select(...) dan join(...).
Controller User.php
Selanjutnya adalah mengubah Controller User.php, pada baris setelah email (baris ke 46/47) tambahkan $row[] = $list->role;
, seperti berikut ini:
php
$row[] = $no;
$row[] = $list->nama;
$row[] = $list->email;
//bagian yang sudah diubah
$row[] = $list->role;
$row[] = $tomboledit . " " . $tombolhapus;
$data[] = $row;
View datauser.php
Terakhir adalah nambahkan satu baris pada view datauser.php, untuk menambahkan kolom Role. perhatikan potongan kode berikut ini:
html
<tr>
<td>No</td>
<td>Nama</td>
<td>Email</td>
<td>Role</td>
<td>Aksi</td>
</tr>
Pada baris setelah email tambahkan kolom <td>Role</td>
, seperti pada kode di atas.
Gimana teman-teman?. Semoga saja dapat memahami setiap bagian pada artikel kali ini. Jika belum silahkan untuk mengirim komentar. Terima kasih.
Tidak ada komentar untuk "Select Option dan Join Tabel di Codeigniter #5"
Posting Komentar
Komentarnya dong cuuuy :D