Dapatkan CD MP3 Murottal Al Qur'an dan Terjemahnya. Satu-satunya di Indonesia!!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Script Proses Edit File Yang Telah Diupload Ke Database MySQL


December 20th, 2009 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Beberapa waktu yang lalu, saya pernah memaparkan teknik untuk membuat script PHP untuk proses upload dan download file ke dalam database MySQL. Nah… pada artikel kali ini, akan saya paparkan hal yang masih kelanjutan dari artikel tersebut, yaitu proses update file yang telah diupload.

Pada prinsipnya proses update file yang telah terupload ke MySQL ini sama ketika proses uploadnya. Bedanya hanya pada query SQL nya saja. Ketika proses upload, kita gunakan query INSERT sedangkan untuk proses updatenya kita gunakan UPDATE. :-) seperti halnya jika kita edit/update data pada umumnya. Mudah bukan??

OK… let’s begin..

Andaikan kita punya tabel upload sebagai berikut ini:

CREATE TABLE `upload` (
  `id` int(11) auto_increment,
  `name` varchar(30),
  `type` varchar(30),
  `size` int(11),
  `dateupload` date,
  `content` longblob,
  `keterangan` text,
  PRIMARY KEY  (`id`)
)

Keterangan:

field ‘name’ menunjukkan nama file yang diupload, ‘type’ adalah tipe/jenis file yang diupload, ‘size’ adalah ukuran file, ‘dateupload’ menunjukkan tanggal upload, ‘content’ adalah isi dari file, dan ‘keterangan’ menunjukkan deskripsi dari file.

Karena struktur tabelnya agak beda dengan artikel sebelumnya, maka kita mulai lagi pembahasannya dari membuat script upload nya dahulu.

formupload.htm

<h1>Upload File</h1>

<form method="post" enctype="multipart/form-data" action="upload.php">
   Pilih File <br>
   <input name="userfile" type="file"><br>
   Keterangan:<br>
   <textarea name="keterangan"></textarea><br>
   <input name="upload" type="submit" value="Upload">
</form>

Tampilan dari halaman upload di atas adalah sbb:

script upload file

Untuk menghubungkan script PHP ke MySQL, kita buat dulu script koneksi

koneksi.php

<?php
// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');
?>

Berikutnya kita buat script untuk proses uploadnya

upload.php

<?php
// koneksi ke mysql
include "koneksi.php";

// membaca tanggal sekarang
$tanggal = date("Y-m-d");

// membaca keterangan
$ket = $_POST['ket'];

// membaca nama file
$fileName = $_FILES['userfile']['name'];     

// membaca nama file temporary
$tmpName  = $_FILES['userfile']['tmp_name']; 

// membaca size file
$fileSize = $_FILES['userfile']['size'];

// membaca tipe file
$fileType = $_FILES['userfile']['type'];

// membaca isi file yang diupload
$fp  = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

// query SQL untuk menyimpan isi file dan informasi lainnya ke database

$query = "INSERT INTO upload (name, size, type, content, dateupload, keterangan)
          VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$tanggal', '$ket')";

$hasil = mysql_query($query);

// konfirmasi proses upload
if ($hasil)  echo "<p>File ".$fileName." telah terupload</p>";
else echo "<p>File ".$fileName." gagal diupload</p>";

?>

Setelah file terupload, maka ada baiknya kita buat script untuk menampilkan daftar file yang sudah diupload. Di dalam daftar itu nanti kita coba tampilkan nomor ID file, nama file, tanggal diupload, serta link untuk proses update filenya. Oya, nanti di nama file, kita sertakan link untuk proses downloadnya.

Ini dia script untuk menampilkan daftar filenya

list.php

<?php
// koneksi ke mysql
include "koneksi.php";

echo "<h2>Daftar File Upload</h2>"; 

// query untuk membaca semua file yang terupload
$query = "SELECT * FROM upload";
$hasil = mysql_query($query);

// menampilkan daftar file
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Nama File</th><th>Tanggal Upload</th><th>Keterangan</th><th>Action</th></tr>";
while ($data = mysql_fetch_array($hasil))
{
    echo "<tr><td>".$data['id']."</td><td><a href='download.php?id=".$data['id']."'>".$data['name']."</a></td><td>".$data['dateupload']."</td><td>".$data['ket']."</td><td><a href='edit.php?id=".$data['id']."'>Edit</a></td></tr>";
}
echo "</table>";

