menampilkan database mysql.docx

26
Di dalam suatu RDBMS termasuk MySQL , tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan berhubungan dengan pesan, pesan dengan barang, dsb. Pada pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data yang tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus. Contohnya, dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut transaksi yang pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan minimal dua tabel, yaitu pelanggan dan pesan. Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di database MySQL, namun demikian secara umum perintah penggabungan tabel di semua jenis database tidak jauh berbeda alias sama. Sebelum belajar mengenai perintah penggabungan tabel, perlu dipersiapkan tabel-tabel yang akan dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan menggunakan tabel rancangan sistem pemesanan barang (pembelian) sederhana berikut ini. Untuk membuatnya, Anda dapat menggunakan tools seperti PHPMyAdmin dan MySQLFront atau dapat juga melalui command-prompt. Jika diperlukan, pelajari kembali postingan saya sebelumnya mengenai administrasi database MySQL dengan PHPMyAdmin dan juga dasar-dasar perintah SQL . Jangan lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.

Upload: andri-firmansyah

Post on 02-Dec-2015

157 views

Category:

Documents


6 download

TRANSCRIPT

Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan berhubungan dengan pesan, pesan dengan barang, dsb.

Pada pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data yang tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus. Contohnya, dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut transaksi yang pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan minimal dua tabel, yaitu pelanggan dan pesan.

Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di database MySQL, namun demikian secara umum perintah penggabungan tabel di semua jenis database tidak jauh berbeda alias sama.

Sebelum belajar mengenai perintah penggabungan tabel, perlu dipersiapkan tabel-tabel yang akan dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan menggunakan tabel rancangan sistem pemesanan barang (pembelian) sederhana berikut ini. Untuk membuatnya, Anda dapat menggunakan tools seperti PHPMyAdmin dan MySQLFront atau dapat juga melalui command-prompt. Jika diperlukan, pelajari kembali postingan saya sebelumnya mengenai administrasi database MySQL dengan PHPMyAdmin dan juga dasar-dasar perintah SQL. Jangan lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.

Contoh Class Diagram Sistem Pembelian

1. Inner Join

Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi). Misalkan isi tabel pelanggan dan pesan adalah sebagai berikut :

Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)

Contoh isi tabel pelanggan

Tabel pesan.

Contoh isi tabel pesan

Cara #1. Inner Join dengan WHERE.

Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:

SELECT tabel1.*, tabel2.* FROM tabel1, tabel2WHERE tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesanFROM pelanggan, pesanWHERE pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya sebagai berikut:

Hasil Penggabungan 2 Tabel dengan WHERE

Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang dilakukan oleh 3 (tiga) orang pelanggan. Jika kita lihat kembali isi tabel pelanggan di atas, maka terdapat satu pelanggan yang tidak ditampilkan yaitu yang memiliki id pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah melakukan transaksi.

Cara #1. Inner Join dengan klausa INNER JOIN.

Berikut ini bentuk umumnya:

SELECT tabel1.*, tabel2.*FROM tabel1 INNER JOIN tabel2ON tabel1.PK=tabel2.FK;

Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan.

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesanFROM pelanggan INNER JOIN pesanON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya akan sama dengan gambar di atas (cara #1).

2. Outer Join

Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data yang NULL (kosong) di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).

Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN. Berikut ini bentuk umum dan contohnya:

LEFT JOIN.

Bentuk umum:

SELECT tabel1.*, tabel2.*FROM tabel1 LEFT JOIN tabel2ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesanFROM pelanggan LEFT JOIN pesanON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Left Join

Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan tersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan P0003 isinya NULL, artinya di tabel kanan (pesan) pelanggan tersebut tidak ada.

RIGHT JOIN

Bentuk umum:

SELECT tabel1.*, tabel2.*FROM tabel1 RIGHT JOIN tabel2ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesanFROM pelanggan RIGHT JOIN pesanON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Right Join

Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.

Menggabungkan 3 Tabel atau Lebih

Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan penggabungan 2 (dua) tabel. Sebagai contoh misalnya kita akan menampilkan barang-barang yang dipesan beserta nama barang dan harganya untuk pemesanan dengan nomor 1, sedemikian sehingga hasilnya menjadi sebagai berikut:

