Aplikasi Real Count KPU

Membuat Aplikasi Perhitungan Suara (Real Count) dengan PHP dan MySQL (Part. 1)


Bismilllahirrohmanirrohim. Beberapa hari yang lalu, tepatnya 17 April 2019 Indonesia melaksanakan Pemilu serentak (Pemilihan Umum) untuk memilih Presiden dan Wakil Presiden (Pilpres), DPR RI, DPRD Propinsi, DPD dan DPRD Kabupaten. Setelah pelaksanaan pemilu ini selesai, KPU (Komisi Pemilihan Umum) melakukan rekap C1 dan hasilnya dapat dilihat pada website resminya KPU. Penasaran dengan bagaimana cara membuatnya, kali ini saya akan mencoba berbagi source code aplikasi perhitungan suara (Real Count) dengan menggunakan bahasa pemrograman PHP dan DBMS MySQL.

Beberapa tahun sebelumnya saya telah menuliskan contoh-contoh Penerapan Teknologi Informasi dalam kehidupan sehari-hari. Kali ini, sebagai bentuk penerapan teknologi informasi dalam dunia politik saya akan tunjukkan bagaimana merancang dan membuat aplikasi perhitungan suara Real Count dengan menggunakan PHP dan MySQL.

Fitur pada Aplikasi

Aplikasi yang akan kita buat ini memiliki beberapa fitur, yaitu terdiri dari 3 kategori user diantaranya pengunjung, admin dan superadmin. Pengunjung website ialah pengunjung web yang tidak perlu melakukan login, sedangkan admin dan superadmin perlu login agar dapat masuk ke halaman dashboard.

Didalam dashboard, seorang superadmin dapat menginput jumlah TPS (Tempat Pemungutan Suara) dan melakukan validasi perolehan suara yang diinput oleh admin. Hal ini bertujuan agar suara yang diinput oleh admin benar-benar terbebas dari kesalahan input. Sedangkan seorang admin dapat menginput perolehan suara berdasarkan TPS. Suara yang diinput ini didukung dengan fitur upload formulir C1 yang nantinya dapat dijadikan dasar validasi bagi KPU pusat (superadmin).

Selain itu, pada halaman awal aplikasi user akan dihadapkan pada grafik prosentasi perolehan suara untuk masing-masing kandidat lengkap dengan jumlah suara, suara dalam persen, suara sah dan suara tidak sah.

Desain Database

Database yang digunakan ini terdiri dari 3 tabel yaitu pengguna, tps dan suara. Tabel pengguna menyimpan informasi admin dan superadmin. Tabel TPS berisi data-data TPS yang diinputkan oleh superadmin, sedangkan tabel suara berisi besarnya perolehan suara yang diinput oleh admin dan akan divalidasi oleh superadmin. Struktur tiap tabel dapat dilihat pada gambar berikut.

Struktur tabel Pengguna, tabel Suara dan tabel TPS

Anda dapat membuatnya melalui PhpMyAdmin atau melalui MySQL Command Line Client atau melalui Shell pada aplikasi XAMPP, dengan mengetikkan perintah sebagai berikut:

mysql -u root

CREATE DATABASE kpu;
USE kpu;

CREATE TABLE pengguna (
username varchar(10),
password varchar(50),
nama varchar(25),
role enum('admin', 'superadmin')
);

INSERT INTO pengguna VALUES
('admin', md5('admin'), 'Administrator', 'admin'),
('super', md5('admin'), 'Super Administrator', 'superadmin');

CREATE TABLE suara (
id int(2),
suara1 int(3),
suara2 int(3),
suara_sah int(3),
suara_tidak_sah int(3),
c1 varchar(100),
validasi enum('0', '1')
);

CREATE TABLE tps (
id int(2) AUTO_INCREMENT PRIMARY KEY,
nama_tps varchar(6)
);

Struktur Direktori

Apabila telah selesai membuat database beserta tabel-tabelnya, kali ini kita perlu menyiapkan struktur direktori dari aplikasi KPU yang akan kita buat ini. Pertama, silakan buat 1 buah folder bernama kpu didalam folder hdtocs (untuk pengguna windows biasanya ada di C:\xampp\htdocs). Didalam folder kpu tersebut, buat 2 folder bernama assets dan modules.

