Misalnya situs sepakbola akan mengangkat jajak pendapat siapa pemain terbaik di suatu liga, situs tentang Linux akan mengangkat jajak pendapat tentang distro apa yang paling favorit, situs handphone akan mengangkat jajak pendapat tentang ringtone favorit, dan masih banyak lagi.
Nah, sekalipun tema yang diangkat bisa bermacam-macam, namun pada dasarnya aplikasi jajak pendapat cukup mudah untuk dibuat. Umumnya aplikasi jajak pendapat hanya terdiri dari 2 halaman saja, yaitu form HTML yang berisi item-item pilihan dan hasil dari jajak pendapat tersebut. Hasil jajak pendapat dapat ditampilkan dengan bantuan HTML biasa atau dengan suatu aplikasi yang dapat menghasilkan gambar-gambar yang menarik sehingga hasil jajak pendapat dapat ditampilkan dalam bentuk pie chart misalnya. Untungnya, PHP juga dapat digunakan untuk menghasilkan gambar.
Aplikasi jajak pendapat yang akan dibahas pada bagian ini nantinya akan memberikan output berupa Pie Chart.
Untuk menyimpan hasil jajak pendapat diperlukan database, sehingga aplikasi ini juga akan menggunakan MySQL.
Aplikasi jajak pendapat yang kita buat kali ini akan mengangkat tema Pemain Terbaik Liga Italia musim kompetisi 2009/2010. Mengapa bukan tema yang berbau komputer? Distro Linux favorit misalnya? Yah, semata-mata hanya untuk “having fun” saja agar otak kita nggak berisi komputer melulu.
Mula-mula kita persiapkan dahulu databasenya. Kita akan buat database baru bernama poll sebuah tabel bernama favplayer yang berisi dua buah kolom yaitu “nama” dan “suara”. Langkah-langkahnya adalah sebagai berikut:
mysql> create database poll;
mysql> use poll
Database changed
mysql> create table favplayer(
-> nama varchar(20),
-> suara int);
Query OK, 0 rows affected (0.05 sec)
Anda juga dapat memanfaatkan phpMyAdmin untuk membuat database di atas.
Sebagai nilai awal kita isikan dahulu beberapa data sebagai berikut:
Nama | Suara |
Del Piero | 101 |
Totti | 23 |
Nedved | 215 |
Toni | 73 |
Adriano | 36 |
Kaka | 41 |
Ibrahimovic | 100 |
Trezeguet | 88 |
Cassano | 25 |
Listing 1. Halaman item pilihan <HTML> <HEAD> <TITLE> Jajak Pendapat </TITLE> </HEAD> <BODY> <H1> Jajak Pendapat </H1> <H2> Pilih pemain terbaik <br> Liga Italia musim 2009/2010 </H2> <FORM NAME="poll" METHOD="post" ACTION="result.php"> <? $host = "localhost"; $user = "myuser"; $pswd = "rahasia"; $conn = @mysql_connect($host,$user,$pswd) or die("Koneksi gagal: " . mysql_error()); mysql_select_db("poll",$conn); $strSQL = "select nama from favplayer"; $qry = @mysql_query($strSQL,$conn) or die("Query salah: " . mysql_error()); while ($row = mysql_fetch_array($qry)) { ?> <INPUT TYPE="radio" NAME="player" VALUE="<?=$row['nama']?>"> <?=$row['nama']?> <BR> <? } ?> <BR> <INPUT TYPE="submit" VALUE="VOTE!"> </FORM> </BODY> </HTML> |
Item-item pilihan yang terdapat pada halaman ini diambil dari record-record pada field “nama” tabel favplayer. Dengan demikian jika isi dari field nama diubah, otomatis item pilihan tersebut akan ikut berubah, sehingga memudahkan Anda untuk berganti tema jajak pendapat.
Jika Anda klik tombol “VOTE!”, maka data-data pada form ini akan diolah di halaman result.php. Nah, isi skrip file result.php diberikan pada listing 2.
Listing 2. Hasil jajak pendapat <? Header("Content-Type:image/jpeg"); // --- Koneksi ke MySQL --- // $host = "localhost"; $user = "root"; $pswd = ""; $player = $_POST['player']; $conn = @mysql_connect($host,$user,$pswd) or die("Koneksi gagal: " . mysql_error()); mysql_select_db("poll",$conn); // --- mengupdate suara --- // $strSQL = "update favplayer set suara=suara+1 where nama='$player'"; $upd = @mysql_query($strSQL,$conn) or die("Query salah: " . mysql_error()); // --- Ambil data dari database --- // $strSQL = "select * from favplayer"; $qry = @mysql_query($strSQL,$conn) or die("Query salah: " . mysql_error()); // --- menentukan data yang akan dibuat pie chartnya --- // $i=0; while ($row=mysql_fetch_array($qry)) { $data[$i] = $row["suara"]; $str[$i] = "$row[nama]" . " = " . "$row[suara]"; $i++; } // --- deklarasi variabel --- // $total = 0; $d = array(); $kor_x = array(); $kor_y = array(); $t_x = array(); $t_y = array(); // --- menentukan besar sudut setiap bagian pie --- // for($j=0;$j<=$i-1;$j++) { $total += $data[$j]; } $d[0] = 0; for($x=1;$x<=$i;$x++) { $d[$x] = ($data[$x-1]/$total) * 360; $d[$x] += $d[$x-1]; } // --- menentukan warna --- // $img = ImageCreate(700,700); $warna[0] = ImageColorAllocate($img,0,255,0); $warna[1] = ImageColorAllocate($img,255,0,0); $warna[2] = ImageColorAllocate($img,0,0,255); $warna[3] = ImageColorAllocate($img,255,0,255); $warna[4] = ImageColorAllocate($img,255,255,0); $warna[5] = ImageColorAllocate($img,128,128,128); $warna[6] = ImageColorAllocate($img,255,128,0); $warna[7] = ImageColorAllocate($img,0,150,255); $warna[8] = ImageColorAllocate($img,112,0,255); $warna[9] = ImageColorAllocate($img,128,255,0); $warna[10] = ImageColorAllocate($img,255,255,255); $hitam = ImageColorAllocate($img,0,0,0); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); // --- membentuk pie --- // for($k=1;$k<=$i;$k++) { // --- menggambar bagian-bagian pie --- // ImageArc($img,150,150,250,250,$d[$k-1],$d[$k],$hitam); // --- mencari koordinat batas --- // $kor_x[$k] = round(150+(125*cos(deg2rad($d[$k-1])))); $kor_y[$k] = round(150+(125*sin(deg2rad($d[$k-1])))); // --- mencari titik tengah --- // $t = round(($d[$k-1]+$d[$k])/2); $t_x[$k] = round(150+(62.5*cos(deg2rad($t)))); $t_y[$k] = round(150+(62.5*sin(deg2rad($t)))); ImageLine($img,150,150,$kor_x[$k],$kor_y[$k],$hitam); } // --- mewarnai bagian pie --- // // --- sekaligus membuat keterangan --- // for($k=1;$k<=$i;$k++) { ImageFillToBorder($img,$t_x[$k],$t_y[$k],$hitam,$warna[$k-1]); ImageFilledRectangle($img,310,20*$k+50,320,20*$k+60,$warna[$k-1]); ImageString($img,2,330,20*$k+50,$str[$k-1],$hitam); } // --- output gambar -- // ImageJPEG($img); ?> |
Sekarang aplikasi tersebut sudah siap. Jika Anda memberikan suara Anda, maka hasil jajak pendapat akan ditampilkan seperti pada gambar di bawah ini.
Anda dapat menambahkan sedikit skrip JavaScript untuk mencegah agar pemilih tidak dapat men-submit form sebelum dia memberikan suaranya.
Semoga bermanfaat.
loading...
loading...