?>

Keterangan: Jangan lupa untuk menyertakan parameter nomor ID file pada link proses download dan updatenya. Karena nomor ID ini nanti akan digunakan untuk mengidentifikasi file mana yang akan didownload atau diupdate.

Berikut ini tampilan dari daftar file yang diupload.

script upload file

Untuk proses downloadnya, kita buat script berikut ini

download.php

<?php

// koneksi ke mysql
include "koneksi.php";

// membaca nilai ID file yang berasal dari link download.php?id=...
$id      = $_GET['id'];

// query untuk membaca data file berdasarkan ID
$query   = "SELECT * FROM upload WHERE id = $id";

$hasil   = mysql_query($query);
$data    = mysql_fetch_array($hasil);

// mengenerate proses download file
header("Content-Disposition: attachment; filename=".$data['name']);
header("Content-length: ".$data['size']);
header("Content-type: ".$data['type']);

echo $data['content'];

?>

Sedangkan untuk proses edit file, kita arahkan linknya menuju form edit

edit.php

<h1>Edit File</h1>

<?php
// koneksi ke mysql
include "koneksi.php";

// membaca ID file yang akan diedit
$id = $_GET['id'];

// membaca data deskripsi dari file
// deskripsi ini nanti akan ditampilkan di form edit

$query = "SELECT keterangan FROM upload WHERE id = '$id'";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
?>

<form method="post" enctype="multipart/form-data" action="update.php">
Pilih File <br>
<input name="userfile" type="file"><br>
Keterangan:<br>
<textarea name="ket"><?php echo $data['keterangan']; ?></textarea>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<br>
<input name="submit" type="submit" value="Update">
</form>

Nah.. selanjutnya kita buat script update nya. Untuk idenya, sebelum proses update, kita harus mengecek dahulu apakah filenya diupdate atau tidak, ataukah hanya deskripsi (keterangan) filenya saja. Jika filenya tidak diupdate, maka kita hanya gunakan query untuk update deskripsinya saja.

Untuk mengecek apakah filenya diupdate atau tidak, kita hanya ngecek file size nya saja. Jika filenya diupdate, maka file sizenya tidak sama dengan 0. Namun jika file sizenya sama dengan 0 maka file tidak diupdate.

Mengapa menggunakan logika tsb? Ya… karena file size sama dengan 0 itu maksudnya user tidak memilih file baru untuk diupload menggantikan file lama.

OK… sekarang kita terapkan ide tersebut

update.php

<?php

// koneksi ke mysql
include "koneksi.php";

// membaca tanggal sekarang
$tanggal = date("Y-m-d");

// membaca ID file yang akan diupdate
$id = $_POST['id'];

// membaca keterangan
$ket = $_POST['ket'];

// membaca size file
$fileSize = $_FILES['userfile']['size'];

if ($fileSize > 0)
{
  // jika file size > 0 maka proses update file dilakukan

  // membaca nama file
  $fileName = $_FILES['userfile']['name'];     

  // membaca nama file temporary
  $tmpName  = $_FILES['userfile']['tmp_name']; 

  // membaca tipe file
  $fileType = $_FILES['userfile']['type'];

  // membaca isi file yang diupload
  $fp      = fopen($tmpName, 'r');
  $content = fread($fp, filesize($tmpName));
  $content = addslashes($content);
  fclose($fp);

  // query SQL untuk update data file

  $query = "UPDATE upload
            SET name = '$fileName', size = '$fileSize', type = '$fileType', content = '$content',
                dateupload = '$tanggal', keterangan = '$ket'
            WHERE id = '$id'";
}
else
{
   // jika file size tidak lebih besar dari 0 maka hanya deskripsi file nya saja yang diupdate
   $query = "UPDATE upload SET keterangan = '$ket' WHERE id = '$id'";
}

// jalankan query update
$hasil = mysql_query($query);

// konfirmasi proses upload
if ($hasil)  echo "<p>Berhasil diupdate</p>";
else echo "<p>Gagal diupdate</p>";

?>

Selesai dah membuat script update filenya… prinsipnya sama kan dengan proses update data seperti umumnya? OK selamat mengembangkan sendiri ya..

