Menampilkan data berdasarkan id dari hasil query join codeigniter

Ceritanya saya mau menampilkan data nilai siswa dari dua tabel di database yaitu tabel siswa dan tabel nilai. Tabel siswa Tabel nilai

Pada page index saya hanya menampilkan data siswa saja. Page index

untuk menampilkan data siswa saya menggunakan query biasa untuk memanggil data

public function data_siswa() {
		return $this->db->get('siswa')->result_array();
	}

Lalu saya ingin ketika mengklik tombol 'Detail', detail nilai siswa yang terpilih ditampilkan. Page detail

untuk mamanggil data nilai saya gunakan query join

public function nilaijoin() {
		$this->db->select('*');
		$this->db->from('nilai');
		$this->db->join('siswa', 'siswa.id_siswa = nilai.id_siswa', 'left');
		$this->db->where('siswa.id_siswa');
		return $this->db->get()->result();
	}

adapun controllernya berikut ini

public function index() {
        $data['siswa'] = $this->Welcome_model->data_siswa();
        $this->load->view('tes/join', $data);
    }

    public function detail() {
        $data['detailnilai'] = $this->Tes_model->nilaijoin();
        $this->load->view('tes/detail', $data);
    }

lalu untuk link dari tombol 'Detail' adalah sebagai berikut

<a href="<?php echo base_url(); ?>tes/detail/<?php echo $nil['id_siswa']; ?>" class="btn btn-primary btn-sm">Detail</a>

problemnya saat tombol detail di klik, maka semua detail nilai tampil dan tidak berdasarkan id siswa yang dipilih. Mohon bantuannya.

avatar Ahmad554
@Ahmad554

95 Kontribusi 39 Poin

Diperbarui 1 tahun yang lalu

3 Jawaban:

URLnya = tes/detail/{id_siswa} tapi di controller nggak di ambil IDnya berapa, sama nggak dikirim juga ke model untuk query wherenya.

jadi seharusnya controller seperti ini :

<pre> public funtion detail($id){ $data['detailnilai'] = $this-&gt;Tes_model-&gt;nilaijoin($id); $this-&gt;load-&gt;view('tes/detail', $data); } </pre>

Sedangkan pada model jadi seperti ini

<pre> public function nilaijoin($id) { $this-&gt;db-&gt;select('*'); $this-&gt;db-&gt;from('nilai'); $this-&gt;db-&gt;join('siswa', 'siswa.id_siswa = nilai.id_siswa', 'left'); $this-&gt;db-&gt;where('siswa.id_siswa', $id); return $this-&gt;db-&gt;get()-&gt;result(); } </pre>

avatar EddyPermana22
@EddyPermana22

20 Kontribusi 18 Poin

Dipost 4 tahun yang lalu

Tanggapan

mantap terima kasih bang .. :D

Untuk modelnya kayak gini kak <pre> function nilaijoin($id){ $this-&gt;db-&gt;select(); $this-&gt;db-&gt;from('siswa as b'); $this-&gt;db-&gt;join('nilai as a', 'a.id_siswa = b.id_siswa'); $this-&gt;db-&gt;where('b.id_siswa',$id); $result= $this-&gt;db-&gt;get(); return $result; } </pre>

dan controllernya: <pre> &lt;?php defined('BASEPATH') OR exit('No direct script access allowed');

class Tes extends CI_Controller{

function detail($id){ $data['detailnilai'] = $this-&gt;Tes_model-&gt;nilaijoin($id); $this-&gt;load-&gt;view('tes/detail', $data); } } </pre>

coba aja kak dipanggil di url dulu, ga usah dibuttonnya: misal: localhost/folder/tes/detail/1

avatar alexistdev
@alexistdev

25 Kontribusi 11 Poin

Dipost 4 tahun yang lalu

<div>selamat siang boleh liat viewnya ga ya ?</div>

avatar mfajribryanp
@mfajribryanp

1 Kontribusi 0 Poin

Dipost 1 tahun yang lalu

Login untuk ikut Jawaban