PHP [dasar] – Upload File (Dengan Database)

Spesifikasi Perangkat Lunak yang digunakan :

XAMPP versi 1.7.7

Siapa yang tidak kenal dengan situs tokobagus.com ? Saya yakin sebagian besar dari teman-teman pembaca kenal dengan situs tersebut. Wah promosi nih !!! :p sebenarnya ga ada maksud promosi. Saya hanya ingin memberikan contoh halaman web yang ada hubungannya dengan upload file (Dengan Database). Salah satunya contohnya, teman-teman bisa melihat halaman tokobagus. Pada situs tokobagus, setiap iklan memiliki satu gambar atau lebih. Semua data iklan yang ada di tokobagus (*walaupun saya tidak tahu persis kode programnya seperti apa) tetapi saya bisa menduga bahwa data-data yang bisa kita lihat pasti disimpan di database termasuk gambar. Hah gambar kok disimpan di database ?? Emang bisa gitu ?? ya bisalah.. :)

Ada dua cara untuk menyimpan gambar ke dalam database :

  1. 1. Simpan nama gambarnya saja di dalam database, atau
  2. 2. Simpan gambarnya pada database

Pada tutorial kali ini, saya hanya membahas cara no 1 saja. Alias bagaimana menyimpan nama gambar di dalam database. Cara no 2 akan dibahas pada tutorial terpisah. Cara no 1 lebih sering digunakan dengan alasan lebih mudah dan tidak ada pertimbangan lebih mengenai keamanan. Berikut ini adalah langkah-langkah untuk mengimplementasi cara no 1 :

Catatan :

  1. 1. Pada tutorial ini, file yang digunakan adalah file gambar.
  2. 2. Cara yang ada pada tutorial ini bisa digunakan juga untuk file selain gambar.

Langkah 1 – Membuat Database tutorial_php

  1. 1. Buka browser, lalu ketikan url : http://localhost/phpmyadmin/ untuk mengakses phpmyadmin.
  2. 2. Lalu pilih menu database dan buatlah sebuah database bernama “tutorial_php” (tanpa tanda petik) melalui phpmyadmin.
phpmyadmin menu database

phpmyadmin menu database

Create Nama Database

Create Nama Database

Langkah 2 – Membuat Tabel upload_gambar

 Buatlah tabel upload_gambar pada database tutorial_php yang baru saja dibuat.

  1. 1. Pilih database tutorial_php pada sidebar (*sebelah kiri) phpmyadmin.
  2. 2. Buatlah tabel tutorial_php dengan dua field yaitu id_gambar (int(8) Auto Increment PRIMARY) dan gambar (varchar(30) ).
Nama Tabel

Nama Tabel

Struktur Tabel

Struktur Tabel

Langkah 3 – Membuat Halaman Koneksi dengan PHP

Karena upload file kali ini berhubungan dengan database, maka kita memerlukan sebuah halaman PHP untuk melakukan koneksi ke database. Buatlah file koneksi.php dan simpanlah file tersebut pada folder tutorialphp yang telah dibuat pada tutorial sebelumnya. Berikut ini adalah kode php untuk melakukan koneksi ke database :

<?php
	$host = "localhost";
	$userdb = "root";
	$passdb = "";
	$dbname = "tutorial_php";

	$conn = mysql_connect($host,$userdb,$passdb);
	mysql_select_db($dbname);
?>

Penjelasan Kode :

  1. Baris 2 : host atau tempat dimana database MySQL diinstall.
  2. -
  3. Baris 3 : nama user yang digunakan untuk melakukan koneksi ke database MySQL. Jika anda tidak pernah atau belum membuat user yang spesifik untuk melakukan koneksi ke MySQL, default user-nya adalah “root”.
  4. -
  5. Baris 4 : Password dari user yang digunakan untuk melakukan koneksi. Password untuk user root biasanya null alias tidak memiliki password.
  6. -
  7. Baris 5 : Nama database yang akan digunakan. Pada tutorial ini, kita akan menggunakan database tutorial_php yang telah dibuat pada langkah sebelumnya.

Langkah 4 – Modifikasi file proses_upload.php

Pada tutorial ini, kita akan menambahkan kode pada file proses_upload.php yang telah dibuat pada tutorial PHP [dasar] – Membatasi File yang akan diupload (Tanpa Database). Berikut ini adalah beberapa hal yang akan ditambahkan pada file tersebut :

  1. 1. Menambahkan perintah include untuk mengikutsertakan file koneksi.php yang telah dibuat pada langkah sebelumnya agar file proses_upload.php dapat melakukan koneksi ke database MySQL.
  2. 2. Mengubah nama file gambar yang di-upload menjadi “gbr_20130514105905.jpg” (Format nama file : string “gbr_” ditambah tahunbulantanggaljammenitdetik ditambah “.ektensifile”). Untuk mengubah nama file gambar menjadi format tersebut akan melibatkan fungsi PHP exlpode() dan date().
  3. 3. Menambahkan Query SQL untuk memasukan nama file gambar ke tabel upload_gambar.

