Monday, September 22, 2008

menyimpan gambar dalam database mysql+php

berikut ini tutorial sedikit tentang penyimpanan gambar di database
bagi rekan-rekan yang mengalami kesulitan untuk menyimpan gambar dalam database, mungkin tutorial ini dapat membantu menyelesaikan masalah.
konsekuensi dari gambar disimpan dalam database adalah database akan membesar. namun gambar dalam dikelola dengan baik, jika dibandingkan dengan menggunakan gambar dalam direktori.


buat tabel image
CREATE TABLE IF NOT EXISTS `image` (
`ImageId` int(10) NOT NULL auto_increment,
`Image` longblob,
`FileType` varchar(32) default NULL,
`keterangan` text,
PRIMARY KEY (`ImageId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


buat file simpan.php untuk menyimpan gambar


<?
if ($_POST['Submit']) {
if ($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) {
//print_r($_FILES);
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("gambar");
$photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"),
$_FILES['file']['size']));
$ktr=$_POST['ket'];
$query = sprintf("INSERT INTO image(Image, FileType, keterangan) VALUES
('%s', '%s', '%s')", $photo, $_FILES['file']['type'], $ktr);
if (mysql_query($query)) {
$messages[] = "Your files is successfully store in database";
} else {
$messages[]= mysql_error();
}
} else {
$messages[]="The file is bigger than the allowed size please resize";
}
}
?>
<html>
<head>
<title>Add Image</title>
</head>
<body>
<?
if (isset($messages)) {
foreach ($messages as $message) {
print $message ."<br>";
}
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1">
Keterangan Gambar
<textarea name="ket" cols="50"></textarea> <br> <br>
Masukkan gambar
<input type="file" name="file">
<input type="hidden" name="MAX_FILE_SIZE" value="96000">
<input type="submit" name="Submit" value="Submit">
</form>


</body>
</html>


untuk menampilkan gambarnya
simpan file lihat.php

<?php
mysql_connect("localhost", "userroot", "passwd") or die(mysql_error());
mysql_select_db("kampungs_gambar");

$result = mysql_query("SELECT ImageId, keterangan from image order by ImageId desc limit 1");
while ($row = mysql_fetch_array($result)) {
$ids[]=$row['ImageId'];
}

foreach ($ids as $id) {
$dr1 = $id;
}
$result = mysql_query(sprintf("SELECT * from image WHERE ImageId = %d", $dr1));
$row = mysql_fetch_array($result);
header(sprintf("Content-type: %s", $row['FileType']));
print $row['Image'];
?>

3 comments:

Unknown said...

Maksudnya bagaimana nih mas? Biasanya yang kita masukkin di database mysql kan alamat imagenya. Kalo pake teknik ini image bisa tersimpan di mysql langsung.

albertusdwiyoga said...

sori lama banget
betul mas, gambar masuk dalam database dan bisa di load dan ditampilkan dalam web, cuman resikonya database jadi besar

bastiangtr said...

kak Yoga...
gimana klo gambarnya yang di upload banyak... apa tidak terlalu membebani database yah...
mohon petunjuknya KK....