Contoh Hasil Penggabungan 3 Tabel

Menampilkan Data Beberapa Tabel

Aug 17, 2011 oleh Ellyx Christian | 1908 kali dibaca sejak Aug 17, 2011 |

Level: PemulaTutorial PHP Menampilkan Data Beberapa Tabel adalah lanjutan dari tutorial Menyimpan Data & Menampilkan Beberapa Tabel. Sebelum membaca tutorial ini silahkan baca terlebih dulu tutorial sebelumnya. Ditutorial sebelumnya telah dijelaskan cara menyimpan data ke beberapa tabel sekaligus. Seperti dijelaskan sebelumnya, ada tiga tipe relasi antar tabel: relasi satu ke satu, satu ke banyak, dan banyak ke banyak. Di sini akan dijelaskan cara menampilkan data masing masing tipe relasi tabel.

Menampilkan Data Dari Beberapa Tabel

Menampilkan Data Dari Tabel Berelasi Satu-ke-satu

Cara paling cepat menampilkan dari tabel yang berelasi satu-ke-satu adalah menggunakan sql join, seperti kode php di bawah.view plain copy to clipboard print TryIt ?

1. <?php  2. $conn = mysql_connect("localhost","root","blah");  3. mysql_select_db("test",$conn);  4. $sql = "select * from product p inner join buku b on p.id_produk=b.id_produk";  5. $result = mysql_query($sql);  6. ?>  7. <table cellpadding="5" cellspacing="0" border="1">  8.     <tr>  9.         <th>Nama</th>  10.         <th>Harga</th>  11.         <th>Penulis</th>  12.         <th>Penerbit</th>  13.         <th>ISBN</th>  14.         <th>Tanggal Terbit</th>  15.     </tr>  16.     <?php while($buku = mysql_fetch_array($result)){?>  17.     <tr>  18.         <td><?php echo $buku['nama'];?></td>  19.         <td><?php echo $buku['harga'];?></td>  20.         <td><?php echo $buku['penulis'];?></td>  21.         <td><?php echo $buku['penerbit'];?></td>  

22.         <td><?php echo $buku['isbn'];?></td>  23.         <td><?php echo $buku['tgl_terbit'];?></td>  24.     </tr>  25.     <?php }?>  26. </table>  

Kode untuk menampilkan data dari beberapa tabel di atas hampir sama dengan cara menampilkan data dari satu tabel. Perbedaannya hanya pada baris ke-4, pada baris ke-4 menggunakan sql join.

Menampilkan Data dari Tabel Berelasi Satu-ke-banyak

Untuk menampilkan data dari tabel berelasi satu ke banyak juga bisa menggunakan sql join, namun lebih bagus jika tidak. Caranya adalah membaca tabel induk dan kemudian menampilkan tabel anak berdasarkan isi tabel induk,seperti:view plain copy to clipboard print TryIt ?

1. <?php  2. $conn = mysql_connect("localhost","root","blah");  3. mysql_select_db("test",$conn);  4. $sql = "select * from album";  5. $result = mysql_query($sql);  6. ?>  7. <table cellpadding="5" cellspacing="0" border="1">  8.     <tr>  9.         <th>Judul</th>  10.         <th>Artis</th>  11.     </tr>  12.     <?php while($album = mysql_fetch_array($result)){?>  13.     <tr>  14.         <td><?php echo $album['judul'];?></td>  15.         <td><?php echo $album['artis'];?></td>  16.     </tr>  17.     <tr>  18.         <td colspan="2">  19.         <strong>Lagu: </strong>  20.         <table cellspacing="0" cellpadding="3">  21.             <tr>  22.                 <td style="border-bottom:1px solid #000;">No Track</td>  23.                 <td style="border-bottom:1px solid #000">Judul</td>  24.                 <td style="border-bottom:1px solid #000">Durasi</td>  25.             </tr>  26.             <?php  27.             $rowset = mysql_query("select * from lagu where id_album='".$album['id']."'");  

28.             while($lagu = mysql_fetch_array($rowset)){  29.             ?>  30.             <tr>  31.                 <td style="border-bottom:1px solid #000; border-right:1px solid #000"><?php 

echo $lagu['no_track'];?></td>  32.                 <td style="border-bottom:1px solid #000; border-right:1px solid #000"><?php 

echo $lagu['judul'];?></td>  33.                 <td style="border-bottom:1px solid #000"><?php echo $lagu['durasi'];?></td>  34.             </tr>  35.             <?php }?>  36.         </table>  37.         </td>  38.     </tr>  39.     <?php }?>  40. </table>  

