BAB IV IMPLEMENTASI DAN PEMBAHASAN
4.1 Implementasi Sistem
4.1.1 Implementasi Subsistem Manajemen Data
BAB IV
IMPLEMENTASI DAN PEMBAHASAN
4.1 Implementasi Sistem
Pada tahap ini implementasi harus sesuai dengan perancangan basis data yang telah dirancang sebelumnya. Tujuan dari implementasi sistem adalah menerapkan perancangan basis data yang telah dirancang ke dalam sistem lalu dilakukan pengujian terhadap sistem.
4.1.1 Implementasi Subsistem Manajemen Data
Langkah pertama dalam implementasi sistem ini adalah membuat
database terlebih dahulu. Basis data yang dibangun dengan php my admin dan diberi nama dengan “db_spk”.
Gambar 4. 1 Implementasi Basis Data
4.1.1.1 Tabel Admin
Tabel admin terdiri dari tiga kolom yaitu id name, user name dan
password, dengan id name sebagai primary key. Tabel ini berfungsi untuk
menyimpan username dan password administrator. CREATE TABLE IF NOT EXISTS `admin` ( `id_name` int(11) NOT NULL,
`username` varchar(128) NOT NULL, `password` varchar(128) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
42
Tabel 4. 1 Tabel Admin
4.1.1.2 Tabel Alternatif
Tabel alternatif terdiri dari empat kolom yaitu id alternatif, nama, deskripsi, gambar, dengan id alternatif sebagai primary key. Tabel ini berfungsi untuk menyimpan detail alternatif.
CREATE TABLE IF NOT EXISTS `alternatif` ( `id_alternatif` int(11) NOT NULL,
`nama` varchar(50) NOT NULL, `deskripsi` text NOT NULL,
`gambar` varchar(50) NOT NULL DEFAULT
'no-photo-available.jpg'
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
Tabel 4. 2 Tabel Alternatif
4.1.1.3 Tabel Bobot Pilih
Tabel bobot pilih terdiri dari tiga kolom yaitu id pemilih, id kriteria, dan bobot, dengan id pemilih sebagai primary key dan id kriteria sebagai foreingn key. Tabel ini berfungsi untuk menyimpan bobot dari kriteria.
CREATE TABLE IF NOT EXISTS `bobot_pilih` ( `id_pemilih` int(11) NOT NULL,
`id_kriteria` int(11) NOT NULL, `bobot` double NOT NULL
43
Tabel 4. 3 Tabel Bobot Pilih
4.1.1.4 Tabel Kriteria
Tabel kriteria terdiri dari tiga kolom yaitu id kriteria, nama kriteria, dan atribut, dengan id kriteria sebagai primary key. Tabel ini berfungsi untuk menyimpan detail kriteria.
CREATE TABLE IF NOT EXISTS `kriteria` ( `id_kriteria` int(11) NOT NULL,
`nama_kriteria` varchar(128) NOT NULL, `atribut` enum('C','B') NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
Tabel 4. 4 Tabel Kriteria
4.1.1.5 Tabel Nilai
Tabel nilai terdiri dari dua kolom yaitu id alternatif, id nilai standar kriteria, id alternatif dengan id nilai standar kriteria sebagai primary key dan id alternatif sebagai foreign key.
CREATE TABLE IF NOT EXISTS `nilai` (
`id_nilai_standar_kriteria` int(11) NOT NULL, `id_alternatif` int(11) NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8;
44 4.1.1.6 Tabel Nilai Standar Kriteria
Tabel nilai standar kriteria terdiri dari empat kolom yaitu id nilai standar kriteria, id kriteria, isi standar dan nilai standar , dengan id nilai kriteria sebagai
primary key dan id kriteria sebagai foreign key. Tabel ini berfungsi untuk
menyimpan nilai kriteria.
CREATE TABLE IF NOT EXISTS `nilai_standar_kriteria` ( `id_nilai_standar_kriteria` int(11) NOT NULL,
`id_kriteria` int(11) NOT NULL, `isistandar` varchar(500) NOT NULL, `nilaistandar` int(500) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
Tabel 4. 6 Tabel Nilai Standar Kriteria
4.1.1.7 Tabel Pemilih
Tabel pemilih terdiri dari tiga kolom yaitu id pemilihan, nama dan email, dengan id pemilihan sebagai primary key dan id kriteria sebagai foreign key. Tabel ini berfungsi untuk menyimpan nama dan email pengguna.
CREATE TABLE IF NOT EXISTS `pemilih` ( `id_pemilihan` int(11) NOT NULL,
`nama` varchar(128) NOT NULL, `email` varchar(128) NOT NULL, `hasil` varchar(20) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8;
45
4.1.2 Implementasi Subsistem Manajemen Model
Implementasi subsitem manajemen model adalah implementasi dari perhitungan SAW itu sendiri. Implementasi tersebut terdapat pada penggalan program berikut: function hasil() { _sessionPemilih(); if (!isset($_POST['harga'])) {
setFlashData('errorMessage', 'Silahkan isi bobot');
redirect('spk'); } // $id_pemilih = $_SESSION['id_pemilih']; $nama_pemilih = $_SESSION['pemilih']['nama']; $email_pemilih = $_SESSION['pemilih']['email']; global $db;
mysqli_query($db, "INSERT INTO pemilihan VALUES ('',
'$nama_pemilih', '$email_pemilih', null)");
$id_pemilih = mysqli_insert_id($db);
foreach ($_POST as $nama_kriteria => $input)
{
$id_kriteria = _getIdKriteria($nama_kriteria);
$bobot = $input/100;
mysqli_query($db, "INSERT INTO bobot_pilih VALUES
('$id_pemilih', '$id_kriteria', '$bobot')");
$w[] = $bobot;
}
$results = mysqli_query($db, "SELECT
nilai_alternatif.id_alternatif, nilai_alternatif.nilai,
nilai_standar_kriteria.id_kriteria FROM nilai_alternatif JOIN
nilai_standar_kriteria ON
nilai_alternatif.id_nilai_standar_kriteria =
nilai_standar_kriteria.id_nilai_standar_kriteria");
if ($results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results))
{ $data[$row['id_kriteria']][$row['id_alternatif']] = $row['nilai']; } }
46
foreach ($data as $id_kriteria => $value) {
foreach ($value as $id_alternatif => $nilai)
{
$r[$id_alternatif][$id_kriteria] =
_normalisasi($id_kriteria, $nilai, $value);
}
}
$i = 0;
$total = count($w);
foreach ($r as $id_alternatif => $value) {
foreach ($value as $id_kriteria => $normalisasi)
{ if ($i == $total) { $i = 0; } if (isset($hasil[$id_alternatif])) { $hasil[$id_alternatif] += $w[$i] * $normalisasi; } else { $hasil[$id_alternatif] = $w[$i] * $normalisasi; } $i++; } } // echo "<pre>"; // var_dump($data, $r, $hasil); arsort($hasil); unset($data); $x = 0;
foreach ($hasil as $id_alternatif => $hasil) {
$data_alternatif[] = $id_alternatif;
$data['smartphone'][$x] = ['nilai' => $hasil,
'alternatif' => _getAlternatif($id_alternatif)]; if ($x == 2) { break; } $x++; } $data['no'] = 1; $data['id_pemilih'] = $id_pemilih;
47
mysqli_query($db, "UPDATE pemilihan SET hasil =
'$data_alternatif' WHERE id_pemilihan = $id_pemilih");
viewGuest('guest/spk/show', $data);
4.1.3 Implementasi Subsistem Manajemen Dialog
Implementasi subsistem manajemen dialog akan menjelaskan desain antarmuka dari sistem yang akan dibuat. Desain antarmuka meliputi halaman
home, halaman simulasi dan halaman info alternatif.
4.1.3.1 Halaman Home
Gambar 4. 2 Halaman Home
case 'home':
controller('HomeController', 'index', getUri(2)); break;
case 'smartphone':
controller('HomeController', 'show', getUri(2)); break; case 'compare': switch (getUri(2)) { case '': controller('CompareController', 'create'); break;
48 case 'store': controller('CompareController', 'store'); break; default: viewGuest('guest/error'); break; } break;
Halaman home ini dibuat untuk mempermudah pengguna menggunakan web sesuai dengan menu yang diinginkan. Terdapat dua pengguna dalam web ini yaitu administrator dan user. Dalam tampilan home diatas terdapat menu home, perhitungan, tentang dan login. Terdapat pula gambar-gambar smartphone yang terdapat dalam database sistem beserta dengan keterangannya.
4.1.3.2 Halaman Login
Gambar 4. 3 Halaman Login
case 'login':
redirectIfAdmin();
switch (getUri(2)) {
49 case '': view('admin/login'); break; case 'proses': controller('LoginController', 'proses'); break; default: viewGuest('guest/error'); break; } break;
Halaman login berisi username dan password yang harus diidikan oleh administrator jika ingin mengakses halaman administrator.
4.1.3.3 Halaman Home Admin
Gambar 4. 4 Halaman Home Admin
case 'dashboard':
controller('DashboardController', 'index');
// viewAdmin('admin/dashboard'); break;
Halaman home administrator berisi menu kriteria yang terdapat sub menu pengelolaan kriteria dan pengelolaan nilai kriteria, menu alternatif yang terdapat sub menu pengelolaan altternatif dan pengelolaan nilai alternatif dan menu pengelolaan pemilihan.
Pada home administrator ditampilkan total kriteria, total nilai kriteria, total alternatif, total nilai alternatif dan total pemilihan.
50 4.1.3.4 Halaman Sub Pengelolaan Alternatif
Gambar 4. 5 Halaman Sub Pengelolaan Alternatif
<?php
function index($page) {
$page = empty($page) ? 1 : $page;
$limit = 10;
$offset = ($page-1) * $limit;
global $db;
$results = mysqli_query($db, "SELECT * FROM alternatif LIMIT $offset, $limit");
if ($results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results)) {
$data['listAlternatif'][] = $row; }
}
$totalResults = mysqli_query($db, "SELECT id_alternatif FROM alternatif"); $data['no'] = $offset + 1; $data['page'] = $page; $data['limit'] = $limit; $data['total'] = $totalResults->num_rows; viewAdmin('admin/alternatif/index', $data);
51
}
Halaman pengelolaan alternatif terdapat jumlah alternatif, deskripsi dari alternatif tersebut, keterangan gambar dan aksi. Terdapat pula button tambah alternatif, melihat nilai alternatif dan hapus.
4.1.3.5 Halaman Sub Pengelolaan Kriteria
Gambar 4. 6 Halaman Sub Pengelolaan Kriteria
<?php
function index() {
$data = [];
global $db;
$resultKriteria = mysqli_query($db, "SELECT COUNT(*) AS kriteria FROM kriteria");
$totalKriteria =
mysqli_fetch_assoc($resultKriteria);
$resultAlternatif = mysqli_query($db, "SELECT COUNT(*)
AS alternatif FROM alternatif");
$totalAlternatif = mysqli_fetch_assoc($resultAlternatif);
52
COUNT(*) AS nilai_standar_kriteria FROM nilai_standar_kriteria");
$totalNilaiStandarKriteria =
mysqli_fetch_assoc($resultNilaiKriteria);
$resultNilaiAlternatif = mysqli_query($db, "SELECT COUNT(*) AS nilai_alternatif FROM nilai_alternatif");
$totalNilaiAlternatif =
mysqli_fetch_assoc($resultNilaiAlternatif);
$resultPemilihan = mysqli_query($db, "SELECT COUNT(*) AS pemilihan FROM pemilihan");
$totalPemilihan = mysqli_fetch_assoc($resultPemilihan); $data = [ 'kriteria' => $totalKriteria['kriteria'], 'alternatif' => $totalAlternatif['alternatif'], 'nilai_standar_kriteria' => $totalNilaiStandarKriteria['nilai_standar_kriteria'], 'nilai_alternatif' => $totalNilaiAlternatif['nilai'], 'pemilihan' => $totalPemilihan['pemilihan'] ]; viewAdmin('admin/dashboard', $data); }
Halaman pengelolaan kriteria ditampilkan jumlah kriteria yang ada dan akan diberi nilai c yaitu cost dan b yaitu benefit. terdapat juga button tambah, edit dan hapus.
53
4.1.3.6 Halaman Sub Pengelolaan Nilai Standar Kriteria
Gambar 4. 7 Halaman Sub Pengelolaan Nilai Standar Kriteria
<?php
function index($page) {
$page = empty($page) ? 1 : $page;
$limit = 10;
$offset = ($page-1) * $limit;
global $db;
$results = mysqli_query($db, "SELECT * FROM
nilai_standar_kriteria
JOIN kriteria ON nilai_standar_kriteria.id_kriteria = kriteria.id_kriteria LIMIT $offset, $limit"
);
if ($results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results)) {
$data['listNilaiStandarKriteria'][] = $row; }
}
54
id_nilai_standar_kriteria FROM nilai_kriteria");
$data['no'] = $offset + 1; $data['page'] = $page; $data['limit'] = $limit; $data['total'] = $totalResults->num_rows; viewAdmin('admin/nilai-kriteria/index', $data); }
Halaman pengelolaan nilai standar kriteria ditampilkan nama kriteria, isi standar, nilai satndar yaitu 10, 5 dan 1, terdapat pula button tambah, edit dan hapus.
4.1.3.7 Halaman Sub Pengelolaan Nilai
Gambar 4. 8 Halaman Sub Pengelolaan Nilai
<?php
function index() {
$page = empty($page) ? 1 : $page;
55
$offset = ($page-1) * $limit;
$data = [];
global $db;
$results = mysqli_query($db, "SELECT id_alternatif, nama FROM alternatif LIMIT $offset, $limit"
);
if ($results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results)) {
$data['listAlternatif'][] = $row; }
}
$results2 = mysqli_query($db, "SELECT
nilai_alternatif.id_alternatif, nilai_standar_kriteria.id_kriteria, nilai_standar_kriteria.nama FROM nilai_alternatif JOIN nilai_kriteria ON nilai_alternatif.id_nilai_standar_kriteria = nilai_standar_kriteria.id_nilai_standar_kriteria"); if ($results2->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results2)) {
$data['listNilaiAlternatif'][] = $row; }
}
$results3 = mysqli_query($db, "SELECT id_kriteria,
nama_kriteria FROM kriteria");
if ($results3->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results3)) {
$data['listKriteria'][] = $row; }
}
$totalResults = mysqli_query($db, "SELECT id_nilai_kriteria FROM nilai_alternatif"); $data['no'] = $offset + 1; $data['page'] = $page; $data['limit'] = $limit; $data['total'] = $totalResults->num_rows; viewAdmin('admin/nilai-alternatif/index', $data); }
56
Halaman pengelolaan nilai terdapat jumlah alternatif, nilai dan aksi berserta button edit dan hapus.
4.1.3.8 Halaman Tambah Alternatif
Gambar 4. 9 Gambar Tambah Alternatif
<section class="content">
<!-- Your Page Content Here --> <div class="row"> <div class="col-md-12"> <div class="box"> <div class="box-header"> <h1 class="text-center header-content">Tambah Alternatif</h1> </div><!-- /.box-header --> <div class="box-body">
<form id="formCreateAlternatif" action="<?=
url('admin/alternatif/store') ?>" method="POST" class="form-horizontal" role="form" enctype="multipart/form-data">
<div class="col-sm-8">
<div class="form-group">
<label for="inputNama" class="col-sm-3
control-label">Nama:</label>
<div class="col-sm-8">
57
id="inputNama" class="form-control">
</div>
</div>
<div class="form-group">
<label for="inputDeskripsi" class="col-sm-3 control-labelclass="col-sm-34;>Deskripsi:</label>
<div class="col-sm-8">
<textarea name="deskripsi"
id="inputDeskripsi" class="form-control" rows="16"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn
btn-primary btn-flat"><i class="fa fa-check"></i> Simpan</button>
<a class="btn btn-warning btn-flat"
href="<?= url('admin/alternatif/index') ?>"><i class="fa fa-close"></i> Batal</a> </div> </div> </div> <div class="col-sm-4"> <div class="form-group">
<img class="img-responsive img-sedang"
id="previewGambar" src="<?= img('default.jpg') ?>" alt="Photo"> </div>
<div class="form-group">
<input type="file" name="fileGambar" id="inputGambar" class="form-control"> </div> </div> </form> </div><!-- /.box-body --> </div> </div> </div><!--/.row --> </section><!-- /.content -->
Halaman tambah alternatif berfungsi untuk menambah alternatif yang diinginkan oleh pengguna untuk dihitung menggunakan metode SAW.
58 4.1.3.9 Halaman Edit Alternatif
Gambar 4. 10 Halaman Edit Alternatif
function edit($id) {
$data = [];
global $db;
$results = mysqli_query($db, 'SELECT * FROM alternatif WHERE id_alternatif = ' . $id); if ($results->num_rows == 1) { $data['listAlternatif'] = mysqli_fetch_assoc($results); } viewAdmin('admin/alternatif/edit', $data); }
Halaman edit alternatif terdapat textbox yang dapat diinputkan berdasarkan alternatif yang ingin diedit, deskripsi untuk menambahkan deskripsi dari alternatif dan gambar berdasarkan alternatif. Terdapat button simpan dan batal.
59 4.1.3.10 Halaman Hapus Alternatif
Gambar 4. 11 Halaman Hapus Alternatif
function destroy($id) {
global $db;
deleteImage($db, $id);
mysqli_query($db, 'DELETE FROM alternatif WHERE
id_alternatif = ' . $id);
setFlashData('successMessage', 'Data berhasil dihapus');
redirect('admin/alternatif/index'); }
60 4.1.3.11 Halaman Edit Nilai
Gambar 4. 12 Halaman Edit Nilai
function edit($id) {
$data = [];
global $db;
$results = mysqli_query($db, "SELECT * FROM alternatif WHERE id_alternatif = $id");
if ($results->num_rows > 0) {
$data['alternatif'] = mysqli_fetch_assoc($results); }
$results2 = mysqli_query($db, "SELECT * FROM kriteria");
if ($results2->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results2)) {
$data['listKriteria'][] = $row; }
61
}
$results3 = mysqli_query($db, "SELECT * FROM
nilai_kriteria");
if ($results3->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results3)) {
$data['listNilaiKriteria'][] = $row; }
}
$results4 = mysqli_query($db, "SELECT * FROM nilai");
if ($results4->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results4)) { $data['listNilaiAlternatif'][] = $row; } } $data['no'] = 1; viewAdmin('admin/nilai-alternatif/edit', $data); }
Halaman edit nilai berisi gambar dari alternatif dan kriteria yang akan diberi nilai lalu terdapat pula button simpan dan batal.
4.1.3.12 Halaman Hapus Nilai
Gambar 4. 13 Halaman Hapus Nilai
function destroy($id_alternatif) {
global $db;
62
mysqli_query($db, 'DELETE FROM nilai WHERE id_alternatif = ' . $id_alternatif);
mysqli_query($db, 'DELETE FROM alternatif WHERE
id_alternatif = ' . $id_alternatif);
setFlashData('successMessage', 'Data berhasil dihapus');
redirect('admin/nilai-alternatif/index'); }
Halaman hapus nilai kriteria berfungsi untuk menghapus nilai kriteria dari basis data.
4.1.3.13 Halaman Tambah Nilai Standar Kriteria
Gambar 4. 14 Halaman Tambah Nilai Standar Kriteria
<section class="content">
<!-- Your Page Content Here --> <div class="row"> <div class="col-md-12"> <div class="box"> <div class="box-header"> <h1 class="text-center header-content">Tambah Nilai Kriteria</h1> </div><!-- /.box-header --> <div class="box-body">
<form id="formNilaiKriteria" action="<?=
class="form-63
horizontal" role="form">
<div class="col-sm-offset-2 col-sm-8">
<div class="form-group">
<label for="inputNamaKriteria" class="col-sm-3 control-label">Nama Kriteria:</label>
<div class="col-sm-8">
<select name="nama_kriteria"
id="inputNamaKriteria" class="form-control" required="required">
<option value="" disabled
selected> -- Pilih kriteria -- </option>
<?php if (isset($listKriteria) && !empty($listKriteria)): ?> <?php foreach ($listKriteria as $kriteria): ?> <option value="<?= $kriteria['id_kriteria'] ?>"><?= $kriteria['nama_kriteria'] ?></option> <?php endforeach ?> <?php endif ?> </select> </div> </div> <div class="form-group">
<label for="inputNama" class="col-sm-3
control-label">Penilaian:</label>
<div class="col-sm-8">
<input type="text" name="nama"
id="inputNama" class="form-control">
</div>
</div> <div class="form-group">
<label for="inputNilai" class="col-sm-3 control-label">Nilai:</label>
<div class="col-sm-3">
<select name="nilai" id="inputNilai"
class="form-control" required="required">
<option value="" disabled
selected> -- Pilih nilai -- </option>
<option value="1">1</option> <option value="5">5</option> <option value="10">10</option> </select> </div> </div> <div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn
btn-primary btn-flat"><i class="fa fa-check"></i> Simpan</button>
<a class="btn btn-warning btn-flat"
href="<?= url('admin/nilai-kriteria/index') ?>"><i class="fa fa-close"></i> Batal</a>
</div> </div>
</div> </form>
64 </div><!-- /.box-body --> </div> </div> </div><!--/.row --> </section><!-- /.content -->
Halaman tambah nilai kriteria berfungsi untuk menambah nilai kriteria yang ada dengan nilai10, 5 dan 1.
4.1.3.14 Halaman Edit Nilai Standar Kriteria
Gambar 4. 15 Halaman Edit Nilai Standar Kriteria
function edit($id) {
$data = [];
global $db;
$results = mysqli_query($db, 'SELECT * FROM
nilaistandarkriteria WHERE idNilaiStandarKiteria = ' . $id);
if ($results->num_rows == 1) {
$data['nilaiKriteria'] = mysqli_fetch_assoc($results); }
$kriteriaResults = mysqli_query($db, 'SELECT * FROM
kriteria');
if ($kriteriaResults && $results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($kriteriaResults)) {
$data['listKriteria'][] = $row; }
65
}
viewAdmin('admin/nilai-kriteria/edit', $data); }
Halaman edit nilai standar kriteria terdapat textbox nama kriteria yang bisa dipilih untuk diedit, textbox penilaian, dan nilai yang bisa dipilih antara satu, lima dan sepuluh. terdapat button simpan dan batal.
4.1.3.15 Halaman Hapus Nilai Standar Kriteria
Gambar 4. 16 Halaman Hapus Nilai Standar Kriteria
function destroy($id) {
global $db;
mysqli_query($db, 'DELETE FROM nilaistandarkriteria WHERE idNilaiStandarKriteria = ' . $id);
setFlashData('successMessage', 'Data berhasil dihapus');
redirect('admin/nilai-kriteria/index'); }
Halaman ini berfungsi untuk menghapus nilai standar kriteria dari basis data.
66 4.1.3.16 Halaman Registrasi
Gambar 4. 17 Halaman Registrasi
case 'compare': switch (getUri(2)) { case '': controller('CompareController', 'create'); break; case 'store': controller('CompareController', 'store'); break; default: viewGuest('guest/error'); break; } break;
Halaman registrasi dibuat untuk memudahkan dalam penyimpanan
database hasil perhitungan dari pemberian bobot selain itu halaman ini berfungsi
67 4.1.3.17 Halaman Perhitungan
Gambar 4. 18 Halaman Perhitungan
case 'spk': switch (getUri(2)) { case '': controller('SPKController', 'create'); break; case 'hasil': controller('SPKController', 'hasil'); break; case 'selesai': controller('SPKController', 'selesai'); break; case 'download': controller('SPKController', 'download', getUri(3)); break; default: viewGuest('guest/error'); break; } break;
Halaman perhitungan dibuat untuk user melakukan perhitungan berdasarkan bobot yang diinputkan untuk setiap kriteria. Bobot yang diinputkan jika dijumlahkan harus bernilai seratus persen
68 4.1.3.18 Halaman Hasil
Gambar 4. 19 Halaman Hasil
function hasil() {
_sessionPemilih();
if (!isset($_POST['harga'])) {
setFlashData('errorMessage', 'Silahkan isi bobot');
redirect('spk'); } // $id_pemilih = $_SESSION['id_pemilih']; $nama_pemilih = $_SESSION['pemilih']['nama']; $email_pemilih = $_SESSION['pemilih']['email']; global $db;
mysqli_query($db, "INSERT INTO pemilihan VALUES ('',
'$nama_pemilih', '$email_pemilih', null)");
$id_pemilih = mysqli_insert_id($db);
foreach ($_POST as $nama_kriteria => $input)
{
$id_kriteria = _getIdKriteria($nama_kriteria);
$bobot = $input/100;
mysqli_query($db, "INSERT INTO bobot_pilih VALUES
('$id_pemilih', '$id_kriteria', '$bobot')");
69
}
$results = mysqli_query($db, "SELECT
nilai_alternatif.id_alternatif, nilai_alternatif.nilai,
nilai_kriteria.id_kriteria FROM nilai_alternatif JOIN
nilai_kriteria ON nilai_alternatif.id_nilai_kriteria =
nilai_kriteria.id_nilai_kriteria");
if ($results->num_rows > 0) {
while ($row = mysqli_fetch_assoc($results))
{ $data[$row['id_kriteria']][$row['id_alternatif']] = $row['nilai']; } }
foreach ($data as $id_kriteria => $value) {
foreach ($value as $id_alternatif => $nilai)
{
$r[$id_alternatif][$id_kriteria] =
_normalisasi($id_kriteria, $nilai, $value);
}
}
$i = 0;
$total = count($w);
foreach ($r as $id_alternatif => $value) {
foreach ($value as $id_kriteria => $normalisasi)
{ if ($i == $total) { $i = 0; } if (isset($hasil[$id_alternatif])) { $hasil[$id_alternatif] += $w[$i] * $normalisasi; } else { $hasil[$id_alternatif] = $w[$i] * $normalisasi; } $i++; } } // echo "<pre>"; // var_dump($data, $r, $hasil); arsort($hasil); unset($data);
70
$x = 0;
foreach ($hasil as $id_alternatif => $hasil) {
$data_alternatif[] = $id_alternatif;
$data['smartphone'][$x] = ['nilai' => $hasil,
'alternatif' => _getAlternatif($id_alternatif)]; if ($x == 2) { break; } $x++; } $data['no'] = 1; $data['id_pemilih'] = $id_pemilih;
$data_alternatif = implode('|', $data_alternatif);
mysqli_query($db, "UPDATE pemilihan SET hasil =
'$data_alternatif' WHERE id_pemilihan = $id_pemilih");
viewGuest('guest/spk/show', $data); }
72
Gambar 4. 20 Hasil Cetak
$pemilihanResults = mysqli_query($db, "SELECT * FROM pemilihan WHERE id_pemilihan = $id_pemilih"
);
// if ($results->num_rows > 0) // {
// while ($rows = mysqli_fetch_assoc($results))
// { // $data['listBobotPemilih'][] = $rows; // } // } $data['pemilihan'] = mysqli_fetch_assoc($pemilihanResults); if (isset($data['pemilihan']['hasil'])) { $list_id_alternatif = explode('|', $data['pemilihan']['hasil']); } $data['alternatif'] = array();
foreach ($list_id_alternatif as $id_alternatif) {
$alternatifResults = mysqli_query($db, "SELECT * FROM alternatif WHERE id_alternatif = $id_alternatif");
$data['listAlternatif'][] =
mysqli_fetch_assoc($alternatifResults); }
73
Halaman hasil perhitungan adalah halaman yang ditampilkan ketika user selesai mengisi bobot dengan total jumlah seratus persen lalu mengklik button hitung. Hasil akan ditampilkan sesuai hasil perhitungan dimana kriteria berdasarkan keinginan user.
4.1.3.20 Halaman Tentang
Gambar 4. 21 Halaman Tentang
case 'tentang':
viewGuest('tentang'); break;
Halaman tentang berisi informasi mengenai program dan cara menggunakan program serta informasi mengenai kontak yang dapat dihubungi oleh user.