Source Code PHP untuk Relasi Many to Many-Bagian 1

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

Source Code PHP untuk Relasi Many to ManySource Code PHP untuk Relasi Many to Many-Bagian 1: Gimana kabar teman2 semua, hampir setahun gak sempat nulis tutorial, kini saya kembali lagi.. seperti kata pepatah kalau ada sumur di ladang, boleh kita menumpang mandi, dst silahkan dilanjutkan.. hehe.

Kali ini saya akan memberikan tutorial tentang source code PHP untuk tabel relasi. Teman2 tau relasi gak? coba lihat gambar disamping hihi.. itu salah satu bentuk 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 laki2 memiliki banyak istri itu relasinya gimana?? jawab sendiri dah hehe…

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 Cara Lengkap Membuat Database MySql dan Tabel Baru di phpMyAdmin 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.

Oke kita lanjut karena sy udah minum tadi dan makasi sudah menunggu hehehe, 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 :

Baca jugaSource Code PHP untuk Mengubah Format Tanggal MySQL ke Format Indonesia

Cara Buat Sourche Code PHP

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 :

<?php

include “koneksi.php”;

?>

<h2 align=”center”><u>Pilih Mata Kuliah</u></h2>

<table border=”1″ cellpadding=”1″ cellspacing=”0″

align=”center” width=”60%”>

    <tr bgcolor=”#ff6600″>

        <th>No</th>

        <th>Kode MK</th>

        <th>Nama Mata Kuliah</th>

        <th>SKS</th>

        <th>Aksi</th>

    </tr>

    <?php

    $a=”select * from mk”;

    $b=mysqli_query($koneksi,$a);

    $no=1;

    while($c=mysqli_fetch_array($b)){

    ?>

    <tr>

        <td align=”center”><?php echo $no;?></td>

        <td align=”center”><?php echo $c[‘kodemk’];?></td>

        <td><?php echo $c[‘namamk’];?></td>

        <td><?php echo $c[‘sks’];?></td>

        <td>

        <?php

        $s=”select * from krs where nim=’$_GET[nim]’

        and kodemk=’$c[kodemk]'”;

        $q=mysqli_query($koneksi,$s);

        $l=mysqli_num_rows($q);

        if($l>0){

        echo “<font color=’green’><b>Sukses</b></font>”;

        }else{

        echo “<a href=’inputkrs.php?kodemk=$c[kodemk]&nim=$_GET[nim]’>Pilih</a>”;

        }

        ?>

        </td>

    </tr>

    <?php $no++; } ?>

</table>

<table border=”0″ align=”center” width=”60%”>

    <tr><td>

    <a href=”index.php” style=”text-decoration:none”>

    <input type=”button” value=”Kembali”></a>

    <a href=”lihatkrs.php?nim=<?php echo $_GET[‘nim’];?>” style=”text-decoration:none”>

    <input type=”button” value=”Lihat KRS”></a>

    </td></tr>

</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.

Baca jugaCara Mudah Membuat Halaman Dinamis Menggunakan PHP !!

Lalu bagaimana aksi untuk menghapus mata kuliah kalau kita salah pilih? bagaimana pula bentuk tampilan KRS dan cara mencetaknya? Karena saya udah ngantuk dan ini udah jam 11 malam, maka akan kita lanjutkan pada tutorial selanjutnya.

Oh ya like dulu dong tutorial ini melalui icon fb dibawah ini… masa like aja pelit hehe.. lebih bagus lagi kalau share ke teman2 yang lain. Yang sudah nge-like dan sharre nanti akan saya buatkan lanjutan untuk tutorial lanjutannya..

Tinggalkan Balasan

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

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