Berikut ini adalah kode file proses_upload.php yang telah dimodifikasi :

<?php
    include("koneksi.php");

    if($_POST['btn-upload'] == "Upload")
    {
        $nama_berkas = $_FILES['berkas']['name'];
        $tipe_berkas = $_FILES['berkas']['type'];
        $ukuran_berkas = $_FILES['berkas']['size'];

        if($nama_berkas != "")
        {
            if($tipe_berkas == "image/jpeg" or $tipe_berkas == "image/pjpeg" or $tipe_berkas == "image/jpg" or $tipe_berkas == "image/png")
            {
                if($ukuran_berkas <= 1000000)
                {
                    $sumber = $_FILES['berkas']['tmp_name'];                    

                    $exp_tipe_berkas = explode("/",$tipe_berkas);
                    $nama_berkas_baru = "gbr_".date("YmdHis").".".$exp_tipe_berkas[1];

                    $target = "fileupload/$nama_berkas_baru";

                    if(move_uploaded_file($sumber,$target))
                    {
                        $sql = "INSERT INTO upload_gambar VALUES('','$nama_berkas_baru')";
                        mysql_query($sql);
                        if(mysql_errno() == 0)
                        {
                            echo "<b>Nama File :</b> $nama_berkas";
                            echo "<br/><b>Tipe File :</b> $tipe_berkas";
                            echo "<br/><b>Ukuran File :</b> $ukuran_berkas bytes";
                            echo "<br/> Telah berhasil diupload !!!";    
                        }else{
                            echo "Gagal menyimpan nama file gambar ke database !!!";
                        }
                    }else{
                        echo $_FILES['berkas']['error'];
                    }
                }else{
                    echo "Ukuran file maks. 1Mb !!!";
                }
            }else{
                echo "File hanya boleh Gambar JPEG, JPG dan PNG !!!";
            }
        }
    }
?>

Penjelasan Kode [yang ditambahkan] :

  1. Baris 2 : Kode untuk mengikutsertakan file koneksi.php. (Menggunakan fungsi include)
  2. -
  3. Baris 18 : Fungsi explode untuk mendapatkan ekstensi sebuah file dari tipe_berkas. (tipe_berkas : image/jpg, ekstensi file : jpg)
  4. -
  5. Baris 19 : Pembentukan nama file baru dengan mengikuti format : “gbr_” ditambah tahunbulantanggaljammenitdetik ditambah “.ekstensifile”. Contoh : gbr_20130514111905.jpg
  6. -
  7. Baris 21 : Perubahan nilai dari variable $target. Awalnya $target = “fileupload/$nama_berkas”; berubah menjadi $target = “fileupload/$nama_berkas_baru”;
  8. -
  9. Baris 25 : Query SQL untuk memasukan data ke tabel upload_gambar.
  10. -
  11. Baris 27 : Pengecekkan apakah eksekusi Query SQL yang dilakukan pada baris 26 berhasil dilakukan. Jika berhasil maka fungsi mysql_errno() akan mengembalikan nilai 0.
  12. -
  13. Baris 33-35 : Kondisi dimana eksekusi Query SQL gagal dilakukan sehingga program akan memunculkan pesan tertentu.

Langkah 5 – Ujicoba dan Hasil

Berikut ini adalah gambar tabel upload_gambar yang menunjukkan bahwa data nama file gambar berhasil disimpan ke dalam tabel tersebut :

Hasil Tabel

Hasil Tabel

Berikut ini adalah gambar yang menunjukkan bahwa nama file gambar yang telah berhasil diubah namanya sesuai dengan format yang diharapkan :

Hasil Nama Gambar

Hasil Nama Gambar

Selamat mencoba… Semoga berhasil !!!

Source Code

uploadfile-database

Comments

comments

Just an Ordinary Man with a Lot Curiosity

About The Author

Just an Ordinary Man with a Lot Curiosity
  • taufiknuradi

    :) Sudah mulai banyak yang ga baca…

  • http://www.facebook.com/satria.senjaya Satria Fratisna Senjaya

    lanjutan dari yg kmrn pak?

    • taufiknuradi

      yup lanjutan yang kemaren.. Hmmm satria, reza dan siti. Cukup bagus performanya di kelas pak husni.

  • http://www.facebook.com/reza.rizaliramadhan Reza Rizali Ramadhan

    pak maaf klo untuk masalah web itu progresnya harus sudah sampai mana pak ?

    • taufiknuradi

      Progressnya ya sebisa yang kalian buat.. :) Jangan lupa tanggal 20 kita sudah masuk lagi. jam 07.00. kita dikusi masalah web yang kalian hadapi. jam 08.00 ada bentuk soal semi assessment yang akan menguji kalian ttg sesuatu. :)

    • taufiknuradi

      Sampaikan ke yang lain bahwa materi jaminan mutu yang saya share juga termasuk materi kuliah yang diharapkan saya untuk dibaca oleh kalian.