bisa dilihat kode di atas hampir sama dengan kode untuk menampilkan data dari satu tabel. Perbedaanya adalah pada baris 17-38. Baris 17-38 adalah untuk menampilkan lagu berdasarkan id_album album yang sedang ditampilkan.

Menampilkan Data dari Tabel Berelasi Banyak-ke-banyak

Untuk menampilkan data dari tabel yang berelasi banyak ke banyak hampir sama dengan cara menampilkan data dari tabel berelasi satu ke banyak.Bedanya adalah pada sql yang digunakan, yaitu sql join. Sekarang buka kembali file list-mahasiswa.php yang telah dibuat di tutorial sebelumnya dan ubah menjadi:view plain copy to clipboard print TryIt ?

1. <?php  2. $conn = mysql_connect("localhost","root","blah");  3. mysql_select_db("test",$conn);  4. $sql = "select * from mahasiswa";  5. $result = mysql_query($sql);  6. ?>  7. <table cellspacing="0" cellpadding="5" border="1">  8.     <tr>  9.         <td>NIM</td>  10.         <td>Nama</td>  11.         <td>Jurusan</td>  12.         <td>Aksi</td>  13.     </tr>  14.     <?php while($mhs = mysql_fetch_array($result)){?>  15.     <tr>  16.         <td><?php echo $mhs['nim'];?></td>  

17.         <td><?php echo $mhs['nama'];?></td>  18.         <td><?php echo $mhs['jurusan'];?></td>  19.         <td><a href="mahasiswa_mk.php?nim=<?php echo $mhs['nim'];?>">Tambah Mata 

Kuliah</a></td>  20.     </tr>  21.     <tr>  22.         <td colspan="4">  23.             <strong>Mata Kuliah:</strong>  24.             <table cellspacing="0" cellpadding="5" width="100%">  25.                 <tr>  26.                     <td style="border-bottom:1px solid #000;">Kode MK</td>  27.                     <td style="border-bottom:1px solid #000;">Nama MK</td>  28.                 </tr>  29.                 <?php   30.                 $rowset = mysql_query("select * from mahasiswa_mk m inner join   31.                 mata_kuliah m1 on m.id_mk=m1.id where nim='".$mhs['nim']."'");  32.                 while($mk = mysql_fetch_array($rowset)){  33.                 ?>  34.                 <tr>  35.                     <td style="border-bottom:1px solid #000;border-right:1px solid #000"><?

php echo $mk['kode'];?></td>  36.                     <td style="border-bottom:1px solid #000;"><?php echo $mk['nama'];?></

td>  37.                 </tr>  38.                 <?php }?>  39.             </table>  40.         </td>  41.     </tr>  42.     <?php }?>  43. </table>  

Menyimpan Data & Menampilkan Beberapa Tabel

Jul 21, 2011 oleh Ellyx Christian | 3062 kali dibaca sejak Jul 21, 2011 |

Level: PemulaTutorial PHP Menyimpan Data & Menampilkan Beberapa Tabel Sekaligus, akan menjelaskan cara Menyimpan data ke beberapa tabel dan menampilkan data dari beberapa

tabel yang berelasi. Baik itu tabel dengan relasi one-to-one atau satu-ke-satu, one-to-many atau satu-ke-banyak dan many-to-many atau banyak-ke-banyak. Sebenarnya tidak ada trik atau cara khusus saat menyimpan data ke beberapa table, begitu pula dengan menampilkan data dari beberapa table. Selama memahami cara memproses HTML form yang benar dan memahami cara menyimpan & menampilkan data ke satu tabel.

