Menampilkan data dari 3 tabel yang berbeda dengan PHP

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:

tb_jurrusan
tb_spp
tb_siswa

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.

Posting Komentar

4 Komentar

  1. terima kasih pembelajarannya sangat bermanfaat saya sariman(1922520014) saya sedang belajar DPW di https://www.atmaluhur.ac.id
    lanjutkan kakak..

    BalasHapus
  2. Kalau pengen hapus data yang sudah di inner gimana caranya ya kak ?

    BalasHapus
  3. script join table yang kucari akirnya ketemu. terimakasih min

    BalasHapus
  4. bang 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