Source Code PHP untuk Relasi Many to Many-Bagian 2

Diposting pada
Source Code PHP untuk Relasi Many to Many-Bagian 2
5 (100%) 1 vote

Source Code PHP untuk Relasi Many to Many-Bagian 2Source Code PHP untuk Relasi Many to Many-Bagian 2: Kali ini saya akan memberikan tutorial tentang source code PHP untuk tabel relasi, apa teman- teman tau relasi itu apa? coba lihat gambar disamping, itu juga adalah salah satu bentuk dari relasi.

Tentu anda tau kita sudah sering bahkan mungkin sudah “bosan” mendengar relasi database ada 3 yaitu one to one, one to many dan many to many.

Relasi one to one contohnya adalah relasi antara mahasiswa dengan prodi dimana setiap mahasiswa hanya boleh memiliki satu prodi.

Kalau mahasiswa ke prodi adalah one to one, gimana dengan kebalikannya yaitu relasi prodi ke mahasiswa? kita bisa jawab bahwa setiap prodi memiliki banyak mahasiswa, itulah contoh relasi one to many.

Pertanyaan lagi, kalau seorang laki- laki memiliki banyak istri itu relasinya gimana?? jawab sendiri dah hehe…

Pada tutorial yang lalu saya pernah membahas coding relasi untuk one to many antara prodi dan mahasiswa, bisa baca lagi tutorial Script Pemrograman PHP untuk tabel relasi dengan MySQLi.

Disana pada coding tampil terdapat query SQL yang menggabung tabel prodi dan mahasiswa, selain itu pada coding tambah dan ubah mahasiswa kita bisa lihat ada combobox dinamis untuk memilih program studi dimana datanya diambil dari tabel program studi.

Semoga kalian sudah faham dengan tutorial tersebut, lalu apakah untuk relasi many to many juga caranya sama seperti itu? Oke sebelum menjawab pertanyaan tersebut terlebih dahulu saya akan menjelaskan sedikit tentang relasi many to many.

Coba kita lihat lagi kasus hubungan antara program studi dan mahasiswa. Dalam hal ini kita tau bahwa satu buah program studi bisa memiliki banyak mahasiswa, sedangkan seorang mahasiswa hanya boleh memiliki satu program studi.. intinya adalah jika 2 tabel yang dihubungkan memiliki satu dengan banyak dan searah maka itu disebut one to many.

Sekarang coba kita bandingkan dengan kasus lain yaitu hubungan antara tabel mahasiswa dengan mata kuliah.

Pada kasus seorang mahasiswa bisa mengambil banyak mata kuliah, dan sebuah mata kuliah boleh diambil oleh banyak mahasiswa.

Jadi kita bisa lihat hubungan satu dengan banyak namun berlaku 2 arah atau timbal balik, maka yang seperti ini disebut relasi many to many. Jelas! Kalau masih belum jelas ya sabar aja ya.. harus ngopi dulu kale baru otak lebih encer hehe..

Lalu bagaimana cara membuat relasi many to many? pada tutorial lalu berjudul Script Pemrograman PHP untuk tabel relasi dengan MySQLi dapat dilihat bahwa untuk relasi one to many, kodeprodi dari tabel prodi bisa dimasukkan langsung ke tabel mahasiswa sebagai foreign key, namun perlu diperhatikan bahwa untuk relasi many to many hal ini tidak berlaku, kenapa gak bisa? iya karena adanya hubungan 2 arah yang tadi, lalu gimana caranya?

Untuk relasi many to many seperti mahasiswa dengan mata kuliah tadi, maka harus dibuatkan tabel bantu yang menghubungkan kedua tabel tersebut, apa kira2 tabelnya? kita bisa lihat kata kerja yang menghubungkan mahasiswa dengan mata kuliah misalnya mahasiswa “mengambil” mata kuliah.

