script php form dengan upload image

sedang membutuhkan script php untuk upload image? search di google mungkin gampang ditemukan. Tapi jika anda sedang membutuhkan script php untuk upload image dengan tujuan tertentu seperti:

  1. form registrasi dimana user yang registrasi akan mengupload fotonya, beserta data input pada form
  2. form komplain pada sebuah layanan, dimana user memasukan keluhan dan data lainnya, disertai dengan screen shot image,
  3. form registrasi yang melampirkan scan id
  4. form konfirmasi pembayaran yang menyertakan hasil foto atau scan bukti pembayaran/ transfer
  5. dan form lainnya yang memerlukan lampiran image ..

contoh form php mungkin banyak, tapi untuk kebutuhan di atas, anda perlu memodifikasinya sesuai keperluan Anda. Nah pada jenis form yang menyertakan lampiran gambar/ image, kesulitan utamanya adalah bagaimana supaya image yang diupload tersebut tidak tertukar dengan image user lainnya, dan beberapa hal lain yang dipertimpangkan saat membuat form php atau web, diantaranya:

  1. nama image yang dilampirkan atau diupload user harus unik, karena bisa saja terjadi duplikat nama. Jadi nama image yang diupload oleh user, sama dengan nama image yang diupload user lain sebelumnya. Jika hal ini terjadi, biasanya image akan menimpa atau rewrite image sebelumnya, .. tentu hal ini tidak boleh terjadi bukan?
  2. harus terkoneksi dengan data yang diinputkan oleh user, atau saat kita membuka data hasil input salah satu user, image tidak boleh tertukar dengan image user lainnya.

Untuk memenuhi kebutuhan form sperti di atas, saya sudah membuat sample form dengan disertai lampiran image. Anda dapat memodifikasinya sesuai kebutuhan Anda. Langsung saja, form ini dibuat menggunakan script dari http://www.phpeasystep.com/phptu/18.html , namun sudah saya modifikasi total dan saya menambah databse mysql untuk menyimpan data dari form.

Dalam script php form yang saya buat ini ada 3 halaman utama yaitu:

  1. index.php , adalah halaman form dimana user mengisikan data dan mengupload gambar/ foto/ image.
  2. upload-rename.php, adalah halaman yang memproses pemberian nama baru, dan menyimpan data dari form ke database.
  3. hasil.php, adalah halaman anda dapat melihat hasil dari data yang disimpan.

Dalam script php ini saya memberi contoh form konfirmasi pembayaran dengan upload image bukti tranfer.

berikut code html pada halaman upload-image.php

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
</head>
<body>
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<form action="upload-rename.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<div class="form-group">
<label >Nama</label>
<input type="text" class="form-control" name="nama">
</div>
<div class="form-group">
<label>Jumlah Transfer</label>
<input type="text" class="form-control" name="transfer">
</div>
<div class="form-group">
<label>Bank</label>
<input type="text" class="form-control" name="bank">
</div>
<div class="form-group">
<p>Pilih File Gambar : <br/><input type='file' name='filegbr' id='Filegambar'></p>

</div>
<div class="form-group">
<input type="submit" name="Submit" value="Upload" />
</div>
</form>
</div>
<div class="col-md-4"></div>
</div>

</body>
</html>

tampilan formnya adalah seperti ini:

form ulpload image ke datbase
form ulpload image ke database

Setelah user mengisi data dan klik upload, data akan disimpan ke database mysql dengan menambahkan angka unik pada nama image yang diupload. Tujuan penambahan angka unik pada image ini adalah supaya tidak terjadi rewrite atau menimpa image yang kebetulan mempunyai nama sama yang sudah tersimpan di folder upload.

Berikut code halaman upload-rename.php yang mengeksekusi upload image dan menyimpan datanya di mysql database.

<?php
//script php dimodifikasi berdasarkan script
//http://www.phpeasystep.com/phptu/18.html

//koneksi ke database
include "koneksi-database.php";

