5. Tambahkan Css.
Nb : untuk tutorial ini saya tidak posting code seluruhnya hanya intinya saja untuk full codenya silahkan download source code nya.
Download Source Kode
Membuat sebuah aplikasi tentunya selalu ada dan wajib adanya form login baik itu untuk login member maupun untuk login Admin, dan form login akan terlihat sesuatu apabila kita berikan sedikit sentuhan css sebagai pemanis tampilanya , kali ini saya akan berbagi sedikit ilmu bagaimana cara membuat form login dengan css .
Pertama kita buat dahulu file css seperti ini :
file css yang kita buat simpan dengan nama gaya.css
Kemudian kita membuat file HTML seperti dibawah ini
ok kita simpan dengan file login.html
nah karena file css yang kita buat terpisah maka di file login html kita memanggilnya dengan kode " <link href="gaya.css" rel="stylesheet" type="text/css" /> "
Coba sekarang sobat tes hasilnya eng..ing,.eng ...........
Selamat Mencoba..
Download Source Code
Postingan kali ini saya akan memberikan tutorial membuat form login dengan menggunakan jQuery tools. jQuery Tools merupakan kumpulan dari komponen library jQuery yang sudah di packing dalam bentuk user-interface yang elegan. Form login ini dapat kita gunakan untuk login admin pada website. Sebelumnya saya pernah menulis tentang cara membuat form login auto fokus. Bedanya kali ini tampilan yang akan kita buat akan sedikit lebih bagus dari form login sebelumnya.
Dan seperti inilah bentuk form login yang akan kita buat. Dengan menggunakan salah satu fasilitas di dalam jQuery tools yang bernama Expose, kita akan membuat form tersebut ter-expose saat kita meng-klik salah satu komponen yang ada di form tersebut.
Sekarang yang kita butuhkan untuk membuat form seperti gambar diatas adalah sebuah file jquery.tools.min.js, sebuah file CSS untuk mengatur tampilan form, dan sebuah file HTML yang isinya sebagai berikut: <html>
<head>
<title>Form Login</title>
<link rel="stylesheet" type="text/css" href="css-login.css">
<script type="text/javascript" src="jquery.tools.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("form.expose").bind("click keydown", function() {
$(this).expose({
maskId: 'mask',
onLoad: function() {
this.getExposed().css({backgroundColor: '#fff'});
},
onClose: function() {
this.getExposed().css({backgroundColor: null});
},
api: true
}).load();
});
});
</script>
</head>
<body>
<b>Form Login</b>
<form action="#" method="post" class="expose">
<label for="username">Username</label>
<input id="username" name="username"/><br />
<label for="password">Password</label>
<input id="password" type="password" name="password"/><br />
<input id="submit" type="submit" value="Login" /><br />
</form>
</body>
</html> Di bagian HEAD dari file HTML diatas terdapat script jQuery yang mengontrol perubahan tiap-tiap komponen yang ada di halaman web. Seperti yang ada di script diatas, terdapat selektor class bernama expose. Class expose ini mewakili form yang nantinya apabila di-klik maka akan mengekspose form tersebut dan membuat obyek di sekelilingnya terlihat samar-samar. <script type="text/javascript"> $(document).ready(function(){ // expose form saat kursor mouse berada di salah satu komponen form $("form.expose").bind("click keydown", function() { $(this).expose({ // mengatur tampilan background dengan CSS maskId: 'mask', // saat form ter-expose maka warna background form akan berubah onLoad: function() { this.getExposed().css({backgroundColor: '#fff'}); }, // saat form tidak ter-expose maka warna background kembali ke warna awal onClose: function() { this.getExposed().css({backgroundColor: null}); }, api: true }).load(); }); }); </script>
sumber : http://www.papatlimo.com/2011/02/form-login-dengan-jquery-tools.html
********* MySQL Database *********
mysql> desc users;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| uname | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> alter table message modify mid int AUTO_INCREMENT;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc message;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| mid | int(11) | NO | PRI | NULL | auto_increment |
| uid | int(11) | YES | | NULL | |
| msg | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
********* index.php *********
<html>
<body>
<fieldset>
<center>
LOGIN
<div style="border:1px solid blue;margin-top:100;margin-bottom:100;px;padding:10px;height=400;width:200px">
<form action="login.php" method="post">
Username : <input type="text" name="uname" /></br>
Password: <input type="text" name="pass" /></br>
<input type="submit" name="submit" value="submit"?>
</form>
</div>
</center>
</fieldset>
</body>
</html>
********* login.php *********
<?php
echo "okkk";
print_r($_POST);
$db = mysql_connect("localhost","ossuser","ossuser");
mysql_select_db("ossdb",$db);
echo "Connection Established";
$qry = "select * from users where uname='".$_POST['uname']."' and pass='".$_POST['pass']."'";
echo "</br> Qry : ".$qry;
$result = mysql_query($qry,$db);
echo "rows:".mysql_num_rows($result);
if(!mysql_num_rows($result)){
echo "</br> Invalid User Name or Password";
//$qry ="insert into users(uname,pass) values('".$_POST['uname']."','".$_POST['pass']."')";
//echo "</br> Qry : ".$qry;
//$result =mysql_query($qry,$db);
//echo "</br> New User Added";
}
else{
echo "</br> Valid User";
session_start();
$_SESSION['username'] = $_POST['uname'];
header("Location:window.php");
}
?>
********* window.php *********
<html>
<frameset ROWS="70%,30%">
<frame name="f1" src="/display.php">
<frame name="f2" src="/send.php">
</frameset>
</html>
********* send.php *********
<html>
<body>
<fieldset>
<center>
</dr>
<table><tr><td>
<div style="border:1px solid blue;margin-top:10;margin-bottom:10;px;padding:10px;height=400;width:300px">
:)<img src='/chat/smilies/smile.gif'>;(<img src='/chat/smilies/tongue.gif'>:(<img src='/chat/smilies/sad.gif'>
;)<img src='/chat/smilies/s1.gif'>))<img src='/chat/smilies/s2.gif'>()<img src='/chat/smilies/s3.gif'>
</div></td><td>
<div style="border:1px solid blue;margin-top:10;margin-bottom:10;px;padding:10px;height=400;width:400px">
<form action="send.php" method="post">
</br><input type="text" name="msg"/>
<input type="submit" name="send" value="send"/>
</form>
</div>
</td></tr></table>
</center>
</fieldset>
<?php
session_start();
$db = mysql_connect("localhost","ossuser","ossuser");
mysql_select_db("ossdb",$db);
//echo "Connection Established";
if(isset($_POST['send'])){
$qry = "select id from users where uname='".$_SESSION['username']."'";
echo "</br> Qry : ".$qry;
$result = mysql_query($qry,$db);
$id=mysql_result($result,0,"id");
//echo "</br> ID : ".mysql_result($result,0,"id");
$qry="insert into message(uid,msg) values(".$id.",'".$_POST['msg']."')";
//echo "</br> Qry : ".$qry;
//print_r($_POST);
$result = mysql_query($qry,$db);
}
?>
</body>
</html>
********* display.php *********
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="3">
</head>
<body>
<fieldset>
<center>
</dr><div style="border:1px solid blue;margin-top:10;margin-bottom:10;px;padding:10px;height=400;width:400px">
<?php
session_start();
$db = mysql_connect("localhost","ossuser","ossuser");
mysql_select_db("ossdb",$db);
echo "WELCOME : ".$_SESSION['username'];
//print_r($_SESSION);
$qry = "select uid,msg from message order by mid desc limit 5";
$result = mysql_query($qry,$db);
//echo "</br> ID : ".mysql_result($result,0,"mid");
?>
<!-- <textarea name="mess" rows="20" cols="40"> -->
</div>
</dr><div style="border:1px solid blue;margin-top:10;margin-bottom:10;px;padding:10px;height=400;width:400px">
<table style="padding-right:19px;text-align:left;"><tr><td>
<?
$images = array('smile','tongue','sad','s1','s2','s3');
$smiles = array(':)',';(',':(',';)','))','()');
for($i=4;$i>=0;$i--){
$qry2 ="select uname from users where id=".mysql_result($result,$i,"uid");
$result2 = mysql_query($qry2,$db);
$msg = mysql_result($result,$i,"msg");
for($j=0;$j<3;$j++){
$msg=str_replace($smiles[$j],"<img src='/chat/smilies/".$images[$j].".gif'>",$msg);
}
echo "<b>".mysql_result($result2,0,"uname")." : </b>";echo $msg;
//echo str_replace(":)","<img src='/chat/smilies/smile.gif'/>",mysql_result($result,$i,"msg"));
//echo mysql_result($result,$i,"msg");
echo "</br>";
}
?>
</br>
<!-- </textarea> -->
</td></tr></table>
</div>
</center>
</fieldset>
</body>
</html>
**********************************
If atau yg dalam bahasa Indonesia berarti ‘jika’, adalah fungsi penting dalam penulisan kode PHP, penggunaannya selalu diperlukan dalam penulisan (coding) file PHP yg dinamis.
If digunakan untuk menentukan kode PHP mana yg akan dijalan (statement) sesuai syarat atau kondisi yg ada.
Struktur penulisannya adalah seperti ini:
if(syarat) {
statement
}
Untuk lebih jelasnya silahkan lihat contoh dibawah ini, dan untuk contoh ini kita memerlukan sebuah acuan atau kondisinya, dan kondisinya sebuah variabel dengan nama $hasilpenjumlahan yg bernilai 1+2 atau sama dengan 3
4 | if($hasilpenjumlahan==3) { |
($hasilpenjumlahan==3) adalah syaratnya,
echo “hasil benar”; adalah statementnya atau kode yg akan dijalankannya, dan dalam contoh diatas kebetulan syaratnya benar.
If sering disandingkan dengan else, atau kode yg dipersiapan jika syaratnya salah,
Simak contoh ini:
4 | if($hasilpenjumlahan==4) { |
6 | } else echo "hasil salah"; |
Contoh diatas, kode yg akan dijalankan adalah echo “hasil salah”;
Karena syaratnya tidak sesuai dengan kondisi yg ada.
if juga sering disandingkan dengan elseif, atau syarat yg lainnya,
Simak contoh dibawah ini:
04 | if($hasilpenjumlahan==4) { |
05 | echo "hasil syarat pertama benar"; |
07 | elseif($hasilpenjumlahan==3) { |
08 | echo "hasil syarat kedua benar"; |
09 | } else echo "semua syarat salah"; |
Pada contoh diatas kode yg akan dijalan adalah echo “syarat kedua benar”;
Karena syaratnya memang benar, sedangkan else dipersiapkan atau statementnya akan dijalankan jika kesemua syarat salah.
Array dalam PHP adalah membuat satu kelompok yg didalamnya berisi string-string, yg setiapnya stringnya bisa di variabel ( kita sudah membahas variabel PHP pada artikelnya sebelumnya).
Array ada dua jenis, array yg sudah di tentukan stringnya dan array yg belum ditentukan stringnya, untuk array yg belum ditentukan stringnya akan kita bahas pada pelajaran yg akan datang.
Baiklah, kita kembali lg ke pokok bahasan kita.
Bentuk penulisan array adalah seperti ini:
array(‘string1′,’string2′,’string3′,dst…);
Dan kita ingin memvariabelkan masing-masing stringnya, maka kita harus membuat dulu nama variabelnya, dan penulisannya seperti ini:
$namaVariabel=array(‘string1′,’string2′,’string3′,dst…);
Lalu bagaimana untuk menyebut variabel pada setiap stringnya ?
Bentuk penulisan variabelnya seperti ini:
$namaVariabel[nomerUrutStringnya];
Dan perlu di ingat, nomer urut string dalam array dimulai dari angka 0 (enol) bukan dari angka 1.
Simak contoh dibawah ini:
2 | $siswa=array('budi','anto','wahyu'); |
Bila di buka dengan browser, contoh diatas akan menampilkan string budi karena budi dalam urutan pertama atau ke 0 dalam contoh array diatas.
Contoh lainnya:
2 | $siswa=array('budi','anto','wahyu'); |
6 | echo "jumlah siswa ada ".$jumlah." orang ,mereka bernama ".$siswa[0].", ".$siswa[1]." dan ".$siswa[2]; |
Contoh diatas bila dibuka dengan browser akan menampilkan:
jumlah siswa ada 3 orang, mereka bernama budi, anto, dan wahyu
Oiya saya telah menambahkan fungsi count(); yg dalam php digunakan untuk menghitung jumlah string pada array,
Jika anda lihat contoh diatas ada variabel ‘$jumlah’ yg berisi count($siswa); yakni menghitung jumlah string pada variabel array ‘$siswa’ sehingga menghasilkan angka 3.
Ada beberapa hal yang perlu dilakukan sebelum bisa menyimpan gambar ke dalam sebuah field table database yang bertipe blob.
Mempersiapkan Database dan TableBuatlah sebuah database dengan nama misalkan " gallery". Kemudian buat tabel di dalamnya dengan nama " pictures" dengan struk seperti di bawah:
| Nama Field | Tipe Data | Keterangan |
| id | integer | primary key, auto increment |
| file_name | varchar(100) | |
mime_type
| varchar(50) | |
| file_data | mediumblob | |
Atau gunakan SQL Query berikut:
- create database gallery;
- use gallery;
- CREATE TABLE `pictures` (
- `id` int NOT NULL AUTO_INCREMENT,
- `file_name` varchar(100) NOT NULL,
- `mime_type` varchar(50) NOT NULL,
- `file_data` mediumblob DEFAULT NULL,
- PRIMARY KEY (`id`)
- );
Membuat Upload FormBuat html form untuk mengupload gambar, gunakan script di bawah:
-
- <form name="form1" id="form1" method="post" action="upload.php" enctype="multipart/form-data">
- Gambar: <input type="file" name="gambar" id="gambar" />
- <input type="submit" name="Submit" id="Submit" value="Upload" />
- </form>
Simpan dengan nama file form.html.
Menyimpan Gambar Ke DatabaseLangkah selanjutnya adalah menyimpan gambar ke database, gunakalah script php di bawah untuk menyimpan gambar ke database.
- <?php
- $connection = mysql_connect("dbhost", "dbuser", "dbpassword");
- mysql_select_db("gallery");
-
- if($_FILES['gambar']['size'] > 0 && $_FILES['gambar']['error'] == 0){
- $fileName = $_FILES['gambar']['name'];
- $mimeType = $_FILES['gambar']['type'];
- $tmpFile = fopen($_FILES['gambar']['tmp_name'], 'rb');
- $fileData = fread($tmpFile, filesize($_FILES['gambar']['tmp_name']));
- $fileData = addslashes($fileData);
-
- $query = "insert into pictures set file_name='$fileName',mime_type='$mimeType', file_data='$fileData'";
- mysql_query($query) or die("Upload Gambar Gagal: ".mysql_error());
- echo "Gambar telah disimpan";
- }
- ?>
Di baris 8, file yang diupload dibuka menggunakan fungsi fopen dengan mode 'rb' yang artinya membuka file dengan mode read dan mode binary. Di baris 9 membaca file yang telah dibuka di baris 8 dengan fungsi fread. Selanjutnya di baris 12 dan 13 menyimpan gambar ke database. Simpan script di atas dengan nama upload.php.
Menampilkan Gambar Dari DatabaseLangkah terakhir adalah menampilkan gambar yang telah disimpan di database. Untuk menampilkan gambar dibutuhkan 2 file. File gambar.php untuk me-render gambar dan file gallery.php untuk menampilkan gallery keseluruhan gambar yang tersimpan di database. Gunakanlah script berikut:
File gambar.php
- <?php
- $connection = mysql_connect("dbhost", "dbuser", "dbpassword");
- mysql_select_db("gallery");
- $idFile = $_GET['id'];
-
- $dataGambar = mysql_fetch_array(mysql_query("select * from pictures where id='$idFile'"));
- $filename = $dataGambar['file_name'];
- $mime_type = $dataGambar['mime_type'];
- $filedata = $dataGambar['file_data'];
- header("content-disposition: inline; filename=$filename");
- header("content-type: $mime_type");
- header("content-length: ".strlen($filedata));
- echo ($filedata);
- ?>
File gallery.php
- <?php
- $connection = mysql_connect("dbhost", "dbuser", "dbpassword");
- mysql_select_db("gallery");
-
- $query = "select * from pictures";
- $result = mysql_query($query);
- $i=1;
- echo '<table>';
- echo '<tr>';
- while($gambar = mysql_fetch_array($result)){
- echo '<td><img src="gambar.php?id='.$gambar['id'].'" width="150" /></td>';
- if($i % 4 == 0){
- echo '</tr><tr>';
- }
- $i++;
- }
- echo '</tr>';
- echo '</table>';
- ?>
Menambahkan nama hari, tanggal, nama bulan, dan tahun secara real-time pada sebuah website sesuai dengan hari, tanggal, bulan, dan tahun saat ini, dapat dilakukan dengan menggunakan script PHP.Informasi waktu yang ditampilkan tersebut diambil dari fungsi clock yang ada di setiap komputer. Oleh karena itu, waktu yang ditampilkan pada website akan mengacu pada komputer penggunanya masing-masing dan bukan pada waktu server di mana file tersebut disimpan. Dengan demikian, waktu yang ditampilkan akan berbeda-beda tergantung pada waktu di komputernya masing-masing.
Dalam bahasa pemrograman PHP terdapat sebuah fungsi yang dapat dipergunakan untuk memanggil format waktu secara lengkap, misalnya: tahun, bulan, minggu, tanggal, hari, jam, menit, detik, dsb. Fungsi tersebut adalah date(). Di dalam fungsi date semua informasi mengenai waktu tersimpan lengkap. Namun, semua informasi waktu ditulis dengan angka sehingga untuk menampilkannya dalam huruf harus dibuat programnya. Untuk mengetahui informasi mengenai waktu, maka kita dapat menuliskan fungsi date dengan menyebutkan format waktu yang kita minta: date(string_format)
Tabel di bawah ini memperlihatkan bagaimana format waktu yang akan dihasilkan jika kita memasukkan nilai argumennya sebagai berikut :
| Argumen | Nilai hasil |
| a | “am” atau “pm” |
| A | “AM” atau “PM” |
| d | Tanggal sekarang dari “01″ sampai dengan “31″ |
| D | Nama hari dari “Sun” sampai dengan “Sat” |
| F | Nama bulan dari “January” sampai dengan “December” |
| g | Jam sekarang dari “1″ sampai dengan “12″ |
| G | Jam sekarang dari “0″ sampai dengan “23″ |
| h | Jam sekarang dari “01″ sampai dengan “12″ |
| H | Jam sekarang dari “00″ sampai dengan “23″ |
| i | Menit sekarang dari “00″ sampai dengan “59″ |
| I | Daylight saving time : “1″ jika True, “0″ jika false |
| J | Tanggal sekarang dari “1″ sampai dengan “31″ |
| l | Nama hari dari “Sunday” sampai dengan “Saturday” |
| L | Tahun kabisat : “1″ jika True, “0″ jika false |
| m | Kode bulan dari “01″ sampai dengan “12″ |
| M | Nama bulan dari “Jan” sampai dengan “Dec” |
| N | Kode bulan dari “1″ sampai dengan “12″ |
| R | Format tanggal RFC 822 |
| s | Detik sekarang dari “00″ sampai dengan “59″ |
| S | Akhiran “th” atau “nd” |
| t | Jumlah hari pada bulan sekarang |
| T | Format timezone pada komputer, misalnya “Pacific Standard Time” |
| w | Kode hari dari “0″ (Minggu) sampai dengan “7″ (Sabtu) |
| y | Tahun sekarang dalam 2 digit |
| Y | Tahun sekarang dalam 4 digit |
| z | Tanggal dalam tahun dari “1″ sampai dengan “365″ |
|
Dengan menggunakan fungsi date( ) kita dapat menuliskan beberapa baris perintah sederhana untuk menampilkan format waktu sesuai dengan yang kita inginkan, misalnya sebagai berikut : <?
$tampil1 = date('D, d F Y');
echo "date('D, d F Y') => $tampil1<br><br>";
$tampil2 = date('h : i : s A');
echo "date('h : i : s A') => $tampil2<br><br>";
$tampil3 = date('F dS, y');
echo "date('F dS, y') => $tampil3<br><br>";
$tampil4 = date('T');
echo "date('T') => $tampil4";
?>Jika script tersebut dijalankan pada browser, maka tampilannya adalah sebagai berikut:
Hari dan Tanggal Format IndonesiaMengingat nama hari dan nama bulan pada bahasa Indonesia berbeda dengan nama hari dan nama bulan dalam bahasa Inggris, maka kita harus mengubahnya dengan memanfaatkan kode hari yang kemudian diubah menjadi nama hari dalam bahasa Indonesia. Demikian halnya dengan nama bulan, kita dapat memanfaatkan kode bulan dan kemudian mengubahnya menjadi nama bulan dalam bahasa Indonesia. Fungsi date( ) yang argumennya ditambahkan fungsi time( ) akan menghasilkan fungsi penghitung waktu dalam satuan detik dengan nilai balik bertipe integer. Dengan demikian, pengolahan tipe data dapat lebih mudah dilakukan. Script fungsi waktu untuk memperlihatkan hari, tanggal, bulan, dan tahun dalam format Indonesia adalah sebagai berikut: 01 <?
02
03 hari_ini();
04
05 function hari_ini(){
06 $hari = date(w, time());
07 $tanggal = date(d, time());
08 $bulan = date(m, time());
09 $tahun = date(Y, time());
10
11 //mengubah kode hari dari angka menjadi nama hari
12 if($hari==0){
13 $hari = "Minggu";
14 } else if($hari==1){
15 $hari = "Senin";
16 } else if($hari==2){
17 $hari = "Selasa";
18 } else if($hari==3){
19 $hari = "Rabu";
20 } else if($hari==4){
21 $hari = "Kamis";
22 } else if($hari==5){
23 $hari = "Jumat";
24 } else if($hari==6){
25 $hari = "Sabtu";
26 }
27
28 //mengubah kode bulan dari angka menjadi nama bulan
29 if($bulan==01){
30 $bulan = "Januari";
31 } else if($bulan==02){
32 $bulan = "Februari";
33 } else if($bulan==03){
34 $bulan = "Maret";
35 } else if($bulan==04){
36 $bulan = "April";
37 } else if($bulan==05){
38 $bulan = "Mei";
39 } else if($bulan==06){
40 $bulan = "Juni";
41 } else if($bulan==07){
42 $bulan = "Juli";
43 } else if($bulan==08){
44 $bulan = "Agustus";
45 } else if($bulan==09){
46 $bulan = "September";
47 } else if($bulan==10){
48 $bulan = "Oktober";
49 } else if($bulan==11){
50 $bulan = "Nopember";
51 } else if($bulan==12){
52 $bulan = "Desember";
53 }
54
55 //menampilkan hari, tanggal, bulan, dan tahun
56 echo "$hari, $tanggal $bulan $tahun";
57 }
58
59 ?>Tampilan hasil akhir dari script di atas dapat dilihat di halaman depan alamat berikut ini:
www.kursusprivat.com
Demikian penjelasan mengenai fungsi tanggal dalam PHP, semoga bermanfaat. ■
Tutorial 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.
- <form name="form1" action="simpan.php" method="post">
- <dl>
- <dt>Nama</dt>
- <dd><input type="text" name="nama"/></dd>
- <dt>Harga</dt>
- <dd><input type="text" name="harga"/></dd>
- <dt>Jenis</dt>
- <dd>
- <select name="jenis">
- <option value="BUKU">Buku</option>
- </select>
- </dd>
- <dt>Penulis</dt>
- <dd><input type="text" name="penulis"/></dd>
- <dt>Penerbit</dt>
- <dd><input type="text" name="penerbit"/></dd>
- <dt>ISBN</dt>
- <dd><input type="text" name="isbn"/></dd>
- <dt>Tanggal Terbit</dt>
- <dd><input type="text" name="tgl_terbit"/></dd>
- <dt></dt>
- <dd><input type="submit" value="Simpan"/></dd>
- </dl>
- </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.
- <?php
- if($_POST){
- $conn = mysql_connect("localhost","root","");
- mysql_select_db("test",$conn);
-
- $sql = "insert into product (nama,harga,jenis) values ('{$_POST['nama']}','{$_POST['harga']}','{$_POST['jenis']}')";
- mysql_query($sql) or die('Gagal menyimpan produk');
-
- $sql = "select max(id_produk) as last_id from product limit 1";
- $hasil = mysql_query($sql);
- $row = mysql_fetch_array($hasil);
- $lastId = $row['last_id'];
-
- $sql = "insert into buku (id_produk,penulis,penerbit,isbn,tgl_terbit)
- values ('$lastId','{$_POST['penulis']}','{$_POST['penerbit']}','{$_POST['isbn']}','{$_POST['tgl_terbit']}')";
- mysql_query($sql) or die('Gagal menyimpan data buku');
- echo 'data tersimpan';
- }
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:
- <!-- file album.php -->
- <form name="formalbum" action="simpan-album.php" method="post">
- Judul Album: <input type="text" name="judul"/> Nama Artis: <input type="text" name="artis"/>
- <table id="tabel-lagu" cellspacing="0" border="1" cellpadding="3">
- <tr>
- <td>NO. Track</td>
- <td>Judul</td>
- <td>Durasi</td>
- <td>Delete</td>
- </tr>
- <tr>
- <td><input type="text" name="no_track[0]"/></td>
- <td><input type="text" name="judul_lagu[0]"/></td>
- <td><input type="text" name="durasi[0]"/></td>
- <td><button type="button" class="del">Del</button></td>
- </tr>
- <tr id="last">
- <td colspan="4" align="right"><button type="button" id="addRow">Add</button></td>
- </tr>
- </table>
- <input type="submit" value="Simpan"/>
- </form>
- <script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
- <script type="text/javascript">
- var i = 1;
- $(function(){
- $("#addRow").click(function(){
- row = '<tr>'+
- '<td><input type="text" name="no_track['+i+']"/></td>'+
- '<td><input type="text" name="judul_lagu['+i+']"/></td>'+
- '<td><input type="text" name="durasi['+i+']"/></td>'+
- '<td><button type="button" class="del">Del</button></td>'+
- '</tr>';
- $(row).insertBefore("#last");
- i++;
- });
- });
- $(".del").live('click', function(){
- $(this).parent().parent().remove();
- });
- </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.
- <?php
-
- if(!$_POST){
- die('Tidak ada data yang disimpan!');
- }
-
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test");
-
- $sql = "insert into album (judul,artis) values ('{$_POST['judul']}','{$_POST['artis']}')";
- mysql_query($sql) or die('Gagal menyimpan album');
-
- $sql = "select max(id) as id_album from album limit 1";
- $row = mysql_fetch_array(mysql_query($sql));
- $id_album = $row['id_album'];
-
- foreach($_POST['judul_lagu'] as $key => $judul){
- $sql = "insert into lagu(id_album, no_track,judul,durasi)
- values ('{$id_album}','{$_POST['no_track'][$key]}','{$judul}','{$_POST['durasi'][$key]}')";
- mysql_query($sql);
- }
- 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.
- <?php
-
- if($_POST){
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test",$conn);
- $sql = "insert into mahasiswa (nim,nama,jurusan) values ('{$_POST['nim']}','{$_POST['nama']}','{$_POST['jurusan']}')";
- mysql_query($sql);
- echo 'Data telah disimpan';
- }
- ?>
- <h3>Input Mahasiswa</h3>
- <form name="form1" method="post" action="">
- <dl>
- <dt>NIM</dt>
- <dd><input type="text" name="nim"/></dd>
- <dt>Nama</dt>
- <dd><input type="text" name="nama"/></dd>
- <dt>Jurusan</dt>
- <dd><input type"text" name="jurusan"/></dd>
- <dt></dt>
- <dd><input type="submit" value="Simpan"/></dd>
- </dl>
- </form>
Simpan kode di atas dengan nama file mahasiswa.php Langkah Kedua: Menyimpan Data Mata Kuliah Menyimpan data mata kuliah sama seperti menyimpan data mahasiswa. Gunakan kode di bawah dan simpan dengan nama mata_kuliah.php. - <?php
-
- if($_POST){
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test",$conn);
- $sql = "insert into mata_kuliah (kode,nama) values ('{$_POST['kode']}','{$_POST['nama']}')";
- mysql_query($sql);
- echo 'Data telah disimpan';
- }
- ?>
- <h3>Input Mata Kuliah</h3>
- <form name="form1" method="post" action="">
- <dl>
- <dt>Kode MK</dt>
- <dd><input type="text" name="kode"/></dd>
- <dt>Nama</dt>
- <dd><input type="text" name="nama"/></dd>
- <dt></dt>
- <dd><input type="submit" value="Simpan"/></dd>
- </dl>
- </form>
Langkah Ketiga: Menyimpan Data Mata Kuliah Seorang Mahasiswa Untuk mempermudah proses menyimpan data Mata Kuliah Seorang Mahasiswa, diperlukan kode untuk menampilkan daftar mahasiswa di bawah. - <?php
-
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test",$conn);
- $sql = "select * from mahasiswa";
- $result = mysql_query($sql);
- ?>
- <table cellspacing="0" cellpadding="5" border="1">
- <tr>
- <td>NIM</td>
- <td>Nama</td>
- <td>Jurusan</td>
- <td>Aksi</td>
- </tr>
- <?php while($mhs = mysql_fetch_array($result)){?>
- <tr>
- <td><?php echo $mhs['nim'];?></td>
- <td><?php echo $mhs['nama'];?></td>
- <td><?php echo $mhs['jurusan'];?></td>
- <td><a href="mahasiswa_mk.php?nim=<?php echo $mhs['nim'];?>">Tambah Mata Kuliah</a></td>
- </tr>
- <?php }?>
- </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.
- <?php
-
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test",$conn);
-
- $sql = "select * from mahasiswa where nim='".mysql_real_escape_string($_GET['nim'])."'";
- $mhs = mysql_fetch_array(mysql_query($sql));
- ?>
- <h2>Tambah Mata Kuliah Mahasiswa: <?php echo $mhs['nama'];?></h2>
- <form name="form" method="post" action="simpan_mahasiswa_mk.php">
- <?php
-
- $subquery = "select id_mk from mahasiswa_mk where nim='".$mhs['nim']."'";
- $sql = "select * from mata_kuliah where id not in ({$subquery})";
- $result = mysql_query($sql);
- while($mataKuliah = mysql_fetch_array($result)){
-
- echo '<input type="checkbox" name="mata_kuliah[]" value="'.$mataKuliah['id'].'"/>';
- echo $mataKuliah['kode'].': '.$mataKuliah['nama'].' ';
- }
- ?>
- <input type="hidden" name="nim" value="<?php echo $mhs['nim'];?>"/>
- <br/>
- <input type="submit" value="Simpan"/>
- </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.
- <?php
-
- if($_POST){
- $conn = mysql_connect("localhost","root","blah");
- mysql_select_db("test",$conn);
- foreach($_POST['mata_kuliah'] as $id_matakuliah){
- $sql = "insert into mahasiswa_mk (nim,id_mk) values ('{$_POST['nim']}','{$id_matakuliah}')";
- mysql_query($sql) or die("Gagal Menyimpan Data".mysql_error());
- }
- }
- header("Location: list-mahasiswa.php");
- exit('Data disimpan');
Kode di atas hampir sama dengan cara menyimpan data ke tabel berelasi satu ke banyak.
Menampilkan Data Dari Beberapa Tabel
|