-->

Multiple Upload Gambar Dengan PHP MYSQL

Multiple Upload Gambar PHP

Pada artikel ini saya akan membahas tentang cara multiple upload gambar ke dalam database atau upload gambar lebih dari satu menggunakan PHP MYSQL. Cara ini mungkin sedikit berbeda dengan upload file biasanya, apa saja sih perbedaanya? untuk mengetahui perpedaanya langsung saja simak tulisan di bawah.

Tutorial on youtube

Pembuatan Database

Pada bagian ini saya telah membuat database dengan nama 'imageupload' yang memiliki table dengan nama 'collection' , didalam table collection saya membuat 2 field sebagai contoh dengan nama id dan images, untuk type datanya sendiri kalian bisa lihat pada gambar di bawah.


Struktur Program

Dibagian ini kita telah masuk kedalam struktur program yang ingin kita bangun untuk membuat fungsi multiple upload gambar dengan PHP MySQL, yang pertama saya akan membuat file index.php, style.css dan folder collections, folder collections ini nantinya untuk menyimpan gambar ke dalam folder local.


Pembuatan File index.php 

Pada bagian ini kita membuat file index yang isinya memiliki struktur html seperti pada code dibawah.


<link rel="stylesheet" href="style.css">

<div class="container">
    <h3>Tambah Data</h3>
    <form method="post" enctype="multipart/form-data">
        <div class="forms">
            <label for="">Collection</label>
            <input type="file" name="collection[]" id="collection" multiple>
        </div>

        <div class="buttons">
            <button class="btn_tambah" type="submit" name="submit">Tambah</button>
        </div>
    </form>
</div>

Membuat Stlye CSS

Setelah menambahakan code diatas selanjutnya saya sedikit menambahkan/membuat styling cssnya kurang lebih seperti code di bawah
.container {
    padding: 20px;
}
form {
    width: 420px;
    padding: 10px 20px;
    border: 0.5px solid rgb(139, 138, 138);
    border-radius: 20px;
}

.forms {
    display: flex;
    flex-direction: column;
}

.forms label {
    margin-bottom: 10px;
    margin-top: 10px;
}

.forms input {
    border: 0.2px solid rgb(192, 192, 192);
    padding: 5px;
    display: flex;
    width: 100%;
    border-radius: 5px;
    height: 28px;
}

.forms input:focus {
    outline: none;
}


.buttons {
    display: flex;
    gap: 10px;
    margin-top: 20px;
}

.buttons .btn_tambah {
    background-color: rgb(69, 72, 236);
    padding: 8px;
    color: white;
    font-size: 14px;
    text-decoration: none;
    border-radius: 10px;
    border: none;
}

Membuat fungsi PHP

Setelah membuat struktur HTML dan membuat styling css selanjutnya kita membuat fungsi menggunakan PHP.
Pada file index.php setelah code html kita buat code php nya. Pertama kita perlu koneksi ke database, lalu kita akan eksekusi fungsi untuk mengupload file lebih dari satu menggunakan perulangan, contoh code

<?php
$koneksi = mysqli_connect("localhost", "root", "", "imageupload");

if(isset($_POST['submit'])){

    $collections = $_FILES['collection']['name'];
    $tmp_col = $_FILES['collection']['tmp_name'];

    foreach($collections as $key => $collection){
        $loc = $tmp_col[$key];

        $tmstm = time();
        $newNamed = $tmstm.$collection;

        move_uploaded_file($loc, 'collections/'.$newNamed);
        $koneksi->query("INSERT INTO collection(id, images)VALUES('', '$newNamed')");

    }

    echo "<script>alert('Data berhasil ditambahkan');window.location.replace('index.php');</script>";
}
?>

$koneksi = mysqli_connect("localhost", "root", "", "imageupload");
Sebuah kode PHP yang digunakan untuk membuat koneksi ke database MySQL. Kode ini membuat sebuah objek koneksi yang terhubung ke database MySQL dengan parameter :
  • localhost : nama host dari server database
  • root : nama user yang digunakan untuk mengakses server database
  • "" : bagian ini merupakan password yang digunakan untuk mengakses server database
  • imageupload : nama database yang dihubungkan

if(isset($_POST['submit'])){...}
Sebuah kondisi untuk mengecek apakah terdapat ddata yang dikirimkan melalui metode HTTP POST dengan nama variabel "submit"

$collections = $_FILES['collection']['name'];
$tmp_col = $_FILES['collection']['tmp_name'];
  • untuk mengambil nama dari file yang diupload melalui form dengan menggunakan metode HTTP POST
  • Digunakan untuk mengambil temporary name dari file yang diupload. Temporary name tersebut digunakan oleh server web saat memproses file yang diupload sebelum disimpan dilokasi yang telah di tentukan
foreach($collections as $key => $collection){...}
Perulangan yang digunakan untuk mengakses dan memproses setiap elemen dari sebuah array dengan nama variabel "$collections". Pada setiap perulangan akan diisi dengan nilai dari elemen array ke indeks tertentu, sedangkan "$key" akan diisi dengan indeks dari elemen array pada indeks tersebut.

$loc = $tmp_col[$key];

$tmstm = time();
$newNamed = $tmstm.$collection;
  • Untuk mengambil path sementara dari file yang diupload pada setiap perulangan
  • Array yang berisi path sementara dari setiap file yang diupload pada form upload fil
  • Digunakan untuk membuat nama varu untuk file yang diupload

move_uploaded_file($loc, 'collections/'.$newNamed);
Fungsi untuk memindahkan gambar yang diupload ke direktori tujuan pada server web, contoh di atas berarti file akan di simpan pada folder collections.

$koneksi->query("INSERT INTO collection(id, images)VALUES('', '$newNamed')");
Fungsi untuk memasukan data ke dalam database, dari kode diatas mengambil koneksi ke databasae yang telah terbentuk sebelumnya dan dieksekusi sebuah query SQL untuk memasukan data ke dalam tabel collection.


Hasil dari code diatas 

Dan ketika user/pengguna menambahkan gambar 1 atau lebih dan mengklik tombol 'tambah' maka fungsi php yang tadi kita buat akan di eksekusi dan kemudian gambar akan di masukan ke dalam database dan juga gambar akan tersimpan di dalam folder local kita.