• Tidak ada hasil yang ditemukan

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-label&#class="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.

Dokumen terkait