Relasi Antar Tabel

Pada saat melakukan normalisasi terhadap sebuah data, maka data akan dipecah kedalam beberapa tabel yang berelasi satu sama lainnya. Ada 3 relasi antar table sebagai berikut.

One-to-one Satu-ke-satu

Relasi one-to-one merupakan relasi tabel yang jarang digunakan, relasi ini merelasikan satu data sebuah tabel dengan hanya satu data dari tabel lainnya. Indikasi untuk menggunakan tipe relasi ini adalah jika sebuah data memiliki sebuah subset data tertentu yang menerangkan lebih detil data itu, dimana subset data ini tidak dimiliki oleh data tersebut pada umumnya. Sebagai contoh, sebuah product secara umum memiliki id_produk, nama, harga, jenis. Namun pada tipe product tertentu seperti buku, memiliki data tambahan seperti penulis, penerbit, ISBN, tanggal_terbit. Satu data di tabel product hanya terhubung dengan satu data di tabel buku. Jika digambarkan seperti di bawah.

One-to-many Satu-ke-banyak

Relasi one-to-many adalah relasi antar dua tabel dimana satu data (record) dari Tabel 1 bisa terhubung dengan beberapa record di Tabel 2. Misalnya penjualan memiliki id_penjualan, tanggal_jual, kasir. Setiap penjualan bisa terhubung dengan banyak item_penjualan. item_penjualan memiliki id_item,id_penjualan, id_produk, jumlah, harga_jual. Jika

digambarkan seperti:

Many-to-many Banyak-ke-Banyak

Relasi many-to-many merupakan relasi yang paling kompleks, karena diperlukan tabel lain untuk menghubungkan dua tabel data yang saling berkepentingan. Seperti halnya penjualan bisa terhubung (berkepentingan) dengan banyak product, dan product bisa terhubungan dengan banyak penjualan. Tabel penjualan dan product memiliki relasi banyak ke banyak yang dihubungkan oleh tabel item_penjualan. Contoh lain adalah dosen bisa memiliki banyak mahasiswa dan mahasiswa bisa memiliki banyak dosen. Relasi banyak ke banyak antara dosen dan mahasiswa memerlukan tabel lain, sebut saja tabel mahasiswa_dosen. Jika digambarkan

seperti di bawah.

Menyimpan Data ke Beberapa Tabel

Seperti dijelaskan sebelumnya tidak ada cara khusus untuk menyimpan data ke beberapa tabel. Berikut adalah cara menyimpan data ke beberapa tabel berdasarkan tipe relasi tabel.

Menyimpan Data ke Tabel Berelasi Satu-ke-satu

Disini akan diambil contoh seperti contoh di atas, menyimpan produk dengan tipe buku. Pertama buat html form dengan kode di bawah.view plain copy to clipboard print TryIt ?

1. <form name="form1" action="simpan.php" method="post">  2.     <dl>  3.         <dt>Nama</dt>  4.         <dd><input type="text" name="nama"/></dd>  5.         <dt>Harga</dt>  6.         <dd><input type="text" name="harga"/></dd>  7.         <dt>Jenis</dt>  8.         <dd>  9.             <select name="jenis">  10.                 <option value="BUKU">Buku</option>  11.             </select>  12.         </dd>  

13.         <dt>Penulis</dt>  14.         <dd><input type="text" name="penulis"/></dd>  15.         <dt>Penerbit</dt>  16.         <dd><input type="text" name="penerbit"/></dd>  17.         <dt>ISBN</dt>  18.         <dd><input type="text" name="isbn"/></dd>  19.         <dt>Tanggal Terbit</dt>  20.         <dd><input type="text" name="tgl_terbit"/></dd>  21.         <dt></dt>  22.         <dd><input type="submit" value="Simpan"/></dd>  23.     </dl>  24. </form>  

