Belajar PHP - Cara menampilkan data dari 3 tabel yang berbeda dengan menggunakan PHP. Pada tutorial kali ini kita akan menggabungkan 3 table yang berbeda dan kemudian menampilkannya dalam tabel.
Disini saya sudah buat database dengan nama "ex" dan 3 tabel didalamnya dengan nama tb_siswa, tb_jurusan dan tb_spp.
Struktur pada masing - masing tabel adalah sebagai berikut:
Data pada masing - masing tabel:
Atau kalian bisa buat databasenya lalu pastekan kode berikut pada menu SQL. Maka hasilnya akan sama seperti gambar diatas.
Lalu buka text editor kalian, dan buat file dengan nama join-table.php, berikut kodenya:
Kode untuk koneksi ke database "ex". Akan menampilkan pesan kesalahan apabila koneksi yang dibuat salah.
Perintah untuk mengambil data yang sudah digabungkan menggunakan fungsi
Disini saya sudah buat database dengan nama "ex" dan 3 tabel didalamnya dengan nama tb_siswa, tb_jurusan dan tb_spp.
Struktur pada masing - masing tabel adalah sebagai berikut:
Data pada masing - masing tabel:
|
|
||||
|
Atau kalian bisa buat databasenya lalu pastekan kode berikut pada menu SQL. Maka hasilnya akan sama seperti gambar diatas.
--
-- Database: `ex`
--
-- --------------------------------------------------------
--
-- Table structure for table `tb_jurusan`
--
CREATE TABLE `tb_jurusan` (
`id_jurusan` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`nama_jurusan` varchar(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `tb_jurusan`
--
INSERT INTO `tb_jurusan` (`id_jurusan`, `nama_jurusan`) VALUES
(1, 'RPL'),
(2, 'MM'),
(3, 'TKRO'),
(4, 'AP');
-- --------------------------------------------------------
--
-- Table structure for table `tb_siswa`
--
CREATE TABLE `tb_siswa` (
`id_siswa` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`nama` varchar(50) NOT NULL,
`kelas` varchar(2) NOT NULL,
`id_jurusan` int(11) NOT NULL,
`id_spp` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `tb_siswa`
--
INSERT INTO `tb_siswa` (`id_siswa`, `nama`, `kelas`, `id_jurusan`, `id_spp`) VALUES
(1, 'si A', 'X', 1, 3),
(2, 'si B', 'XI', 2, 2),
(3, 'si C', 'XI', 3, 1),
(4, 'si D', 'XI', 4, 1);
-- --------------------------------------------------------
--
-- Table structure for table `tb_spp`
--
CREATE TABLE `tb_spp` (
`id_spp` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`tahun` int(11) NOT NULL,
`nominal` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `tb_spp`
--
INSERT INTO `tb_spp` (`id_spp`, `tahun`, `nominal`) VALUES
(1, 2018, 140000),
(2, 2019, 150000),
(3, 2020, 155000);
Lalu buka text editor kalian, dan buat file dengan nama join-table.php, berikut kodenya:
join-table.php
<?php
$conn = new mysqli('localhost', 'root', '', 'ex');
if (mysqli_connect_errno($conn)) {
echo "Koneksi gagal " . mysqli_connect_error();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Join Table</title>
</head>
<body>
<table border="1">
<tr>
<td>No.</td>
<td>Nama</td>
<td>Kelas</td>
<td>Jurusan</td>
<td>Tahun</td>
<td>Nominal</td>
</tr>
<?php
$query = mysqli_query($conn, "SELECT * FROM tb_siswa INNER JOIN tb_jurusan ON tb_siswa.id_jurusan = tb_jurusan.id_jurusan INNER JOIN tb_spp ON tb_siswa.id_spp = tb_spp.id_spp");
$no = 1;
foreach ($query as $row) :
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $row['nama']; ?></td>
<td><?= $row['kelas']; ?></td>
<td><?= $row['nama_jurusan']; ?></td>
<td><?= $row['tahun']; ?></td>
<td><?= $row['nominal']; ?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
Penjelasan:
$conn = new mysqli('localhost', 'root', '', 'ex');
if (mysqli_connect_errno($conn)) {
echo "Koneksi gagal " . mysqli_connect_error();
}
Kode untuk koneksi ke database "ex". Akan menampilkan pesan kesalahan apabila koneksi yang dibuat salah.
$query = mysqli_query($conn, "SELECT * FROM tb_siswa INNER JOIN tb_jurusan ON tb_siswa.id_jurusan = tb_jurusan.id_jurusan INNER JOIN tb_spp ON tb_siswa.id_spp = tb_spp.id_spp");
Perintah untuk mengambil data yang sudah digabungkan menggunakan fungsi
INNER JOIN
.Output:
Kolom Nama, Kelas diambil dari tb_siswa, Jurusan dari tb_jurusan yang dipanggil berdasarkan
id_jurusan
yang sama pada tb_siswa, kolom Tahun dan Nominal dari tb_spp yang dipanggil berdasarkan id_spp
yang sama pada tb_siswa.
4 Komentar
terima kasih pembelajarannya sangat bermanfaat saya sariman(1922520014) saya sedang belajar DPW di https://www.atmaluhur.ac.id
BalasHapuslanjutkan kakak..
Kalau pengen hapus data yang sudah di inner gimana caranya ya kak ?
BalasHapusscript join table yang kucari akirnya ketemu. terimakasih min
BalasHapusbang mau tanya apabila kita memiliki tabel user admin dan tabel user anggota bagaimana di masing2 tabel ada id_wilyah bagaimana caranya agar user admin yang kita buat hanya menampilkan data user anggota sesuai id_wilayah masing2 terimakasih
BalasHapus