Nah proses “mengambil” mata kuliah ini kalau dalam sistem akademik kampus di sebut KRS-an, jadi kita bisa buatkan tabel penghubungnya dengan nama tabel KRS.

Tabel krs ini nantinya akan mengambil field nim dari tabel mahasiswa dan kode mata kuliah dari tabel mata kuliah sebagai foreign key, untuk lebih jelasnya silahkan lihat dan coba buat database akademik dan 3 tabel seperti berikut :

Cara Membuat Source Code PHP untuk Relasi Many to Many

CREATE TABLE IF NOT EXISTS `mahasiswa` (

  `nim` char(9) NOT NULL,

  `nama` varchar(30) NOT NULL,

  `prodi` varchar(30) NOT NULL,

  `semester` int(1) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

INSERT INTO `mahasiswa` (`nim`, `nama`, `prodi`, `semester`) VALUES

(’12.KA.092′, ‘Baiq Junia’, ‘Komputerisasi Akuntansi’, 3),

(’12.TK.001′, ‘Istiani’, ‘Teknik Komputer’, 2),

(’13.KA.001′, ‘Halimatussakdiah’, ‘Komputerisasi Akuntansi’, 5),

(’13.KA.023′, ‘Siti Fatimah’, ‘Komputerisasi Akuntansi’, 3),

(’13.KA.091′, ‘Samsul’, ‘Komputerisasi Akuntansi’, 5),

(’13.TK.009′, ‘Efendi Saputra’, ‘Teknik Komputer’, 5),

(’13.TK.071′, ‘Tuthi Wahyu Utami’, ‘Teknik Komputer’, 3);

 

CREATE TABLE IF NOT EXISTS `mk` (

  `kodemk` varchar(4) NOT NULL,

  `namamk` varchar(30) NOT NULL,

  `sks` int(1) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

INSERT INTO `mk` (`kodemk`, `namamk`, `sks`) VALUES

(‘A001’, ‘KKPI’, 2),

(‘A002’, ‘Desain Web’, 2),

(‘A003’, ‘Visual Basic’, 2),

(‘A004’, ‘Pengantar Teknologi Informasi’, 3),

(‘A005’, ‘Algoritma & Pemrograman I’, 2),

(‘A006’, ‘Desain Grafis’, 2),

(‘A007’, ‘Algoritma & Pemrograman II’, 2),

(‘A008’, ‘Komunikasi Data’, 3),

(‘A009’, ‘Sistem Operasi’, 3),

(‘A010’, ‘Bahasa Inggris’, 2);

 

CREATE TABLE IF NOT EXISTS `krs` (

  `id` int(4) NOT NULL,

  `nim` char(9) NOT NULL,

  `kodemk` char(4) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=latin1;

 

INSERT INTO `krs` (`id`, `nim`, `kodemk`) VALUES

(13, ’12.KA.092′, ‘A001’),

(16, ’13.KA.001′, ‘A002’),

(17, ’13.KA.001′, ‘A003’),

(18, ’13.KA.001′, ‘A001’),

(19, ’13.KA.001′, ‘A004’),

(20, ’12.TK.001′, ‘A002’),

(21, ’12.KA.092′, ‘A002’),

(24, ’12.TK.001′, ‘A003’),

(25, ’12.KA.092′, ‘A004’),

(27, ’12.KA.092′, ‘A006’),

(30, ’12.TK.001′, ‘A006’),

(31, ’12.TK.001′, ‘A007’),

(32, ’12.KA.092′, ‘A003’),

(33, ’12.KA.092′, ‘A010’),

(34, ’12.KA.092′, ‘A007’),

(35, ’13.KA.001′, ‘A007’),

(36, ’12.KA.092′, ‘A009’);

 

ALTER TABLE `krs`

  ADD PRIMARY KEY (`id`);

 

ALTER TABLE `mahasiswa`

  ADD PRIMARY KEY (`nim`);

 

ALTER TABLE `mk`

  ADD PRIMARY KEY (`kodemk`);

 

ALTER TABLE `krs`

  MODIFY `id` int(4) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=37;

Selanjutnya silahkan buat folder misalnya folder “relasi” dan buat coding untuk koneksi dan simpan dengan nama koneksi.php di dalam folder tersebut seperti berikut :

  1. <?php
  2. $host=”localhost”;
  3. $user=”root”;
  4. $pass=””;
  5. $db=”akademik”;
  6. $koneksi=mysqli_connect($host,$user,$pass,$db);
  7. ?>

Untuk relasi many to many, kita bisa menampilkan terlebih dahulu salah satu tabel master, misalnya karena mahasiswa yang memilih mata kuliah maka kita bisa membuat coding untuk tampil mahasiswa, simpan dengan nama index.php di dalam folder relasi, codingnya sebagai berikut :

Data Mahasiswa AMIKOM Mataram

  1. <?php
  2. include “koneksi.php”;
  3. ?>
  4. <h2 align=”center”><u>Data Mahasiswa AMIKOM Mataram</u></h2>
  5. <table border=”1″ cellpadding=”1″ cellspacing=”0″
  6. align=”center” width=”60%”>
  7.     <tr bgcolor=”#cccccc”>
  8.         <th>No</th>
  9.         <th>NIM</th>
  10.         <th>Nama Mahasiswa</th>
  11.         <th>Program Studi</th>
  12.         <th>Semester</th>
  13.         <th>Aksi</th>
  14.     </tr>
  15.     <?php
  16.     $a=”select * from mahasiswa”;
  17.     $b=mysqli_query($koneksi,$a);
  18.     $no=1;
  19.     while($c=mysqli_fetch_array($b)){
  20.     ?>
  21.     <tr>
  22.         <td align=”center”><?php echo $no;?></td>
  23.         <td align=”center”><?php echo $c[‘nim’];?></td>
  24.         <td><?php echo $c[‘nama’];?></td>
  25.         <td><?php echo $c[‘prodi’];?></td>
  26.         <td align=”center”><?php echo $c[‘semester’];?></td>
  27.         <td align=”center”>
  28.         <a href=”krsmhs.php?nim=<?php echo $c[‘nim’];?>”>Isi KRS</a>
  29.         </td>
  30.     </tr>
  31.     <?php $no++; } ?>
  32. </table>

Pada coding tampil mahasiswa di atas, dapat dilihat bahwa pada kolom Aksi terdapat link parameter untuk pengisian KRS seperti pada baris ke 28 menuju file krsmhs.php , Secara logis, jika kita mengklik Isi KRS pada salah satu baris seorang mahasiswa, maka harus tampil daftar mata kuliah yang bisa dipilih mahasiswa tersebut.

Jadi intinya link Isi KRS akan menuju halaman yang menampilkan mata kuliah yang akan dipilih mahasiswa. Jadi sekarang buat file krsmhs.php dalam folder relasi seperti berikut :

  1. <?php
  2. include “koneksi.php”;
  3. ?>
  4. <h2 align=”center”><u>Pilih Mata Kuliah</u></h2>
  5. <table border=”1″ cellpadding=”1″ cellspacing=”0″
  6. align=”center” width=”60%”>
  7.     <tr bgcolor=”#ff6600″>
  8.         <th>No</th>
  9.         <th>Kode MK</th>
  10.         <th>Nama Mata Kuliah</th>
  11.         <th>SKS</th>
  12.         <th>Aksi</th>
  13.     </tr>
  14.     <?php
  15.     $a=”select * from mk”;
  16.     $b=mysqli_query($koneksi,$a);
  17.     $no=1;
  18.     while($c=mysqli_fetch_array($b)){
  19.     ?>
  20.     <tr>
  21.         <td align=”center”><?php echo $no;?></td>
  22.         <td align=”center”><?php echo $c[‘kodemk’];?></td>
  23.         <td><?php echo $c[‘namamk’];?></td>
  24.         <td><?php echo $c[‘sks’];?></td>
  25.         <td>
  26.         <?php
  27.         $s=”select * from krs where nim=’$_GET[nim]’
  28.         and kodemk=’$c[kodemk]'”;
  29.         $q=mysqli_query($koneksi,$s);
  30.         $l=mysqli_num_rows($q);
  31.         if($l>0){
  32.         echo “<font color=’green’><b>Sukses</b></font>”;
  33.         }else{
  34.         echo “<a href=’inputkrs.php?kodemk=$c[kodemk]&nim=$_GET[nim]’>Pilih</a>”;
  35.         }
  36.         ?>
  37.         </td>
  38.     </tr>
  39.     <?php $no++; } ?>
  40. </table>
  41. <table border=”0″ align=”center” width=”60%”>
  42.     <tr><td>
  43.     <a href=”index.php” style=”text-decoration:none”>
  44.     <input type=”button” value=”Kembali”></a>
  45.     <a href=”lihatkrs.php?nim=<?php echo $_GET[‘nim’];?>” style=”text-decoration:none”>
  46.     <input type=”button” value=”Lihat KRS”></a>
  47.     </td></tr>
  48. </table>

Coding diatas sebenarnya hanya menampilkan data mata kuliah saja, namun yang perlu diperhatikan adalah isi kolom Aksi pada baris 27 s/d 35. Coding tersebut digunakan untuk mengecek apakah mata kuliah sudah dipilih atau belum.

Jika sudah terpilih maka akan muncul tulisan “sukses” dan jika belum dipilih maka akan muncul link “Pilih” yang menuju ke file inputkrs.php. Dengan cara ini maka user tidak mungkin akan memilih mata kuliah yang sama 2 kali sehingga tidak ada mata kuliah double untuk setiap mahasiswa.

Lalu bagaimana source code untuk inputkrs.php?? Penasaran… Sabaaar hehe. Kalau kita lihat link parameter menuju inputkrs.php, ternyata memiliki 2 paramater yang menjadi GET yaitu kodemk dan nim.

Nah logikanya adalany, data kodemk dan nim yang di GET itulah yang diinput ke tabel krs. Untuk lebih jelasnya, buat file inputkrs.php dapat dibuat seperti berikut :

  1. <?php
  2. include “koneksi.php”;
  3. //hapus
  4. if(isset($_GET[‘nim’]) && isset($_GET[‘kodemk’])){
  5.     $nim=$_GET[‘nim’];
  6.     $kodemk=$_GET[‘kodemk’];
  7.     $sql=”insert into krs values(”,’$nim’,’$kodemk’)”;
  8.     $query=mysqli_query($koneksi,$sql);
  9.     echo “<script language=’javascript’>
  10. alert(‘Input KRS berhasil!’);
  11. document.location=’krsmhs.php?nim=$_GET[nim]’;
  12. </script>”;
  13.     }else{
  14.     echo “Data yang dipilih tidak ada”;
  15. }
  16. ?>

Coding input krs di atas sebenarnya sederhana saja, bisa kita lihat pada baris 5,6 dan 7 bahwa kodemk dan nim yang di GET pada link parameter langsung dimasukkan ke tabel krs. Id krs sendiri bersifat auto increment jadi bisa terinput otomatis.

Pesan javascript pada baris 9 s/d 12 berfungsi untuk menampilkan kembali halaman pilih mata kuliah setelah proses input sukses.

Lalu bagaimana aksi untuk menghapus mata kuliah kalau kita salah pilih? bagaimana pula bentuk tampilan KRS dan cara mencetaknya? akan kita lanjutkan pada tutorial selanjutnya, nah saya harap sampai sini kalian sudah banyak yang mengerti dan paham untuk cara- cara nya sendiri, sekian dulu post artikelkomputerku kali ini, terimakasih telah membaca dan sampai jumpa pada post yang slanjut nya sob,.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Comment moderation is enabled. Your comment may take some time to appear.