Kamis, 19 Maret 2009

Contoh Upload Gambar dan Disimpan ke Database MySQL

From PHP Indonesia

Salah satu pembaca situs PHPIndonesia.com ini suatu hari pernah menanyakan mengenai bagaimana caranya meng-upload gambar dan kemudian dimasukkan ke dalam database MySQL. Bagaimanakah caranya? Mari kita ikuti saja tulisan berikut ini.

Pertama-tama mari kita siapkan dulu tabel yang akan kita gunakan untuk menyimpan gambar. Sebut saja nama tabelnya adalah table_pictures. Berikut ini sintaks SQL untuk membuat tabel tersebut.

CREATE TABLE table_pictures (
id int(11) NOT NULL AUTO_INCREMENT,
picture blob,
update_timestamp datetime DEFAULT NULL,
extension varchar(5) DEFAULT NULL,
PRIMARY KEY (id)
) AUTO_INCREMENT=1;

Data image akan kita simpan pada field picture yang saya set tipe-nya adalah BLOB.

Sekarang kita akan buat form HTML untuk upload gambarnya. Simpan dengan nama upload_picture.php



Upload Picture



Picture:




Tampilannya akan nampak seperti berikut ini.

Form di atas punya action yang diarahkan ke file c_upload_picture.php. Pada file tersebutlah yang akan menangani proses upload dan simpan ke database. Berikut ini adalah source file c_upload_picture.php


$server = "localhost";
$username = "usermu"; // sesuaikan dengan username anda
$password = "passku"; // sesuaikan dengan password anda
$db_name = "phpindonesia"; // sesuaikan dengan database name anda

$db = mysql_connect($server,$username,$password) or DIE("Connection to database failed, perhaps the service is down !!");
mysql_select_db($db_name) or DIE("Database name not available !!");

if ($_FILES['upfile']['error'] == 0) {
$img = $_FILES['upfile']['tmp_name'];
$path_parts = pathinfo($_FILES['upfile']['name']);
$extension = strtolower($path_parts["extension"]);

if ((strtolower($extension) == "jpg") || (strtolower($extension) == "gif") || (strtolower($extension) == "png")) { // check extension
if ($_FILES['upfile']['size'] <= 500000) { // check file size
// get the picture (original)
$picture = addslashes(fread(fopen($img, "r"), $_FILES['upfile']['size']));

// save to database
mysql_query("insert into table_pictures (picture, update_timestamp, extension) values ('" . $picture . "', now(), '" . $extension . "')", $db);

echo "upload sukses!";
exit;
} else {
echo "ukuran file harus dibawah 500 kilobytes";
exit;
}
} else {
echo "extension file harus jpg, gif atau png";
exit;
}
} else {
echo "proses upload gagal!";
exit;
}
?>

Sampai di sini kita telah sampai proses upload dan hasil upload disimpan ke tabel pada database MySQL.

Sekarang kita akan buat script untuk menampilkan gambar yang sudah tersimpan di dalam database tadi. Saya beri nama filenya show_picture.php


$v_id = $_REQUEST['id']; // id gambar

$server = "localhost";
$username = "usermu"; // sesuaikan dengan username anda
$password = "passmu"; // sesuaikan dengan password anda
$db_name = "phpindonesia"; // sesuaikan dengan database name anda

$db = mysql_connect($server,$username,$password) or DIE("Connection to database failed, perhaps the service is down !!");
mysql_select_db($db_name) or DIE("Database name not available !!");

$result_picture = mysql_query("select * from table_pictures where id = " . $v_id, $db);
$v_picture = mysql_result($result_picture, 0, "picture");
$v_extension = mysql_result($result_picture, 0, "extension");
if ($v_extension == "jpg") {
$v_extension = "jpeg";
}

header('Content-type: image/' . $v_extension);
echo $v_picture;
?>

Untuk menampilkan picture Anda bisa panggil show_picture.php dengan parameter id sebagai id gambarnya. Contohnya seperti berikut ini.

http://localhost/show_picture.php?id=1

Artinya kita akan menampilkan gambar yang di database tersimpan dengan id = 1. Semoga contoh ini bisa memberi pencerahan bagi Anda. Selanjutnya Anda bisa kembangkan sendiri sesuai dengan kebutuhan Anda.

0 Komentar:

Posting Komentar

Berlangganan Posting Komentar [Atom]

<< Beranda