Simpan kode di atas dengan nama form.php, kemudian buat file simpan.php untuk menyimpan data ke tabel product dan tabel buku, dengan kode di bawah.view plain copy to clipboard print TryIt ?

1. <?php  2. if($_POST){  3.     $conn = mysql_connect("localhost","root","");  4.     mysql_select_db("test",$conn);   5.     //menyimpan ke table product  6.     $sql = "insert into product (nama,harga,jenis) values ('{$_POST['nama']}','{$_POST['h

arga']}','{$_POST['jenis']}')";  7.     mysql_query($sql) or die('Gagal menyimpan produk');  8.     //mencari id produk  9.     $sql = "select max(id_produk) as last_id from product limit 1";  10.     $hasil = mysql_query($sql);  11.     $row = mysql_fetch_array($hasil);  12.     $lastId = $row['last_id'];  13.     //menyimpan data buku ke table buku  14.     $sql = "insert into buku (id_produk,penulis,penerbit,isbn,tgl_terbit)   15.     values ('$lastId','{$_POST['penulis']}','{$_POST['penerbit']}','{$_POST['isbn']}','{$_P

OST['tgl_terbit']}')";  16.     mysql_query($sql) or die('Gagal menyimpan data buku');  17.     echo 'data tersimpan';  18. }  

Bisa dilihat kode di atas hampir sama dengan kode untuk menyimpan data ke satu tabel. Pada baris ke-2 dilakukan pengecekan apakah ada data yang dikirim atau tidak. Jika ada data yang dikirim, di baris ke-3 dan 4 dilakukan koneksi ke database. Kemudian pada baris ke-6 dan 7 menyimpan data ke tabel product. Selanjutnya dari ke ke-9 sampai 16 adalah untuk menyimpan data ke tabel buku. Setiap tabel yang berelasi, tabel anak (dalam kasus ini tabel buku) memiliki sebuah foreign key,

nilai foreign key ini diambil dari nilai referenced column -- primary key tabel induk (referenced table, tabel product dalam contoh ini). Pada contoh ini, kolom id_produk pada tabel buku adalah foreign key dan primary key tabel product (kolom id_produk) adalah referenced column. Nilai dari foreign key tidak boleh berisi nilai nilai yang tidak ada di reference colomn kecuali null.Sekarang lihat kembali baris ke-9. Baris ke-9 sampai 12 adalah untuk mencari id_produk yang baru saja disimpan pada tabel product (baris ke-6 dan 7). Kenapa proses ini diperlukan? Karena nilai dari kolom id_produk tabel buku tidak boleh berisi nilai nilai selain nilai yang ada di kolom id_produk tabel product. Selanjutnya baris ke-14 sampai 16 adalah untuk menyimpan data ke tabel buku, dan kolom id_produk diisi dengan nilai yang diperoleh dari baris sebelumnya (baris ke-9 sampai 12).

Menyimpan Data ke Tabel Berelasi Satu-ke-banyak

Disini akan diberikan contoh menyimpan Album musik. Album musik yang memiliki beberapa lagu. Struktur tabel album dan lagu seperti:

Pertama buatlah form html berikut:view plain copy to clipboard print TryIt ?

1. <!-- file album.php -->  2. <form name="formalbum" action="simpan-album.php" method="post">  3. Judul Album: <input type="text" name="judul"/> Nama Artis: <input type="text" name=

"artis"/>  4. <table id="tabel-lagu" cellspacing="0" border="1" cellpadding="3">  5.     <tr>  6.         <td>NO. Track</td>  7.         <td>Judul</td>  8.         <td>Durasi</td>  9.         <td>Delete</td>  10.     </tr>  11.     <tr>  12.         <td><input type="text" name="no_track[0]"/></td>  13.         <td><input type="text" name="judul_lagu[0]"/></td>  14.         <td><input type="text" name="durasi[0]"/></td>  15.         <td><button type="button" class="del">Del</button></td>  16.     </tr>  17.     <tr id="last">  

18.         <td colspan="4" align="right"><button type="button" id="addRow">Add</button></td>  

19.     </tr>  20. </table>  21. <input type="submit" value="Simpan"/>  22. </form>  23. <script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/

