Tutorial kali ini merupakan jawaban dari salah satu pertanyaan dari pengunjung di posting Upload form sederhana dengan PHP. pertanyaan dari Evan Disini kita akan mengembangkan fungsi upload sehingga informasi gambar yang di-unggah akan disimpan di database MySQL, pembuatan galeri foto merupakan contoh yang akan kita gunakan dalam penerapannya. Untuk memudahkan pemahaman dan pembelajaran terhadap upload dan database saya mengesampingkan beberapa faktor keamanan seperti validasi dan pengecekan extensi dari file. Yang pertama kali harus dibuat adalah database dari gambar, buka phpmyadmin (biasanya ada di http://localhost/phpmyadmin) lalu buat database dengan nama galeri dan tekan tombol Create. Create database galeri Dan database galeri pun tercipta namun masih belum memiliki tabel, masukan gambar pada kolom name dan 3 pada kolom number of fields, kita akan membuat tabel gambar dengan 3 field yang masing-masing field-nya akan menampung informasi yang berbeda. Jangan lupa tekan tombol Go jika sudah selesai. Buat tabel gambar Pada halaman berikutnya kita harus mengisi definisi data dari ketiga field yang ingin kita buat, isi seperti gambar dibawah: Jika sudah jangan lupa tekan save.
Struktur tabel gambar Bagian database beres, tabel gambar dengan struktur datanya telah tercipta, sekarang kita bisa fokus ke PHP. Pada folder htdocs buat folder galeri dan didalamnya buat lagi folder gambar, lihat gambar. isi folder galeri Susunan file dan folder Lalu buat file config.php untuk menyimpan semua variabel penting <?php $server = 'localhost'; //server MySQL $user = 'root'; //username MySQL $password = ''; //Password MySQL $db = 'galeri'; //nama database $dir_gambar = 'C:\xampp\htdocs\galeri\gambar\\'; //direktori dalam server $url_folder_gambar = 'http://localhost/galeri/gambar/'; //URL dari direktori jika diakses lewat browser ?> Perhatikan variebel $dir_gambar = 'C:\xampp\htdocs\galeri\gambar\\'; //direktori dalam server Selanjutnya buat file db.php yang manyimpan fungsi koneksi ke database MySQL <?php include_once('config.php'); //sertakan semua kode yang ada di config.php if( !mysql_connect($server, $user, $password) ) { die(mysql_error()); } else { if( !mysql_select_db($db) ){ die(mysql_error()); } } ?> buat index.php sebagai landing page, halaman ini yang akan pertama kali diakses ketika direktori galeri diakses lewat web. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Upload gambar</title> </head> <body> <p> <a href="index.php">depan</a> | <a href="galeri.php">galeri</a> </p> <form action="upload.php" enctype="multipart/form-data" method="post"> <table border="0"> <tr> <td>Judul</td> <td><input type="text" name="judul" /> </td> </tr> <tr> <td>Gambar</td> <td><input type="file" name="userfile" size="40" /></td> </tr> <tr> <td><input type="submit" name="submit" value="Unggah" /></td> <td></td> </tr> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <!-- dalam byte {2000000b = 2Mb} --> </form> </body> </html> galeri.php untuk menampilkan daftar gambar <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Galeri</title> </head> <body> <p> <a href="index.php">depan</a> | <a href="galeri.php">galeri</a> </p> <?php include('db.php'); if( !empty($_REQUEST['j']) ){ $msg = '<div style="background:#F6F3C0;text-align:center;color:#999;">'; $msg .= 'Gambar baru telah ditambahkan | <strong>' . $_REQUEST['j']; $msg .= '</strong></div>'; echo $msg; } $query = "SELECT * FROM gambar"; $query = mysql_query( $query ); if(!$query){ die( mysql_error() ); } while( $rows = mysql_fetch_row($query) ){ ?> <p> <img src="<?php echo $url_folder_gambar . $rows[2];?>" width="100" /> </p> <?php echo $rows[1]; ?> <hr /> <?php } ?> </body> </html> Dan yang terakhir adalah upload.php sebagai file php yang bertanggung jawab terhadap proses upload <?php if( isset($_REQUEST['submit']) ){ include('db.php'); $title = $_REQUEST['judul'] ? htmlspecialchars($_REQUEST['judul']) : 'blun ada judul'; //ternary operator $filename = basename($_FILES['userfile']['name']); $uploadfile = $dir_gambar . $filename; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { $query = "INSERT INTO gambar VALUES('', '$title', '$filename')"; $query = mysql_query($query); if(!$query){ die( mysql_error() ); } header('Location: galeri.php?j=' . $title); exit(); } else { echo "Kemungkinan hacking!\n"; } }else{ echo "Anda kesasaar? kembali ke <a href='index.php'>jalan yang benar</a>"; } ?> Pada kode tersebut saya menggunakan operator logika yang disebut ternary untuk mendapatkan nilai TRUE dan FALSE, coba perhatikan kode: $title = $_REQUEST['judul'] ? htmlspecialchars($_REQUEST['judul']) : 'blun ada judul'; //ternary operator Pola dari ternary adalah $dir_gambar = 'C:\xampp\htdocs\galeri\gambar\\'; //direktori dalam server0 😉 |