Postingan lainnya
Database Error Occured
Assalaamu'alaikum para suhu izin bertanya lagi dong. Jadi saya berniat menyatukan syntax beberapa crud dari beberapa tabel ke dalam satu model dan satu controller. Namun yang terjadi ketika saya insert data di halaman data SPP, malah terjadi error bahwa tidak diketahui kolom 'id_kelas', dan juga valuenya menjadi 6 kolom (alias seperti tabel yang tergabung/relasi). Padahal tabel t_spp hanya terdiri atas 3 kolom saja, yakni 'id_spp', 'tahun', 'nominal'. Saya berharap para suhu memahami bahasa saya dan mohon maaf jika bahasa saya berantakan😂.
Berikut Syntaxnya
Model Modeldata.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Modeldata extends CI_Model
{
//CRUD Kelas
private $t_kelas = "t_kelas";
public $id_kelas;
public $nama_kelas;
public $kompetensi_keahlian;
public function getAllKelas()
{
return $this->db->get($this->t_kelas)->result();
}
public function getByIdKelas($id)
{
return $this->db->get_where($this->t_kelas, ["id_kelas" => $id])->row();
}
public function insertKelas()
{
$post = $this->input->post();
$this->nama_kelas = $post["nama_kelas"];
$this->kompetensi_keahlian = $post["kompetensi_keahlian"];
return $this->db->insert($this->t_kelas, $this);
}
public function updateKelas()
{
$post = $this->input->post();
$this->id_kelas = $post["id"];
$this->nama_kelas = $post["nama_kelas"];
$this->kompetensi_keahlian = $post["kompetensi_keahlian"];
return $this->db->update($this->t_kelas, $this, array('id_kelas' => $post['id']));
}
public function deleteKelas($id)
{
return $this->db->delete($this->t_kelas, array('id_kelas' => $id));
}
//CRUD SPP
private $t_spp = "t_spp";
public $id_spp;
public $tahun;
public $nominal;
public function getAllSpp()
{
return $this->db->get($this->t_spp)->result();
}
public function getByIdSpp($id)
{
return $this->db->get_where($this->t_spp, ["id_spp" => $id])->row();
}
public function insertSpp()
{
$post = $this->input->post();
$this->id_spp = $post["id_spp"];
$this->tahun = $post["tahun"];
$this->nominal = $post["nominal"];
return $this->db->insert($this->t_spp, $this);
}
public function updateSpp()
{
$post = $this->input->post();
$this->id_spp = $post["id"];
$this->tahun = $post["tahun"];
$this->nominal = $post["nominal"];
return $this->db->update($this->t_spp, $this, array('id_spp' => $post['id']));
}
public function deleteSpp($id)
{
return $this->db->delete($this->t_spp, array('id_spp' => $id));
}
}
?>
Controller Admin.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("Modeldata");
$this->load->library('form_validation');
}
public function index()
{
$this->template->load('halaman_master', 'template/_partials/dashboard');
}
//Data Kelas
public function dataKelas()
{
$data["tampilkankelas"] = $this->Modeldata->getAllKelas();
$this->template->load('halaman_master', 'template/_partials/data_kelas', $data);
}
public function tambahKelas()
{
$kelas = $this->Modeldata;
$validation = $this->form_validation;
$validation->set_rules('nama_kelas', 'Nama Kelas', 'required|is_unique[t_kelas.nama_kelas]', array('required' => 'Nama Kelas tidak boleh kosong', 'is_unique' => 'Nama Kelas sudah ada di database'));
$validation->set_rules('kompetensi_keahlian', 'Kompetensi Keahlian', 'required', array('required' => 'Kompetensi Keahlian tidak boleh kosong'));
if ($validation->run()==FALSE)
{
$this->dataKelas();
}else{
$kelas->insertKelas();
$this->session->set_flashdata('success', 'Data berhasil di tambahkan!');
redirect ('Admin/dataKelas');
}
}
public function editKelas($id = null)
{
if (!isset($id)) redirect('admin/dataKelas');
$kelas = $this->Modeldata;
$data["kelas"] = $kelas->getByIdKelas($id);
if (!$data["kelas"]) show_404();
$validation = $this->form_validation;
$validation->set_rules('nama_kelas', 'Nama Kelas', 'required', array('required' => 'Nama Kelas tidak boleh kosong'));
$validation->set_rules('kompetensi_keahlian', 'Kompetensi Keahlian', 'required', array('required' => 'Kompetensi Keahlian tidak boleh kosong'));
if ($validation->run() == FALSE)
{
$this->template->load('halaman_master', 'template/_partials/edit_kelas', $data);
}else{
$kelas->updateKelas();
$this->session->set_flashdata('success', 'Data berhasil diubah');
redirect ('Admin/dataKelas');
}
}
public function hapusKelas($id = null)
{
if (!isset($id)) show_404();
if ($this->Modeldata->deleteKelas($id))
{
redirect(site_url('Admin/dataKelas'));
}
}
//Data SPP
public function dataSpp()
{
$data["tampilkanspp"] = $this->Modeldata->getAllSpp();
$this->template->load('halaman_master', 'template/_partials/data_spp', $data);
}
public function tambahspp()
{
$spp = $this->Modeldata;
$validation = $this->form_validation;
$validation->set_rules('tahun', 'Tahun', 'required|is_unique[t_spp.tahun]', array('required' => 'Tahun tidak boleh kosong', 'is_unique' => 'Tahun sudah ada di database'));
$validation->set_rules('nominal', 'Nominal', 'required|numeric', array('required' => 'Nominal tidak boleh kosong', 'numeric' => 'Nominal harus berisi angka '));
if ($validation->run()==FALSE)
{
$this->dataspp();
}else{
$spp->insertSpp();
$this->session->set_flashdata('success', 'Data berhasil di tambahkan!');
redirect ('Admin/dataspp');
}
}
public function editspp($id = null)
{
if (!isset($id)) redirect('admin/dataspp');
$spp = $this->Modeldata;
$data["spp"] = $spp->getByIdspp($id);
if (!$data["spp"]) show_404();
$validation = $this->form_validation;
$validation->set_rules('tahun', 'Tahun', 'required', array('required' => 'Tahun tidak boleh kosong'));
$validation->set_rules('nominal', 'Nominal', 'required', array('required' => 'Nominal tidak boleh kosong'));
if ($validation->run() == FALSE)
{
$this->template->load('halaman_master', 'template/_partials/edit_spp', $data);
}else{
$spp->updatespp();
$this->session->set_flashdata('success', 'Data berhasil diubah');
redirect ('Admin/dataspp');
}
}
public function hapusspp($id = null)
{
if (!isset($id)) show_404();
if ($this->Modeldata->deletespp($id))
{
redirect(site_url('Admin/dataspp'));
}
}
}
View data_spp.php
<?php if ($this->session->flashdata('success')):?>
<div class="alert alert-success" role="alert">
<?php echo $this->session->flashdata('success');?>
</div>
<?php endif;?>
<?php if (validation_errors()) :?>
<div class="alert alert-danger">
<?php echo validation_errors();?>
</div>
<?php endif;?>
<div class="card mb-3">
<div class="card-header">
<b class="text-success">Form Data SPP</b>
</div>
<div class="card-body">
<form action="<?php echo site_url('Admin/tambahSPP')?>" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label>ID SPP</label>
<input class="form-control" type="text" name="id_spp" placeholder="ID SPP"/>
</div>
<div class="form-group">
<label>Tahun</label>
<input class="form-control" type="text" name="tahun" placeholder="Tahun SPP"/>
</div>
<div class="form-group">
<label>Nominal</label>
<input type="numeric" name="nominal" class="form-control" placeholder="Masukkan Nominal Pembayaran"/>
</div>
<input class="btn btn-success" type="submit" name="btn" value="Simpan"/>
</form>
</div>
</div>
<div class="card mb-3">
<div class="card-header">
<b class="text-primary">Data SPP</b>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>ID SPP</th>
<th>Tahun</th>
<th>Nominal</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php foreach ($tampilkanspp as $spp):?>
<tr>
<td><?php echo $spp->id_spp?></td>
<td><?php echo $spp->tahun?></td>
<td><?php echo $spp->nominal?></td>
<td>
<a href="<?php echo site_url('Admin/editSpp/'.$spp->id_spp)?>" class="btn btn-small text-primary"><i class="fas fa-edit"></i> Edit</a>
<a href="#" onclick="deleteConfirm('<?php echo site_url('Admin/hapusSpp/'.$spp->id_spp) ?>')" class="btn btn-small text-danger"><i class="fas fa-trash"></i> Hapus</a>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
</div>
Dan ini pesan errornya, mohon bantuannya para suhu. Terima kasih.
Screenshot_2021-03-20-14-32-18.png
3 Jawaban:
<div>Coba method insertSpp -nya diubah jadi kaya gini :</div><pre>public function insertSpp() { $post = $this->input->post(); $data = [ 'id_spp' => $post["id_spp"], 'tahun' => $post["tahun"], 'nominal' => $post["nominal"] ];
return $this-&gt;db-&gt;insert($this-&gt;t_spp, $data);
}</pre><div><br>Untuk pertanyaan, kenapa field dan value -nya jadi 6, karena di model kamu, ada beberapa attribute/properti dari kelas Modeldata nya. Class Modeldata itu kan dia punya atribute seperti ini :</div><pre>public $id_kelas; public $nama_kelas; public $kompetensi_keahlian;
public $id_spp; public $tahun; public $nominal;</pre><div><br>Makanya, ketika agan menggunakan keyword $this pada bagian ini </div><pre>return $this->db->insert($this->t_spp, $this);</pre><div>dia akan mengembalikan 6 attribute pada class Modeldata tsb.<br><br>Saran saya, gunakan 1 model hanya untuk 1 tabel saja, jangan digabung dengan tabel lainnya, tujuannya biar kode kita lebih rapih dan bersih, juga agar mudah untuk di-maintenance.<br><br>Semoga terbantu.</div>
<div>Oke Gan terima kasih😂mau nanya sekali lagi Gan, kalo misalkan kita membuat beberapa Model dan Controller untuk per satu tabel, kira² nanti akan ada pengaruh dalam page rendering/loadingnya gak? Semisal nanti mungkin loadingnya jadi lebih lama gitu, atau malah lebih cepat? Sekali lagi terima kasih atas ilmunya gan😂🙏</div>
Tanggapan
Load model yang dibutuhkan saja, yg tidak dibutuhkan jangan di load. Misalkan di halaman A hanya butuh data X dan Y, ya kita load model yang berkaitan dengan data X dan Y saja, kita ngga perlu load model lain yang tidak diperlukan.
<div>Siappp, terima kasih Gan atas ilmu dan <br>tutornya. Ilmunya bermanfaat banget nih<br>🙏😁</div>