jquery.min.js"></script>  24. <script type="text/javascript">  25. var i = 1;  26. $(function(){  27.     $("#addRow").click(function(){  28.         row = '<tr>'+  29.         '<td><input type="text" name="no_track['+i+']"/></td>'+  30.         '<td><input type="text" name="judul_lagu['+i+']"/></td>'+  31.         '<td><input type="text" name="durasi['+i+']"/></td>'+  32.         '<td><button type="button" class="del">Del</button></td>'+  33.         '</tr>';  34.         $(row).insertBefore("#last");  35.         i++;  36.         });  37.     });  38.     $(".del").live('click', function(){  39.         $(this).parent().parent().remove();  40.         });  41. </script>  

Kode diatas akan membentuk form seperti berikut:

Yang perlu diperhatikan adalah atribut name dari element form (baris ke-12 sampai 14) yang diberi nilai seperti no_track[0], judul_lagu[0], durasi[0]. Penamaan seperti itu bertujuan agar data dikirim ke server berupa array. Selanjut buatlah file simpan-album.php untuk menyimpan data ke database.view plain copy to clipboard print TryIt ?

1. <?php  2. //file simpan-album.php  3. if(!$_POST){  4.     die('Tidak ada data yang disimpan!');  5. }  

6. //koneksi ke database  7. $conn = mysql_connect("localhost","root","blah");  8. mysql_select_db("test");  9. //simpan ke tabel album  10. $sql = "insert into album (judul,artis) values ('{$_POST['judul']}','{$_POST['artis']}')";  11. mysql_query($sql) or die('Gagal menyimpan album');  12. //mencari id album  13. $sql = "select max(id) as id_album from album limit 1";  14. $row = mysql_fetch_array(mysql_query($sql));  15. $id_album = $row['id_album'];  16. //menyimpan data ke tabel lagu  17. foreach($_POST['judul_lagu'] as $key => $judul){  18.     $sql = "insert into lagu(id_album, no_track,judul,durasi)   19.     values ('{$id_album}','{$_POST['no_track'][$key]}','{$judul}','{$_POST['durasi']

[$key]}')";  20.     mysql_query($sql);  21. }  22. echo 'Data telah disimpan';  

Baris ke-1 sampai 15 sama dengan cara yang dilakukan untuk menyimpan data ke tabel berelasi satu ke satu. Pertama membuka koneksi ke database (baris ke-7 dan 8). Kemudian menyimpan data ke tabel album (baris ke-10 dan 11). Selanjutnya mencari id album yang baru saja disimpan (baris ke-13 s/d 15). Langkah terakhir (baris ke-17 s/d 21) adalah melakukan perulangan dan menyimpan satu persatu data ke tabel lagu, serta id_album diisi dengan nilai yang diperoleh sebelumnya di baris ke-13 s/d 15.

Menyimpan Data ke Tabel Berelasi Banyak-ke-banyak

Menyimpan data ke tabel yang berelasi banyak ke banyak merupakan bagian yang paling kompleks. Menyimpan datanya tidak bisa seperti cara cara sebelumnya, yang hanya sekali langkah. Menyimpan data ke tabel yang berelasi banyak ke banyak paling sedikit melewati 3 langkah. Agar lebih jelas akan dicontohkan relasi antara mahasiswa dan mata_kuliah yang direlasikan oleh tabel mahasiswa_mk, sebagai berikut:

Langkah Pertama: Menyimpan Data Mahasiswa.Untuk menyimpan data mahasiswa gunakan kode php di bawah. Kode di bawah sama seperti yang digunakan untuk menyimpan data ke satu tabel.view plain copy to clipboard print TryIt ?

1. <?php  2. // file mahasiswa.php  3. if($_POST){  4.     $conn = mysql_connect("localhost","root","blah");  5.     mysql_select_db("test",$conn);   6.     $sql = "insert into mahasiswa (nim,nama,jurusan) values ('{$_POST['nim']}','{$_POST