//menangkap posting dari field input form
$nama        = $_POST['nama'];
$transfer    = $_POST['transfer'];
$bank        = $_POST['bank'];

$namafolder="gambar/"; //folder tempat menyimpan file
if (!empty($_FILES["filegbr"]["tmp_name"]))
{
$jenis_gambar=$_FILES['filegbr']['type']; //memeriksa format gambar
if($jenis_gambar=="image/jpeg" || $jenis_gambar=="image/jpg" || $jenis_gambar=="image/gif" || $jenis_gambar=="image/png")
{
$lampiran = $namafolder . basename($_FILES['filegbr']['name']);

//mengupload gambar dan update row table database dengan path folder dan nama image
if (move_uploaded_file($_FILES['filegbr']['tmp_name'], $lampiran)) {

$query_insert = "INSERT INTO dataimage (nama,transfer,bank,image)
VALUES ('$nama','$transfer','$bank','$lampiran')";
$insert = mysql_query($query_insert);

echo"
Data berhasil disimpan <br/>
Nama : $nama <br/>
Transfer: $transfer<br/>
Bank: $bank<br/>
<br/><br/>
<img src='$lampiran' height='300'>";

//Jika gagal upload, tampilkan pesan Gagal
} else {
echo "Gambar gagal dikirim";
}
} else {
echo "Jenis gambar yang anda kirim salah. Harus .jpg .gif .png";
}
} else {
echo "Anda belum memilih gambar";
}
?>

 

sedangkan tampilan dalam browser adalah seperti ini:

 

data-upload

Tampilan di atas adalah tampilan halaman konfirmasi setelah user berhasil mengisikan data pada form dan mengupload image.

 

Sedangkan untuk halaman bagi admin, untuk melihat tampilan data yang telah diupload oleh para user adalah seperti ini :

hasil-upload

 

Untuk halaman admin atau halaman yang menampilkan hasil upload semua user, adalah halaman hasil.php, dengan code php sebagai berikut:

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
</head>
<body>
<div class="panel panel-default">
<div class=panel-heading>Data</div>
<div class=panel-body>
<p>Berikut ini adalah data yang diposting oleh user</p>
</div>
<table class=table>
<thead>
<tr>
<th>Nama</th>
<th>Transfer</th>
<th>Bank</th>
<th>Image</th>
</tr>
</thead>
<tbody>
<?php
include "koneksi-database.php";
$data = "SELECT * from dataimage";
$bacadata = mysql_query($data);
while($select_result = mysql_fetch_array($bacadata))
{
$nama        = $select_result['nama'];
$transfer    = $select_result['transfer'];
$bank        = $select_result['bank'];
$image        = $select_result['image'];

echo"<tr> <td>$nama</td><td>$transfer</td><td>$bank</td><td><img src='$image' height='150'></td></tr> ";
//ganti imagesup dengan nama folder dimana anda menempatkan image hasil upload
}?>
</tbody>
</table>
</div>
</div>
</body>
</html>

jangan lupa, folder “gambar”  dirubah permission nya/ CHMOD  ke  777

Nah, contoh script form dengan upload image ini dapat dikembangkan untuk berbagai keperluan dengan memodifikasi codingnya. Untuk download script php ini dapat mengklik tombol download di bawah.

 

Download script php form dengan upload image

password zip : www.bayuajie.com

Script PHP ini saya tulis dan sudah diuji menggunakan localhost dari Appserv dan dengan php versi 5.2.6 Jika Anda menggunakan Xampp sebagai localhostnya, maka ada kemungkinan script tidak kompatible atau error, kemungkinan karena versi php anda lebih baru. Jika Anda ingin menginstal Appserv sebagai localhost, silahkan ikuti petunjuk cara instal localhost di pc offline menggunakan Appserv

Save

Save

Save