VN:F [1.9.3_1094]
Rating: 9.3/10 (9 votes cast)
Script Proses Edit File Yang Telah Diupload Ke Database MySQL, 9.3 out of 10 based on 9 ratings
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: edit file script - php script upload - script update file - script upload file -


Ada 18 komentar dalam artikel ini.

  1. heru says:

    mantep pak, blob emang canggih cuma sering jadi kendala waktu kita export dan import db, sizenya jadi lumayan besar :D hehe

    Thanks infonya pak :)

  2. sahL says:

    Alhamdulillah.. terimakasih banyak pa Ari, meski tdk sama persis, tp ini tepat yg sedang sy perlukan.
    Btw, numpang tanya..kalo file terupload sisimpan dlm folder tertentu (misal: nama folder file), kemudian file terupload/lampiran tsb ingin di update dgn file baru namun dgn nama file yg persis sama dgn sblumnya, apakah file yg lama akan ter-REPLACE ataukah akan terbentuk file copynya yah?

    Terimakasih.

  3. rosihanari says:

    @sahl: harusnya tereplace mas… makanya untuk script upload file ke folder, hendaknya nama file itu terekam di tabel database. Supaya nanti kalo ada proses update, bisa tahu nama file yang tereplace dan yang akan dihapus bila nama filenya beda.

  4. rosihanari says:

    @heru: cuman yang masih tanda tanya untuk upload file ke mysql itu, kenapa kalo filenya besar (1 MB ke atas) bisa error ya? padahal di settingan php.ini untuk max file size uploadnya udah tak besarin. Ada yang tahu gak masalahnya?

  5. edo says:

    pak, web punya bapak ini pake skrip apa seh? kode programnya sampe kelihatan sintaksnya segala? kalo pake

    kode

    cuma item doang pa..

  6. awal says:

    bang tolong dong gimana cara membuat grid dengan menggunakan php, trus bisa diedit

  7. rosihanari says:

    @edo: ini saya pake WordPress mas, dan untuk menampilkan kodenya pake plugin WP-Syntax

  8. tama says:

    kalo mau menampilkan file PDF di web browser gmna yach?
    Seperti web nya scribd.com.
    penyimpanan datanya di simpan dalam database ato seperti halnya upload file biasa…??

  9. ilham says:

    Assalamu’alaikum,… maaf, pak mau tanya kalau misalkan kita buat website nah kita buat halaman buat upload file apakah sama script upload file buat di localhost sama sudah online,.. makasih

  10. rosihanari says:

    @ilham: sama persis mas…

  11. alam says:

    salam mas…

    saya udah cb koding yg mas ksh d atas..trus pas saya upload file yg lbh gede dari 1MB dy gagal tuk d upload..tp klo file kecil yg cm sampe 150KB dy berhasil d upload..

    saya jg sudah ubah upload_max_filesize = 500M
    yg sblmNy hnyna 128M

    dan saya jg sudah tambahkan
    input type=”hidden” name=”MAX_FILE_SIZE” value=”5000000″

    saya pake XAMPP dan mozila sbg browser..

    thx

  12. rosihanari says:

    @alam: kalo upload file ke mysql memang ada batasan besarnya file karena tipe data blob sendiri ada batasannya. Kalo upload file yang besar sebaiknya ke folder saja, jangan ke db.

  13. alam says:

    terima kasih mas saranNy..

    tp klo misalkan saya sudah upload yg file dari folder.trus saya mw tambah kan edit seperti koding yg di atas.itu bagaimana caraNy mas..??soalNy saya ud coba ngikut koding update di atas..data dalam db sudah bisa d update,tetapi file yg ad dalam folder tidak terupdate..

    mohon saranny lg mas..
    terima kasih..

  14. investasi says:

    rumit banget gak ngerti aku, tp mau saya pelajari

  15. edo saputra says:

    wuih keren nih, ijin coba ya mas

  16. indra says:

    pak mo tanya..
    itu g nyimpen ke folder ya??
    klw mo nyimpen ke folder di tambah script dmn nya pak?

    makasih seblum nya

  17. dhimas says:

    mas rosi,,kebetulan sekali aku menemukan artikel ini.di field nama dalam dtabase itu hasilnya sama dengan namafile yang kita upload ya mas??hehe cm memastikan..

    kalo iya,berarti .jpg/.png nya masih nempel dunk mas.

    lha biar exktensinya ga nempel gimana mas??mohon penjelasnnya.makasih



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word