Upload Gambar dengan PHP dan MySQL - Mari Belajar Coding

14 Mei 2019

Upload Gambar dengan PHP dan MySQL


Upload Gambar dengan PHP dan MySQL

Selamat datang di blog mari belajar coding. Pada tutorial kali ini kita akan belajar membuat sebuah form input file atau gambar menggunakan PHP. Ada beberapa cara untuk upload sebuah file, kita bisa menggunakan fungsi PHP untuk memindahkan file ke server atau langsung menyimpan gambar di database.

Upload Gambar dengan PHP dan MySQL
1. Buat database untuk menyimpan gambar. 
CREATE DATABASE penjualan;
USE penjualan;
CREATE TABLE `produk` (
`IdProduk` int(11) PRIMARY KEY AUTO_INCREMENT,
`NamaProduk` varchar(255),
`Gambar` varchar(255),
`File_Gambar` longblob
);
Upload Gambar dengan PHP dan MySQL

2. Buat folder bernama upload_gambar di directory xampp/htdocs.

3. Buat fungsi koneksi database.
<?php 
 mysql_connect("localhost","root","");
 mysql_select_db("penjualan");
?>

4. Selanjutnya buat form untuk upload gambar dan menyimpannya kedalam database. Karena kita menggunakan input tipe file, tambahkan attribut enctype di tag form. Lihat baris yang di beri highlight.
<table>
 <form method="POST" enctype='multipart/form-data'>
  <tr>
   <td>Nama Produk</td>
   <td><input type="text" name="nama" id="nama"></td>
  </tr>
  <tr>
   <td>Gambar</td>
   <td><input type="file" name="filegambar" id="filegambar"></td>
  </tr>
  <tr>
   <td></td>
   <td><input type="submit" name="simpan" value="Simpan"></td>
  </tr>
 </form>
</table>

5. Buat aksi untuk menyimpan data ke database.
<?php
 if (isset($_POST['simpan'])) {
  //buat folder bernama gambar
  $tempdir = "gambar/"; 
        if (!file_exists($tempdir))
        mkdir($tempdir,0755); 
        //gambar akan di simpan di folder gambar
        $target_path = $tempdir . basename($_FILES['filegambar']['name']);

        //nama gambar
        $nama_gambar=$_FILES['filegambar']['name'];
        //ukuran gambar
        $ukuran_gambar = $_FILES['filegambar']['size']; 

        $fileinfo = @getimagesize($_FILES["filegambar"]["tmp_name"]);
        //lebar gambar
        $width = $fileinfo[0];
        //tinggi gambar
        $height = $fileinfo[1]; 
        if($ukuran_gambar > 81920){ 
            echo 'Ukuran gambar melebihi 80kb';
        }else if ($width > "480" || $height > "640") {
             echo 'Ukuran gambar harus 480x640';
        }else{
            if (move_uploaded_file($_FILES['filegambar']['tmp_name'], $target_path)) {
                
                $sql=mysql_query("INSERT INTO produk(NamaProduk,Gambar) VALUES('".$_POST['nama']."', '".$nama_gambar."')");
                echo 'Simpan data berhasil';
            } else {
                echo 'Simpan data gagal';
            }
        } 
 }
?>

6. Terakhir buat tampilan untuk menampilkan file yang telah di simpan. 
<table border="1">
 <thead>
  <tr>
   <th>No</th>
   <th>Nama Produk</th>
   <th>Gambar</th>
  </tr>
 </thead>
 <tbody>
  <?php
   $no=1;
   $sql=mysql_query("SELECT * FROM produk order by IdProduk desc");
   while ($data=mysql_fetch_array($sql)) {
  ?>
   <tr>
    <td><?=$no++?></td>
    <td><?=$data['NamaProduk']?></td>
    <td><img src="gambar/<?=$data['Gambar']?>" width="100"></td>
   </tr>
  <?php
   }
  ?>
 </tbody>
</table>

7. Kode lengkapnya seperti di bawah ini. Simpan dengan nama latihan1.php
<!DOCTYPE html>
<html>
<head>
 <title>maribelajarcoding.com</title>
<?php 
 mysql_connect("localhost","root","");
 mysql_select_db("penjualan");
