Jumat, 11 Mei 2012

Random Image dengan PHP

Setelah saya posting artikel beberapa waktu yang lalu tentang cara membuat random quotes dengan PHP, kali ini saya akan coba memaparkan bagaimana ide dan cara membuat random image.
Image yang kemunculannya akan dirandom ini nantinya disimpan ke dalam database, dan bukan berdiri sendiri sebagai file dalam direktori atau folder. Dalam hal ini user bisa mengupload image file ke server melalui form. Dengan ditempatkannya image ke dalam database, maka tingkat sekuriti dapat lebih aman karena kita tidak perlu meng-chmod 777 folder di server sebagai tempat image diupload. Selain itu… biasanya banyak hosting yang menyediakan fitur space MySQL yang unlimited, dibandingkan space quota di server yang biasanya terbatas :-)
Secara umum, ide untuk membuat random image ini sangat mudah. Konsepnya adalah sebagai berikut: user mengupload image dari komputer client ke server, tepatnya ke database. Selanjutnya untuk proses mengacak imagenya kita gunakan function RAND() yang ada di MySQL. Konsep ini hampir sama dengan membuat random quotes. Tambahan lagi, untuk memunculkan image dari database ke browser, kita memerlukan script khusus. Script khusus apa nih maksudnya? Simak baik-baik artikel ini selanjutnya.

Seperti konsep yang telah kita tentukan di atas, pertama kali kita coba membuat fitur untuk upload image ke database terlebih dahulu. Nah… sekarang kita create terlebih dahulu tabelnya.

1.CREATE TABLE tabelimage
2.(
3.id INT AUTO_INCREMENT,
4.image LONGBLOB,
5.PRIMARY KEY(id)
6.);
Perhatikan query di atas, bahwa untuk menyimpan data image kita perlu tipe data BLOB. Kalau tidak salah ada 3 jenis tipe data BLOB ini, yaitu TINYBLOB, MEDIUMBLOB dan LONGBLOB. Ketiganya dibedakan berdasarkan size data yang bisa tertampung. Selanjutnya, untuk ID, field ini diperlukan untuk pembeda antar image yang diupload. ID ini nanti yang akan dirandom oleh function RAND().
OK.. next…
Sekarang kita coba buat script untuk upload imagenya.
upload.htm
1.<h1>Upload Imageh1>
2.<form method="post" enctype="multipart/form-data" action="simpan.php">
3.Pilih image :
4.<input type="hidden" name="MAX_FILE_SIZE" value="100000"><br />
5.<input name="image" type="file">
6.<input type="submit" value="Submit" name="submit">
7.form>
Perhatikan pada komponen . Atribut value="100000" ini menunjukkan maksimum size dari image yang bisa diupload adalah 100Kb. Anda bisa memperbesar valuenya. Tapi dengan catatan: value ini harus lebih kecil atau sama dengan nilai dalam parameter upload_max_filesize yang ada dalam konfigurasi PHP pada file php.ini. Default dari nilai parameter tersebut adalah 2Mb.
Selanjutnya kita buat script simpan.php nya.
simpan.php
01.
02. 
03.// membaca file yang diupload dan disimpan dalam TEMP
04.$tmpName  = $_FILES['image']['tmp_name'];
05. 
06.// membuka isi file image yang disimpan dalam TEMP
07.$fp  = fopen($tmpName, 'r');
08. 
09.// membaca isi file image yang disimpan dalam TEMP
10.// isi file image yang dibaca berupa string
11.$dataimage = fread($fp, filesize($tmpName));
12. 
13.// apabila ditemukan karakter slash pada string, maka akan diubah menjadi double slash
14.// prosedur ini bila tidak dilakukan akan merusak image
15.$dataimage = addslashes($dataimage);
16. 
17.// menutup file dalam TEMP yang telah dibaca
18.fclose($fp);
19. 
20.// koneksi ke MySQL
21.mysql_connect('hostName','dbUserName','dbUserPass');
22.mysql_select_db('dbName');
23. 
24.// query menyisipkan data image ke tabel
25.$query = "INSERT INTO tabelimage(image) VALUES ('$dataimage')";
26.$hasil = mysql_query($query);
27. 
28.// menampilkan konfirmasi sukses tidaknya upload
29.if ($hasil) echo "Upload image sukses";
30.else echo "Upload image gagal";
31. 
32.?>
Sekarang… kita buat script untuk menampilkan random imagenya. Dalam hal ini yang dirandom adalah ID dari imagenya.
random.php
01.
02. 
03.// koneksi ke mysql
04.mysql_connect('hostName','dbUserName','dbUserPass');
05.mysql_select_db('dbName');
06. 
07.// query untuk merandom ID dari image
08.$query = "SELECT id FROM tabelimage ORDER BY RAND()";
09.$hasil = mysql_query($query);
10. 
11.echo "']."' />";
12. 
13.?>
Untuk bisa menampilkan image yang dirandom, kita perlu membuat script khusus (pada contoh ini adalah showimage.php). Nah… yang menjadi masalah sekarang adalah bagaimana mengkaitkan antara ID image yang dirandom dengan image yang akan ditampilkan. Masalah ini bisa dipecahkan dengan menambahkan parameter id di belakang script showimage.php nya pada tag .
OK… selanjutnya bagaimana isi script showimage.php nya. Ini dia…
showimage.php
01.
02. 
03.// koneksi ke mysql
04.mysql_connect('hostName','dbUserName','dbUserPass');
05.mysql_select_db('dbName');
06. 
07.// membaca nilai dari parameter ID yang berasal dari URL: showimage.php?id=...
08. 
09.$id = $_GET['id'];
10. 
11.// menampilkan image berdasarkan ID imagenya
12. 
13.$query = "SELECT image FROM tabelimage WHERE id = $id";
14.$hasil = mysql_query($query);
15.$data = mysql_fetch_array($hasil);
16. 
17.// header untuk menampilkan image
18.header('Content-type: image/jpeg');
19. 
20.// menampilkan data imagenya
21.echo $data['image'];
22. 
23.?>
Yah… begitulah caranya membuat random image dengan PHP. Anda bisa menerapkan random image ini untuk membuat banner dalam rangka bisnis online Anda :-) atau yang lain.
Semoga artikel ini ada manfaatnya buat semua.

Artikel Terkait


EmoticonEmoticon