Folder kpu merupakan root directory aplikasi, semua program kita akan kita simpan pada folder ini. Folder assets berguna untuk menampung file css dan gambar yang masing-masing disimpan pada folder css dan images di dalam folder assets. Sedangkan folder modules berisi beberapa modul program aplikasi KPU.

Membuat file kpu/koneksi.php

Agar aplikasi kita lebih mudah dalam hal pengembangan, untuk koneksi ke database sebaiknya kita pisah kedalam file tersendiri, dalam hal ini bernama koneksi.php yang disimpan pada folder kpu dengan isi file sebagai berikut:

<?php
$hostname = "localhost";
$username = "root";
$password = "";
$database = "kpu";

$koneksi = mysqli_connect($hostname, $username, $password, $database);

if( ! $koneksi) {
	exit("Koneksi Error: " . mysqli_connect_error());
}

Membuat file kpu/menu.php

Silakan buat file bernama menu.php didalam folder kpu yang isinya seperti pada sintaks berikut:

<ul class="menu"&gt;
	<li&gt;<a href="?mod=home"&gt;Home</a&gt;</li&gt;
	<?php
	switch(@$_SESSION['role']):
		case 'admin': ?&gt;
			<li&gt;<a href="?mod=suara"&gt;Input Suara</a&gt;</li&gt;
			<li&gt;<a href="logout.php"&gt;Logout [<?php echo $_SESSION['role']; ?&gt;]</a&gt;</li&gt;
		<?php break;

		case 'superadmin': ?&gt;
			<li&gt;<a href="?mod=tps"&gt;TPS</a&gt;</li&gt;
			<li&gt;<a href="?mod=validasi"&gt;Validasi Perolehan Suara</a&gt;</li&gt;
			<li&gt;<a href="logout.php"&gt;Logout [<?php echo $_SESSION['role']; ?&gt;]</a&gt;</li&gt;
		<?php break;

		default: ?&gt;
			<li&gt;<a href="?mod=login"&gt;Login</a&gt;</li&gt;
		<?php break;
	endswitch;
	?&gt;
</ul&gt;

Membuat file kpu/logout.php

File ini berfungsi untuk menghapus sesi ketika user selesai di halaman dashboard. Silakan buat file logout.php didalam folder kpu.

<?php
session_start();
session_destroy();

header('location:index.php');

Membuat file kpu/index.php

File index.php ini merupakan file yang pertama kali diakses oleh pengunjung website. Adapun isinya adalah:

<?php
session_start();
include "koneksi.php";
?&gt;
<!DOCTYPE html&gt;
<html&gt;
<head&gt;
	<title&gt;Aplikasi Perhitungan Suara (Real Count) KPU</title&gt;
	<link rel="stylesheet" type="text/css" href="assets/css/style.css"/&gt;
</head&gt;
<body bgcolor="#fafafa"&gt;

	<div class="header"&gt;
		<div class="container"&gt;
			<div class="logo"&gt;
				<h1&gt;KPU — Komisi Pemilihan Umum</h1&gt;
				<p&gt;Aplikasi Perhitungan Suara Pemilihan Presiden dan Wakil Presiden</p&gt;
			</div&gt;
			
			<?php include "menu.php"; ?&gt;
		</div&gt;
	</div&gt;

	<div class="content"&gt;
		<div class="container"&gt;
			<div class="main"&gt;
				<?php
				// definisikan module yg akan diambil
				$mod = (isset($_GET['mod']) ? $_GET['mod'] : 'home');
				$file  = "modules/mod_$mod/$mod.php";

				// periksa ketersediaan file
				if( ! file_exists($file)) {
					exit("File " . $file . " tidak ada!");
				}
				// panggil file
				include $file;
				?&gt;
			</div&gt;
		</div&gt;
	</div&gt;

	<div class="footer"&gt;
		<div class="container"&gt;
			<div class="copy"&gt;
				Copyright © 2019. Komisi Pemilihan Umum
			</div&gt;
		</div&gt;
	</div&gt;
</body&gt;
</html&gt;

Nah, saya rasa untuk postingan kali ini cukup sekian. Insya Allah akan saya sambung besok pagi dan memahas tentang membuat modul aplikasi.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.