Menampilkan Gambar dari Database di CodeIgniter
Penyimpanan file berupa gambar umumnya dilakukan dengan dua cara, yaitu disimpan di webserver, atau dimasukkan ke dalam database dengan field type yang digunakan adalah BLOB (binary large object). Keduanya memiliki kelemahan dan keunggulannya masing-masing. Penyimpanan pada webserver membutuhkan coding yang lebih kompleks, karena biasanya disertai penyimpanan informasi file ke dalam tabel juga, sehingga perlu kerja ekstra apabila ingin menampilkan, atau menghapusnya. Namun, (menurut kabar) akses akan lebih cepat daripada menggunakan database sebagai media penyimpanannya. Penyimpanan di database memang lebih berat, akan tetapi pengelolaannya akan jauh lebih mudah. Apapun itu, semuanya kembali kepada sang user, untuk memilih metode penyimpanan yang cocok dengan selera dan kebutuhan.
Proses dalam menampilkan gambar ke browser dari database (mysql) pada dasarnya membutuhkan dua file .php (misal : index.php dan foto.php). Untuk file index.php contohnya adalah sebagai berikut.
<img src="foto.php?id_foto=23" />
File index.php hanya berupa tag img yang mengirim variabel id_foto kepada file kedua, foto.php.
<?php // koneksi database dan query menghasilkan data field gambar ($data) // misal nama tabel= tb_foto, memiliki field 'id_foto' dan 'foto' (BLOB) $query = mysql_query("select foto from tb_foto where id_foto='$_GET[id_foto]'"); $row = mysql_fetch_array($query) or die(mysql_error()); $im = imagecreatefromstring($row['foto']); if ($im !== false) { header('Content-Type: image/jpeg'); imagejpeg($im); imagedestroy($im); } else { echo 'error'; } ?>
Dengan menjalankan index.php, maka gambar akan ditampilkan sesuai dengan id_foto.
Inilah dasar dalam proses menampilkan gambar yang disimpan di dalam database. Nah, sekarang bagaimanakah implementasinya di CodeIgniter, dimana proses sudah menggunakan konsep MVC? Senada dengan konsep dasar, kita membutuhkan satu controller dengan dua function utama, satu function untuk meload view sejenis dengan ‘index.php’ (pada konsep dasar) dan fungsi kedua untuk meload view sejenis dengan ‘foto.php’. Dengan ide yang sama, kita akan menampilkan foto dengan id_foto tertentu.
Lalu, kita buat controller dan model yang dibutuhkan.
// model <?php class Model_foto extends Model{ function get_foto($id) { $this->db->select('foto'); $this->db->from('tb_foto'); $this->db->where('id_foto',$id); $result = $this->db->get(); if($result->num_rows()>0){ $row = $result->row(); return $row->foto; }else{ return >false; } } } ?> // controller <?php class Welcome extends Controller { function Welcome() { parent::Controller(); $this->load->model('model_foto'); } function index() { $id_foto = $this->uri->segment(3); $data['id'] = $id_foto; $this->load->view('index',$data); } function tampil_foto() { $id = $this->uri->segment(3); $data['foto'] = $this->model_foto->get_foto($id); $this->load->view('foto',$data); } } ?>
Selanjutnya, modifikasi ‘index.php’ seperti berikut.
<img src="<?php echo site_url("controller_foto/tampil_foto/$id")" />
Modifikasi juga ‘foto.php’ seperti berikut.
<?php $im = imagecreatefromstring($foto); if ($im !== false) { header('Content-Type: image/jpeg'); imagejpeg($im); imagedestroy($im); } else { echo 'error'; } ?>
OK, kita selesai. Dengan menjalankan http://domain.com/index.php/controller_foto/index/23 maka kita akan melihat gambar yang kita buka dari database. Semoga bermanfaat.
Related posts:
- Simple Tutorial CodeIgniter Episode 1
- Simple Tutorial CodeIgniter Episode 2
- Membuat Website dengan CodeIgniter #2
- Membuat Website dengan CodeIgniter #1
- Simple Tutorial CodeIgniter Episode 3
49 Comments
Leave a comment
Recent Posts
Recent Comments
- LUKISAN MODERN on Sharing Script CI 1.7.2 untuk Sistem Informasi
- Wawan on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- chandra on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- nophil on Sistem Presensi dan Billing Sekolah
- yazid on Membuat Combobox Dinamis dengan CI dan Ajax
- faqih on Sharing Script CI 1.7.2 untuk Sistem Informasi
- rangga on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- reeyz on Membuat Website dengan CodeIgniter #1
- Rubby on Membuat Website dengan CodeIgniter #4
- Anggie on Membuat Website dengan CodeIgniter #1
- reeyz on Membuat Website dengan CodeIgniter #1
- Fajar on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- newbie2 on Ajax File Upload (CodeIgniter dan JQuery)
- newbie on Ajax File Upload (CodeIgniter dan JQuery)
- ardy on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Tips Trik Blogging on Simple Tutorial CodeIgniter Episode 3
- Anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Membuat Combobox Dinamis dengan CI dan Ajax
- anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL



bermanfaat, thanks
sama-sama. Thx dah berkunjung.
Blog nya bermanfaat , sangat membantu para pencinta CI … Thanks
Sedot ahh.. boleh yah mas :)
Silakan…
Boleh minta contaoh filenya ga?
bro mau nanya nih saya
itu code di atas cara menampilkan gambar dari database
menggunakan temporary file atau tidak?
mohon bantuannya dong cara menampilkan gambar dari database dengan menggunakan temporary file gmn caranya? dan tanpa temporary file juga gmn caranya?
thx
maaf saya newbie :)
saya belum menangkap pertanyaan Anda, temporary ‘file’?
kalau menampilkan video gimana ….????
itu embed flash mas…
tanpa temporary file mksdnya gini
dosen gw ksh tugas ada 2 tipe cara untuk masukin data ke database
1 pake temporary, lalu di hapus
ke 2 tidak pake temporary gitu
ada yg bisa bantu?
thx bgt
Kalau dalam hal ‘memasukkan’ data ke database dengan menggunakan temporary, sepemahaman saya dengan kondisi Anda, mungkin dengan membuat tabel temporary terlebih dahulu, kemudian pindahkan ke tabel asli. Tetapi hal ini jarang saya lakukan, dan mungkin akan sangat spesifik terhadap kasus yang dialami seorang developer.
Hal yang sering terjadi adalah ‘menampilkan’ data dari database dengan menggunakan temporary. Ini biasa saya lakukan kalau dirasa query terlalu berat dan terlalu banyak join antar tabel. Biasanya saya memecah query tersebut menjadi beberapa query kemudian saya jadikan tabel temporary. Akhirnya, dari penyederhanaan tersebut saya join-kan sehingga hasilnya sama dengan query utama tadi tetapi lebih ringan.
Pada prinsipnya, teknik temporary ini sederhana saja, dasarnya adalah syntax mysql CREATE TEMPORARY TABLE
Ya, kurang lebihnya seperti itu…
ohhh
terima kasih banyak anggie
sangat membantu
oh ya saya mau nanya jg jika seperti ini :
apakah sintax di atas tidak menggunakan temporary file?
tapi yang saya binggung kan dengan tidak menggunakan temporary file bagaimna kira2 sintax nya?
terima kasih banyak :)
$query=mysql_query(“select * from unekunek”);
while($result=mysql_fetch_array($query)){
$gambar=$result['picture'];
header(“Content-type: image/gif”); // or whatever
echo $gambar;
Lho? Sebenarnya ‘temporary file’ atau temporary tabel’?
Itu dua hal yang sangat berbeda…
temporary file yang saya maksud >o<
yang tanpa temporary file "”;
benar begitu?
Mo nanya, kan klo mo nampilin gambar pke syntax “header(‘Content-Type: image/jpeg’);”, nah ada cara lain ndak slain pke cara ini? saya blm paham maksudnya syntax “header” ini apa. saya mau menampilkan gambar dari mysql ke tabel, tp kan tipenya BLOB, makanya yg kluar simbol2 aneh gt. Mohon bantuannya.. mAKasih sblmnya…
sepertinya hanya itu caranya…di artikel ini pun sama, field typenya BLOB…
thx buat info-nya ya..
:D
OK…sama-sama…
Setelah saya coba kok masih
error ya mas.
errornya : syntax error, unexpected ‘<' in ….
mohon bantuannya. Makasih..
Dicek dulu kodenya mas…kan ada konfirmasi di line berapa?
Permisi, aduh saya masih bingung ini, boleh mita file-nya gak?? tak download…. thx
thanks….udh ngsih inspirasi…
mas,saya mau tanya
apakah script diatas hanya untuk type datanya BLOB ?
kalo varchar bagaimana mas ?
saya sudah mencoba,tapi yang muncul hanya gambar kotak dengan tanda silang ditengahnya yg berarti foto belum terbaca.
itu kenapa yah ?
padahal folder fotonya sudah saya satukan dalam folder view pada CI.
terima kasih sebelumnya
Sejauh yang saya tahu, untuk objek gambar biasanya disimpan dengan tipe data BLOB…
‘FOLDER FOTO’? Apkh Anda menyimpan foto di folder lalu menyimpan URL/path di tabel? Kalo iya, saya sarankan dipindahkan ke root aplikasi saja…sejajar dengan folder ‘system’
iya benar mas,saya hanya menyimpan path nya saja di database,fotonya saya simpan di folder.saya sudah mencoba sejajar dengan folder system,tetapi masih tidak bisa.
oya mas, ketika saya menjalankan controller welcom,kenapa view nya tidak terbaca ya ?
error nya seperti ini “The page you requested was not found.
” itu kenapa yah mas ?
terima kasih
Gunakan URL lengkap…misalkan http://domain.com/folder_foto/foto.jpg
Itu biasanya, krn penulisan URL salah, misal welcome ditulis welcom
okee saya sudah berhasil mas..
terima kasih ya mas anggie :D
Mas anggie, sejauh ini saya sudah dapat menyimpan path file gambar yang diupload di database, kemudian secara bersamaan file gambar yang diupload disimpan di folder “uploads”, yang ingin saya tanyakan adakah cara untuk menampilkan gambar dari path file yang disimpan di database dan folder “uploads” ke dalam view…???
trimakasih….
@levi : Anda tinggal query tabel itu, tampilkan dengan tag image biasa
<img src='<?php echo base_url();?>/PATH' />sesuaikan dengan ‘PATH’ yang Anda simpan di database.
Mas.. gimana caranya menampilkan seluruh data sesuai dengan id yang kita pilih. contohnya kita ingin menmapilkan data dari seluruh table yang id ny sesuai yg kta mau aja??? mohon bantuannya!!
@gungun:mudah saja, itu terakomodasi dengan SQL Query…
saya tertarik dgn artikel ini, tpi masih bingung dengan cara upload image ke dalam database dengan type data-nya BLOB dengan menggunakan CodeIgniter, ada contohnya? terima kasih, sebelumnya.
@vira : sebenarnya sama saja, biasanya memakai fungsi file_get_contents, untuk lebih jelasnya, cek di http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_%28blob_storage%29.xml
mas ,saya menggunakan databasenya oracle, script di modelnya gmina? mohon pencerahanya….
Waduh mas fadil, saya belum mempelajari Oracle tuh…cari dulu di google ya? Banyak kok artikelnya.
mas bisa ngak file_get_contents, mengambil data dari database sendiri,.,.
kok saya coba nggak keluar y mas?
saya cuma mendapatkan linknya aja waktu saya buka pagenya..
gambarnya ngga muncul.. gimana itu mas?
sangat membantu
mas… cara nampilin image per ID gimana ya….
maksudnya gini mas…
aq udah upload image langsung ke dalam database (bukan dalam folder) tros aq mau napilin image di dalam database itu satu/satu..
“field di dalam database”
id (int)
nama (varchar)
type (varchar)
datagambar (mediumblob)
nama sudah bisa saya tampilkan semuanya berbentuk tulisan LINK, jadi ketika kita klik nama gambar, maka gambar di sebelah bisa tampil,… yang jadi masalahnya mas ketiga saya klik nama gambar tersebut di sebelah bukan gambar yang keluar, tapi tulisan yang aneh (sepertinya biner gambar yang tersimpan di dalam database) jadi saya mintak solusinya gimana mas….
oya mas, ini scrib untuk menempilkan gambarnya..
<?php
include ("conn.php");
$data=mysql_query("select * from gambar where id='$_GET[page]'");
if(mysql_num_rows($data)0) {
$isi=mysql_fetch_array(mysql_query(“select * from gambar where id=’$_GET[page]‘”));
echo ”
nama : $isi[nama]
Type Image : $isi[type]
image : $isi[datagambar]===>> disini masalahnya mas..
“;
}
?>
Lha itu di artikel saya kan ada caranya? Knp ga ditiru aja?
thks infonya brow..berhasill:-D
@imam : sama” bro
makasih banget codingnya, tapi saya coba masih belum bisa, padahal saya copy paste, cuma id_photo saya ganti user_name…gambarnya lom muncul. apanya yg salah ya? klo pake browser IE cuma gambar silang aja, klo di mozila cuma blank…bisa ditulis lagi source codenya yg lengkap mas, termasuk database,table dan fieldnya? trima kasih
jadi koding saya begini:
untuk index.php
untuk photo.php
jadi koding saya begini:
untuk index.php
‘
untuk photo.php
‘
‘
kog codingnya ga bisa di post ya?