Save

    1. Halo Eko. Tabelnya cuma ada satu, jadi insertnya hanya ada satu saja. BTW, setelah saya cek, ternyata saya salah memberikan link download scriptnya… heheh maaf. sudah saya betulkan link scriptnya. silahklan download lagi, dan pelajari. sudah ada sql dump nya di situ.

  1. Pasangiklan-gratis

    Udah download gan, cuma dumb.sql gagal terus utk di upload ke phpmyadmin. Tolong pencerahannya gan, sy mau pasang di script iklan baris Cms dari cpnel. Makasi gan i fonya sangat dibutuhkan

    1. jika gagal dump ke phpmyadmin,…lakukan dengan cara berikut:
      buat database dengan nama: image ,
      lalu buat table dengan query berikut (run) :

      CREATE TABLE `dataimage` (
      `id` int(11) NOT NULL auto_increment,
      `nama` char(100) default NULL,
      `transfer` char(20) default NULL,
      `bank` char(20) default NULL,
      `image` varchar(150) default NULL,
      PRIMARY KEY (`id`)
      )

    1. tidak bisa gan, dan tidak akan pernah bisa di blogger. Script php tidak akan bisa berjalan di blogger. Jadi harus di hosting berbayar atau hosting gratis. cari hosting gratis banyak kok, kalo pengin yang gratisan. trus tinggal pake iframe untuk dipasang di blogger.

  2. Warning: mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES) in C:xampphtdocsupload_fotokoneksi-database.php on line 7

    Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in C:xampphtdocsupload_fotokoneksi-database.php on line 8

    Notice: Undefined variable: HTTP_POST_FILES in C:xampphtdocsupload_fotoupload-rename.php on line 17

    Notice: Use of undefined constant none – assumed ‘none’ in C:xampphtdocsupload_fotoupload-rename.php on line 29

    Notice: Undefined variable: ufile in C:xampphtdocsupload_fotoupload-rename.php on line 29

    Notice: Undefined variable: HTTP_POST_FILES in C:xampphtdocsupload_fotoupload-rename.php on line 31

    Warning: copy(): Filename cannot be empty in C:xampphtdocsupload_fotoupload-rename.php on line 31
    ErrorData Gagal Disimpan …

    1. ITU erornya Karena tidak bisa koneksi-database database:
      Username root Dan tanpa password?

      Solusi:
      Buat username database baru, dengan password baru. Buka koneksi-database.php Dan isikan username Dan passwordnya.

      Username harus ada passwordnya Dan tidak boleh kosong/tidak boleh tanpa password.

      Baiknya menggunakan appserv untuk localhostnya.
      Script php saya sudah diuji di appserv Dan hosting online, jika tidak bisa berjalan di xamp, maka Saran saya uninstall xamp,Dan ganti dengan appserv.

    1. mungkin bisa dibagikan , “sedikit modifikasi” yang dimaksud gan, biar yang lainnya yang pakai xampp juga bisa jalan. Saya belum pernah pakai xampp, jadi gak ngerti gan 🙂

    1. saya tdak tahu cms lokomedia, untuk mengintegrasikan anda harus tau php. cara paling mudah dengan menginstalnya script ini, lalu kemudian menambahkan link ke web/blog cms lokomedia anda. jawaban saya begitu aja,

    1. harusnya jika anda mengikuti petunjuknya, pasti gambar akan muncul, perhatikan folder $path pada script, sudah dibuat foldernya? sudah disesuaikan namanya?

  3. gan mau tanya ini knapa ya, saya runing di XAMPP
    Notice: Undefined variable: HTTP_POST_FILES in E:xampphtdocsinputaaaupload-rename.php on line 17

    Notice: Use of undefined constant none - assumed 'none' in E:xampphtdocsinputaaaupload-rename.php on line 29

    Notice: Undefined variable: ufile in E:xampphtdocsinputaaaupload-rename.php on line 29

    Notice: Undefined variable: HTTP_POST_FILES in E:xampphtdocsinputaaaupload-rename.php on line 31

    Warning: copy(): Filename cannot be empty in E:xampphtdocsinputaaaupload-rename.php on line 31
    Error

    1. mungkin dikarenakan versi php pada xampp anda adalah versi yang baru, sehingga ada variable yang tidak bisa dibaca.
      coba buka file upload-rename.php ganti semua $HTTP_POST_FILES dengan $_FILES , mudah2an bisa.

      saya menggunakan versi php 5.2.6

    1. mungkin nanti saya buatkan contohnya, tapi klo sempat ya gan… kalo pengen cepet dibuatkan ya tak kenai charge, mau gak? hahaha.
      scriptnya paling menggunakan database mysql hosting untuk menyimpan data.
      Cuma saya belum bisa yang langsung kirim dan balas ke inbox email, banyak masalahnya seperti tidak masuk inbok atau terdeteksi sebagai spam.

    1. Halo bagas,
      terima kasih sudah memberi tahu, sudah saya cek lagi.. memang benar ternyata tdak masuk ke database… saya yang kurang teliti, maaf ….
      solusinya, kalau bagas tahu cara menambahkan kolom di databasenya, silahkan tambahkan 1 kolom dengan nama “nama” , saya lupa memberi kolom tersebut.
      atau jika ingin mengulang dari awal, Script sudah saya perbaiki, kalau ingin download lagi, silahkan.. hapus dahulu databasenya dan buat database/table baru dengan query di file sql yang ada di file downloadnya.

      1. Gan, kalau di jadiin satu form aksi php-nya bisa gk yah? kalau bisa gimna caranya?
        oh ya gan buat format .png qok gk bisa di upload yah

        1. mungkin bisa gan, tapi terlalu rumit buat saya .. hehehe, saya belum nyoba, harus cari2 referensi dulu. Terima kasih untuk koreksinya… suapaya file format png bisa diupload, buka file upload-rename.php
          lalu cari dan ganti $jenis_gambar==”image/x-png” menjadi $jenis_gambar==”image/png”

          scriptnya akan saya update dan koreksi.

        2. @bagas , itu perintah script php gan, … jadi jika jenis file image dan format png, boleh diupload.
          untuk menghapus tampilan gambar, tinggal memakai perintah query php untuk mengahapus entry row di table database, jadi nanti tidak akan ditampilkan di halaman hasil.php, jadi scriptnya harus dimodifikasi lagi… untuk menghapus file gambarnya, manual gan dicari image di foldernya trus dihapus. saya belum menemukan script untuk menghapus file langsung dari foldernya.. mungkin lain kesempatan klo saya nemu scriptnya, saya bahas di blog ini, gan.

          1. ditunggu updatean selanjutnya ya gan.
            gan mau nanya lagi kalau pas gambar di upload bisa gk nama sesuai dngan id atau nomer urut di db?

  4. Pingback: Cara membuat script php upload multiple file sekaligus – Corat Coret

  5. Bagas Tri Hadmodjo

    min mau tanya, sudah berhasil outputnya cuman ada tulisan muncul seperti ini :

    Warning: mysqli_query() expects at least 2 parameters, 1 given in C:xampphtdocsbankupload-rename.php on line 30

    1. scriptnya sepertinya tidak ada masalah, … itu errornya sepertinya pada script anda. anda memodifikasinya/menggabunggkan/menambahkan dengan script anda sendiri? di script saya tidak ada mysqli_query() tapi pada script saya menggunakan mysql_query() … jadi saya tidak bisa berkomentar banyak, selain anda juga tidak melampirkan script lengkapnya.

  6. gan mau nanya ni, kalo kayak gini knp ya ?

    Warning: move_uploaded_file(gambar/captcha.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:xampphtdocscobacobaupload-rename.php on line 26

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move ‘C:xampptmpphp1CC8.tmp’ to ‘gambar/captcha.png’ in C:xampphtdocscobacobaupload-rename.php on line 26
    Gambar gagal dikirim

    1. scriptnya sama persis dengan punya saya, atau sudah dimodifikasi?
      sudah ada folder “gambar” di dalam folder “cobacoba” ?
      pasti belum buat folder “gambar” untuk tempat upload imaagenya kan?

    1. yang belum jelas apanya ya? kalau menjelaskan secara detail ya saya tidak bisa, hehehe.. ok kapan-kapan saya buat videonya cara instalnya di localhost.

  7. $query_insert = “INSERT INTO dataimage (nama,transfer,bank,image)

    mungkin image itu harus diganti dengan filegbr

    jadinya……..

    $query_insert = “INSERT INTO dataimage (nama,transfer,bank,filegbr)

    1. silahkan diganti seperti usulan Anda, dan coba sendiri scriptnya bekerja gak? saya jamin pasti tidak akan bekerja, hehehe…
      query insert yang Anda tulis itu, image diganti filegbr,, sedangkan di database yang saya sertakan di file dump sql dalam file script download, tidak ada kolom filegbr, tapi image … jadi saya pastikan jika menggunakan query insert yang anda tulis tersebut, justru akan membuat script menjadi error dan tidak bisa menyimpan data ke database. .. perhatikan script yang saya tulis di atas, atau script di file download, dan perhatikan alurnya. Terima kasih.

  8. Berikut ini adalah data yang diposting oleh user

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:xampphtdocsdonasihasil.php on line 25

    kalo gitu gimana ya mas

    1. scriptnya sama persis dengan yang didownload dari blog ini? atau copas dari blog ini?

      Penyebabnya bisa bermacam-macam,
      cek koneksi ke database (koneksi-database.php), apakah username dan password ke database sudah benar?

      kemungkinan kedua adalah Anda salah menuliskan querynya, coba cek kembali apakah query yang dituliskan sudah benar?
      uji query tersebut di phpmyadmin , atau di sqlyog , jika tidak menunjukan hasil .. mungkin salah menuliskan query sqlnya.. coba teliti kembali scriptnya.

      1. sama persis dengan yg saya donlut di blog ini mas, okey2 saya teliti kembali, maklum saya juga masih tahap belajar mas, ehhehehehe.. sangat membantu blog ini

  9. kak, kok saya udah coba tapi hasilnya belum memilih gambar terus ya? padahal udah dipilih gambarnya. terus di situ keterangannya ubah permission, tapi saya kan pake windows bukan linux, gimana kalau gitu?

      1. Saya pakai localhost xampp, bisa ga ya kak? Soalnya saya bingung banget cari fungsi upload data yg ada gambarnya. Kalau dapet juga ga bekerja terus, tapi yg dari blog kakak ini bisa. Cuma ya itu hasilnya belum memilih gambar terus.

        1. scriptnya sama persis seperti yang didownload dari blog ini, atau sudah dirubah/dimodifikasi?

          Kalau sama persis, dan ternyata error,dugaan saya, mungkin versi phpnya yang berbeda, atau localhostnya yang bermasalah.. mungkin ya.
          coba instal di webhosting.

          atau kalau mau, ganti xampp dengan localhost dari appserv, baca tulisan di atas, ada link cara instal appserv.

  10. Saya coba pake script ini, bisa upload dan tampil tapi kok gak masuk ke database ya?
    trus coba pake script ini dengan nama file2 yg sesui dengan database saya tapi hasilnya selalu belum pilih foto terus. kenapa ya?

    1. kemungkinan versi phpnya beda,versi phpnya berapa?jangan versi php 7 ya,gak akan bisa.
      pake versi php 5 atau 5.6 . script ini sudah diuji di localhost menggunakan php 5.6 dan di web hosting php versi 5.6 berjalan lancar.

  11. Script nya bisa, tapi gak kesimpen di database. cuma ada di folder gambar doang.
    trus saya cobain script ini dengan database beda hasilnya belum milih foto terus, pdhl script nya sama cuma sesuain sama database saya kenapa ya?

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.