['nama']}','{$_POST['jurusan']}')";  7.     mysql_query($sql);  8.     echo 'Data telah disimpan';  9. }   10. ?>  11. <h3>Input Mahasiswa</h3>  12. <form name="form1" method="post" action="">  13. <dl>  14.     <dt>NIM</dt>  15.     <dd><input type="text" name="nim"/></dd>  16.     <dt>Nama</dt>  17.     <dd><input type="text" name="nama"/></dd>  18.     <dt>Jurusan</dt>  19.     <dd><input type"text" name="jurusan"/></dd>  20.     <dt></dt>  21.     <dd><input type="submit" value="Simpan"/></dd>  22. </dl>  23. </form>  

Simpan kode di atas dengan nama file mahasiswa.phpLangkah Kedua: Menyimpan Data Mata KuliahMenyimpan data mata kuliah sama seperti menyimpan data mahasiswa. Gunakan kode di bawah dan simpan dengan nama mata_kuliah.php.view plain copy to clipboard print TryIt ?

1. <?php  2. //file mata_kuliah.php  3. if($_POST){  4.     $conn = mysql_connect("localhost","root","blah");  5.     mysql_select_db("test",$conn);   6.     $sql = "insert into mata_kuliah (kode,nama) values ('{$_POST['kode']}','{$_POST['na

ma']}')";  7.     mysql_query($sql);  8.     echo 'Data telah disimpan';  9. }   10. ?>  11. <h3>Input Mata Kuliah</h3>  12. <form name="form1" method="post" action="">  13. <dl>  

14.     <dt>Kode MK</dt>  15.     <dd><input type="text" name="kode"/></dd>  16.     <dt>Nama</dt>  17.     <dd><input type="text" name="nama"/></dd>  18.     <dt></dt>  19.     <dd><input type="submit" value="Simpan"/></dd>  20. </dl>  21. </form>  

Langkah Ketiga: Menyimpan Data Mata Kuliah Seorang MahasiswaUntuk mempermudah proses menyimpan data Mata Kuliah Seorang Mahasiswa, diperlukan kode untuk menampilkan daftar mahasiswa di bawah.view plain copy to clipboard print TryIt ?

1. <?php  2. //file list-mahasiswa.php  3. $conn = mysql_connect("localhost","root","blah");  4. mysql_select_db("test",$conn);   5. $sql = "select * from mahasiswa";  6. $result = mysql_query($sql);  7. ?>  8. <table cellspacing="0" cellpadding="5" border="1">  9.     <tr>  10.         <td>NIM</td>  11.         <td>Nama</td>  12.         <td>Jurusan</td>  13.         <td>Aksi</td>  14.     </tr>  15.     <?php while($mhs = mysql_fetch_array($result)){?>  16.     <tr>  17.         <td><?php echo $mhs['nim'];?></td>  18.         <td><?php echo $mhs['nama'];?></td>  19.         <td><?php echo $mhs['jurusan'];?></td>  20.         <td><a href="mahasiswa_mk.php?nim=<?php echo $mhs['nim'];?>">Tambah Mata 

Kuliah</a></td>  21.     </tr>  22.     <?php }?>  23. </table>  

Simpan kode di atas dengan nama list-mahasiswa.php. Kode tersebut berfungsi untuk menampilkan daftar mahasiswa dan membuat link berjudul "Tambah Mata Kuliah" ke halaman mahasiswa_mk.php. Halaman mahasiswa_mk.php digunakan untuk menyimpan data mata kuliah seorang mahasiswa.view plain copy to clipboard print TryIt ?

1. <?php  2. //file mahasiswa_mk.php  3. $conn = mysql_connect("localhost","root","blah");  4. mysql_select_db("test",$conn);  5. //mencari data mahasiswa  6. $sql = "select * from mahasiswa where nim='".mysql_real_escape_string($_GET['nim']).