?>
</head>
<body>
 <table>
  <form method="POST" enctype='multipart/form-data'>
   <tr>
    <td>Nama Produk</td>
    <td><input type="text" name="nama" id="nama"></td>
   </tr>
   <tr>
    <td>Gambar</td>
    <td><input type="file" name="filegambar" id="filegambar"></td>
   </tr>
   <tr>
    <td></td>
    <td><input type="submit" name="simpan" value="Simpan"></td>
   </tr>
  </form>
 </table>
 <?php
  if (isset($_POST['simpan'])) {
   //buat folder bernama gambar
   $tempdir = "gambar/"; 
            if (!file_exists($tempdir))
            mkdir($tempdir,0755); 

            $target_path = $tempdir . basename($_FILES['filegambar']['name']);

            //nama gambar
            $nama_gambar=$_FILES['filegambar']['name'];
            //ukuran gambar
            $ukuran_gambar = $_FILES['filegambar']['size']; 

            $fileinfo = @getimagesize($_FILES["filegambar"]["tmp_name"]);
            //lebar gambar
            $width = $fileinfo[0];
            //tinggi gambar
            $height = $fileinfo[1]; 
            if($ukuran_gambar > 81920){ 
                echo 'Ukuran gambar melebihi 80kb';
            }else if ($width > "480" || $height > "640") {
                 echo 'Ukuran gambar harus 480x640';
            }else{
                if (move_uploaded_file($_FILES['filegambar']['tmp_name'], $target_path)) {
                    
                    $sql=mysql_query("INSERT INTO produk(NamaProduk,Gambar) VALUES('".$_POST['nama']."', '".$nama_gambar."')");
                    echo 'Simpan data berhasil';
                } else {
                    echo 'Simpan data gagal';
                }
            } 
  }
 ?>

 <br>
 <table border="1">
  <thead>
   <tr>
    <th>No</th>
    <th>Nama Produk</th>
    <th>Gambar</th>
   </tr>
  </thead>
  <tbody>
   <?php
    $no=1;
    $sql=mysql_query("SELECT * FROM produk order by IdProduk desc");
    while ($data=mysql_fetch_array($sql)) {
   ?>
    <tr>
     <td><?=$no++?></td>
     <td><?=$data['NamaProduk']?></td>
     <td><img src="gambar/<?=$data['Gambar']?>" width="100"></td>
    </tr>
   <?php
    }
   ?>
  </tbody>
 </table>
</body>

</html>

Keterangan:
Saat kita melakukan aksi simpan, data yang akan di simpan di database hanya nama produk dan nama file gambar, sedangkan file gambar berada pada folder gambar.

Upload Gambar dengan PHP dan MySQL

Baca juga Upload dan Compress/Resize File Gambar dengan PHP

8. Untuk menyimpan gambar langsung di database kita bisa menggunakan cara seperti di bawah ini. Simpan dengan nama latihan2.php.
<!DOCTYPE html>
<html>
<head>
 <title>maribelajarcoding.com</title>
 <?php 
  mysql_connect("localhost","root","");
  mysql_select_db("penjualan");
 ?>
</head>
<body>
 <table>
  <form method="POST" enctype='multipart/form-data'>
   <tr>
    <td>Nama Produk</td>
    <td><input type="text" name="nama" id="nama"></td>
   </tr>
   <tr>
    <td>Gambar</td>
    <td><input type="file" name="filegambar" id="filegambar"></td>
   </tr>
   <tr>
    <td></td>
    <td><input type="submit" name="simpan" value="Simpan"></td>
   </tr>
  </form>
 </table>
 <?php
  if (isset($_POST['simpan'])) {
   

            //nama gambar
            $nama_gambar=$_FILES['filegambar']['name'];
            //ukuran gambar
            $ukuran_gambar = $_FILES['filegambar']['size']; 

            $fileinfo = @getimagesize($_FILES["filegambar"]["tmp_name"]);
            //lebar gambar
            $width = $fileinfo[0];
            //tinggi gambar
            $height = $fileinfo[1]; 

            //file gambar
            $file_gambar=addslashes(file_get_contents($_FILES['filegambar']['tmp_name']));

            if($ukuran_gambar > 81920){ 
                echo 'Ukuran gambar melebihi 80kb';
            }else if ($width > "480" || $height > "640") {
                 echo 'Ukuran gambar harus 480x640';
            }else{                    
                    $sql=mysql_query("INSERT INTO produk(NamaProduk,Gambar,File_Gambar) VALUES('".$_POST['nama']."', '".$nama_gambar."','".$file_gambar."')");
                    if ($sql) {
                     echo 'Simpan data berhasil';
                    }else {
                     echo 'Simpan data gagal';
                 }
            } 
  }
 ?>

 <br>
 <table border="1">
  <thead>
   <tr>
    <th>No</th>
    <th>Nama Produk</th>
    <th>Gambar</th>
   </tr>
  </thead>
  <tbody>
   <?php
    $no=1;
    $sql=mysql_query("SELECT * FROM produk order by IdProduk desc");
    while ($data=mysql_fetch_array($sql)) {
   ?>
    <tr>
     <td><?=$no++?></td>
     <td><?=$data['NamaProduk']?></td>
     <td><img src="data:image/jpeg;base64,<?=base64_encode($data['File_Gambar'] )?>" width="100"></td>
    </tr>
   <?php
    }
   ?>
  </tbody>
 </table>
</body>
</html>

Keterangan:
Kekurangan dari menyimpan gambar langsung di database yaitu penyimpanan database akan semakin besar yang menyebabkan pencarian data lebih lambat.



Related search:
Upload gambar dengan PHP dan MySQL
Upload file dengan PHP dan MySQL
Upload image dengan PHP dan MySQL

Related Posts

Load comments