Jajak Pendapat Dengan Pie Chart

Jajak Pendapat Dengan Pie Chart

Jajak Pendapat Dengan Pie Chart

Jajak Pendapat Dengan Pie Chart
Jajak Pendapat Dengan Pie Chart

Minggu lalu kita telah mendiskusikan bagaimana membuat pie chart. Sekarang pie chart tersebut akan kita gunakan untuk melengkapi aplikasi jajak pendapat yang telah kita buat beberapa saat yang lalu. Sekedar mengingatkan, skrip dari aplikasi jajak pendapat tersebut adalah sebagai berikut:

<HTML>

<HEAD>

<TITLE> Jajak Pendapat </TITLE>

</HEAD>

<BODY>

<H1> Jajak Pendapat </H1>

<H2> Pilih pemain terbaik <br>

Liga Italia musim 2002/2003 </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” VALUE=”<?=$row[‘nama’]?>”>

<?=$row[‘nama’]?> <BR>

<?

}

?>

<BR>

<INPUT TYPE=”submit” VALUE=”VOTE!”>

</FORM>

</BODY>

</HTML>

Skrip ini diberi nama polling.php, dan hasil run skrip tersebut terlihat seperti gambar 1. Jajak pendapat tersebut diolah dan hasilnya ditampilkan dengan diagram balok seperti terlihat pada gambar 2.

Nah, sekarang skrip untuk mengolah suara akan kita ganti sehingga output yang dihasilkan nantinya berupa pie chart, bukan balok seperti gambar 2 tersebut. Skripnya adalah sebagai berikut:

<?

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,40,255,153);

$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);

?>

Nah, sekarang jika aplikasi jajak pendapat ini dijalankan, hasilnya akan terlihat seperti gambar 3. Yang harus diperhatikan, Anda harus mengalokasikan warna sebanyak mungkin agar setiap item pilihan diwakili oleh satu warna. Bila perlu Anda buat database sendiri untuk alokasi warna tersebut.

Sumber : https://fascinasiansblog.com/