"'";  7. $mhs = mysql_fetch_array(mysql_query($sql));  8. ?>  9. <h2>Tambah Mata Kuliah Mahasiswa: <?php echo $mhs['nama'];?></h2>  10. <form name="form" method="post" action="simpan_mahasiswa_mk.php">  11. <?php  12. //mencari semua data mata kuliah  13. $subquery = "select id_mk from mahasiswa_mk where nim='".$mhs['nim']."'";  14. $sql = "select * from mata_kuliah where id not in ({$subquery})";  15. $result = mysql_query($sql);  16. while($mataKuliah = mysql_fetch_array($result)){  17.     //membut checkbox  18.     echo '<input type="checkbox" name="mata_kuliah[]" value="'.$mataKuliah['id'].'"/>';  19.     echo $mataKuliah['kode'].': '.$mataKuliah['nama'].' ';  20. }  21. ?>  22. <input type="hidden" name="nim" value="<?php echo $mhs['nim'];?>"/>  23. <br/>  24. <input type="submit" value="Simpan"/>  25. </form>  

Baris ke-6 dan 7 kode di atas adalah untuk mencari data mahasiswa yang akan di tambahkan mata kuliahnya. Baris ke-8 menampilkan nama mahasiswa. Baris ke-13 dan 14 adalah membuat sql query untuk mencari mata kuliah yang belum ditambahkan ke mahasiswa bersangkutan. Untuk mempermudah di baris 13 dan 14 menggunakan subquery. Selanjutnya baris 15 s/d 20 untuk menampilkan checkbox mata kuliah yang belum dimiliki oleh mahasiswa bersangkutan.Langkah berikutnya adalah membuat file simpan_mahasiswa_mk.php untuk menyimpan data mata kuliah mahasiswa.view plain copy to clipboard print TryIt ?

1. <?php  2. //file simpan_mahasiswa_mk.php  3. if($_POST){  4.     $conn = mysql_connect("localhost","root","blah");  5.     mysql_select_db("test",$conn);  6.     foreach($_POST['mata_kuliah'] as $id_matakuliah){  7.         $sql = "insert into mahasiswa_mk (nim,id_mk) values ('{$_POST['nim']}','{$id_mat

akuliah}')";  8.         mysql_query($sql) or die("Gagal Menyimpan Data".mysql_error());  

9.     }  10. }  11. header("Location: list-mahasiswa.php");  12. exit('Data disimpan');  

Kode di atas hampir sama dengan cara menyimpan data ke tabel berelasi satu ke banyak.

__________________________________________________________________________

Menampilkan Data dari Table MySql dengan PHP

Setelah kita menginputkan data pada Database MySql, sekarang yang perlu kita lakukan adalah menampilkan data tersebut. Untuk menampilkan data biasanya menggunakan kode HTML yang diselipkan Script PHP. Kali ini kita akan menampilkan data buku dalam bentuk tabel yang sederhana.

Langkah pertama yang kita lakukan adalah membuat koneksi ke database MySql.

<?php $conn =mysql_connect("localhost","root",""); $db = mysql_select_db("herdi",$conn); $sql = "select * from buku order by kode"; $hasil = mysql_query($sql,$conn);?>Untuk menampilkankan data kita gunakan mysql_fetch_row($hasil) .

<h1 align="center" >Data Buku</h1><br><table width="656" border="1" cellspacing="0" cellpadding="2"> <tr> <td width="107">Kode</td> <td width="212">Judul</td> <td width="94">Jenis</td> <td width="128">Pengarang</td> <td width="83">Jumlah</td> </tr><?php while ($rsbuku = mysql_fetch_row($hasil)){?> <tr> <td><?php echo $rsbuku[0]; ?></td> <td><?php echo $rsbuku[1]; ?></td> <td><?php echo $rsbuku[2]; ?></td> <td><?php echo $rsbuku[3]; ?></td> <td><?php echo $rsbuku[4]; ?></td> </tr><?php } ?></table>Hasilnya seperti berikut

Data Buku

Kode Judul Jenis Pengarang Jumlah

BK100000001 Microsoft Access 2007 Komputer herdiana 2

BK100000002 Rumus - Rumus Matematika Matematika Dhika 2

BK100000003 Chord Gitar Kesenian Rian 1

BK100000004 1001 Pribahasa Matematika Bara 3