Metode Profile Matching dengan PHP MySQL

4 May 2018 | Tags: , , ,


Profile matching adalah sebuah mekanisme pengambilan keputusan dengan mengasumsikan bahwa terdapat tingkat variabel prediktor yang ideal yang harus dipenuhi oleh subyek yang diteliti, bukannya tingkat minimal yang harus dipenuhi atau dilewati. (Kusrini, 2007). Kali kita akan coba mengaplikasi metode Profile Matching dengan PHP MySQL.

Metode Profile Matching dengan PHP MySQL

Beberapa contoh penerapan metode Profile Matching diantaranya:

  • Evaluasi kinerja karyawan untuk promosi jabatan
  • Manajemen football player
  • Penerima beasiswa yang layak
  • Mencari mitra kerja
  • dan lain-lain

Untuk lebih jelasnya kita akan coba menerapkan metode Profile Matching untuk memilih supervisor pada perusahaan CV Elang Utama dengan kandidat: GEDE, KADEK, NYOMAN, KETUT, dan PUTU.

Langkah-langkah:

  1. Menentukan Aspek penilaian, bobot aspek, bobot Core Factor dan bobot Secondary Factor. Setiap aspek dibagi lagi menjadi beberapa faktor dengan target nilai yang ditetapkan
  2. Menentukan Kandidat
  3. Memasukkan Nilai faktor setiap kandidat
  4. Menghitung GAP
  5. Konversi nilai GAP dengan tabel bobot nilai GAP & menghitung serta mengelompokkan nilai Core Factor dan Secondary Factor pada setiap aspek
  6. Menghitung Nilai total tiap kandidat
  7. Menghitung nilai akhir (Rangking) untuk menentukan peringkat kelayakan.

1. Menentukan Aspek penilaian, bobot aspek, bobot Core Factor dan bobot Secondary Factor

NO Aspek Bobot Bobot CF Bobot SF NO ID Faktor Nilai Target Type
1 Kecerdasan 20 60 40 1 1 Common Sense 3 CF
2 2 Verbalisasi Ide 3 CF
3 3 Sistematika Berpikir 4 SF
4 4 Penalaran dan Solusi Real 4 SF
5 5 Konsentrasi 3 CF
6 6 Logika Praktis 4 SF
7 7 Fleksibilitas Berpikir 4 SF
8 8 Imajinasi Kreatif 5 CF
9 9 Antisipasi 3 CF
10 10 Potensi Kecerdasan 4 SF
2 Sikap Kerja 30 60 40 1 11 Energi Psikis 3 CF
2 12 Ketelitian dan tanggung jawab 4 CF
3 13 Kehati-hatian 2 SF
4 14 Pengendalian Perasaan 3 SF
5 15 Dorongan Berprestasi 3 CF
6 16 Vitalitas dan Perencanaan 5 SF
3 Perilaku 50 60 40 1 17 Dominance (Kekuasaan) 3 CF
2 18 Influences (Pengaruh) 3 CF
3 19 Steadiness (Keteguhan Hati) 4 SF
4 20 Compliance (Pemenuhan) 5 SF

Ket: CF=Core Factor; SF=Secondary Factor


2. Menentukan Aspek penilaian, bobot aspek, bobot Core Factor dan bobot Secondary Factor

ID Nama
1 Gede
2 Kadek
3 Nyoman
4 Ketut
5 Putu

3. Memasukkan Nilai faktor kandidat

Kecerdasan

No Nama I1 I2 I3 I4 I5 I6 I7 I8 I9 I10
1 GEDE 2 4 3 3 2 2 4 3 2 3
2 KADEK 3 4 3 3 2 3 4 2 4 4
3 NYOMAN 4 4 3 3 4 3 2 3 3 2
4 KETUT 3 5 4 3 4 4 3 5 4 3
5 PUTU 3 3 3 1 2 5 3 2 5 4

Keterangan
I1 : Common Sense
I2 : Verbalisasi Ide
I3 : Sistematika Berpikir
I4 : Penalaran dan Solusi Real
I5 : Konsentrasi
I6 : Logika Praktis
I7 : Fleksibilitas Berpikir
I8 : Imajinasi Kreatif
I9 : Antisipasi
I10 : Potensi Kecerdasan

Sikap Kerja

No Nama S1 S2 S3 S4 S5 S6
1 GEDE 3 4 3 1 3 1
2 KADEK 4 5 5 1 4 1
3 NYOMAN 4 2 2 4 5 2
4 KETUT 1 5 5 5 5 2
5 PUTU 4 5 4 3 5 3

Keterangan
S1 : Energi Psikis
S2 : Ketelitian dan tanggung jawab
S3 : Kehati-hatian
S4 : Pengendalian Perasaan
S5 : Dorongan Berprestasi
S6 : Vitalitas dan Perencanaan

Perilaku

No Nama P1 P2 P3 P4
1 GEDE 4 4 4 4
2 KADEK 4 3 4 4
3 NYOMAN 4 5 5 2
4 KETUT 3 3 4 5
5 PUTU 4 3 3 5

Keterangan
P1 : Dominance (Kekuasaan)
P2 : Influences (Pengaruh)
P3 : Steadiness (Keteguhan Hati)
P4 : Compliance (Pemenuhan)


4. Menghitung GAP

Aspek Kecerdasan

No Nama I1 I2 I3 I4 I5 I6 I7 I8 I9 I10
1 GEDE (2-3)=-1 (4-3)=1 (3-4)=-1 (3-4)=-1 (2-3)=-1 (2-4)=-2 (4-4)=0 (3-5)=-2 (2-3)=-1 (3-4)=-1
2 KADEK (3-3)=0 (4-3)=1 (3-4)=-1 (3-4)=-1 (2-3)=-1 (3-4)=-1 (4-4)=0 (2-5)=-3 (4-3)=1 (4-4)=0
3 NYOMAN (4-3)=1 (4-3)=1 (3-4)=-1 (3-4)=-1 (4-3)=1 (3-4)=-1 (2-4)=-2 (3-5)=-2 (3-3)=0 (2-4)=-2
4 KETUT (3-3)=0 (5-3)=2 (4-4)=0 (3-4)=-1 (4-3)=1 (4-4)=0 (3-4)=-1 (5-5)=0 (4-3)=1 (3-4)=-1
5 PUTU (3-3)=0 (3-3)=0 (3-4)=-1 (1-4)=-3 (2-3)=-1 (5-4)=1 (3-4)=-1 (2-5)=-3 (5-3)=2 (4-4)=0

Aspek Sikap Kerja

No Nama S1 S2 S3 S4 S5 S6
1 GEDE (3-3)=0 (4-4)=0 (3-2)=1 (1-3)=-2 (3-3)=0 (1-5)=-4
2 KADEK (4-3)=1 (5-4)=1 (5-2)=3 (1-3)=-2 (4-3)=1 (1-5)=-4
3 NYOMAN (4-3)=1 (2-4)=-2 (2-2)=0 (4-3)=1 (5-3)=2 (2-5)=-3
4 KETUT (1-3)=-2 (5-4)=1 (5-2)=3 (5-3)=2 (5-3)=2 (2-5)=-3
5 PUTU (4-3)=1 (5-4)=1 (4-2)=2 (3-3)=0 (5-3)=2 (3-5)=-2

Aspek Perilaku

No Nama P1 P2 P3 P4
1 GEDE (4-3)=1 (4-3)=1 (4-4)=0 (4-5)=-1
2 KADEK (4-3)=1 (3-3)=0 (4-4)=0 (4-5)=-1
3 NYOMAN (4-3)=1 (5-3)=2 (5-4)=1 (2-5)=-3
4 KETUT (3-3)=0 (3-3)=0 (4-4)=0 (5-5)=0
5 PUTU (4-3)=1 (3-3)=0 (3-4)=-1 (5-5)=0

 


5. Konversi nilai GAP dengan tabel bobot nilai GAP & menghitung serta mengelompokkan nilai Core Factor dan Secondary Factor pada setiap aspek

Setelah diperoleh Gap pada masing-masing karyawan, setiap profil karyawan diberi bobot nilai sesuai ketentuan pada Tabel Bobot Nilai Gap

Selisih Bobot Nilai Keterangan
0 5 Tidak ada selisih (kompetensi sesuai dgn yg dibutuhkan)
1 4,5 Kompetensi individu kelebihan 1 tingkat
-1 4 Kompetensi individu kekurangan 1 tingkat
2 3,5 Kompetensi individu kelebihan 2 tingkat
-2 3 Kompetensi individu kekurangan 2 tingkat
3 2.5 Kompetensi individu kelebihan 3 tingkat
-3 2 Kompetensi individu kekurangan 3 tingkat
4 1,5 Kompetensi individu kelebihan 4 tingkat
-4 1 Kompetensi individu kekurangan 4 tingkat

Setelah dikonversi dengan tabel bobot nilai GAP, berikutnya dilakukan perhitungan Nilai Core Factor dan Nilai Secondary Factor.

  • Nilai Core Factor dihitung dengan menjumlahkan Nilai yang termasuk kelompok Core Factor dibagi dengan banyaknya item core factor pada setiap aspek.
    Nilai Core Factor: Metode Profile Matching dengan PHP MySQL
    Keterangan:

    • NCF : Nilai rata-rata core factor
    • NC(i,s,p) : Jumlah total nilai core factor (kecerdasan,sikap kerja, perilaku)
    • IC : Jumlah Item core factor

     

  • Nilai Secondary Factor dihitung dengan menjumlahkan Nilai yang termasuk kelompok Secondary Factor dibagi dengan banyaknya item secondary factor pada setiap aspek.
    Nilai Secondary Factor: Metode Profile Matching dengan PHP MySQL
    Keterangan:

    • NSF : Nilai rata-rata secondary factor
    • NS(i,s,p) : Jumlah total nilai secondary factor (kecerdasan,sikap kerja, perilaku)
    • IS : Jumlah Item secondary factor

Dengan formula diatas kita akan mendapatkan bobot dan Nilai Core Factor (NCF) dan Nilai Secondary Factor (NSF).


Aspek Kecerdasan (20%)

No Nama I1 I2 I3[s] I4[s] I5 I6[s] I7[s] I8 I9 I10[s] NCF (60%) NSF (40%) Nilai
1 GEDE 4 4,5 4 4 4 3 5 3 4 4 (4+4,5+4+3+4)/5=
19.5/5=3,90
(4+4+3+5+4)/5=
20/5=4,00
0,6×3,90+0,4×4=3,94
2 KADEK 5 4,5 4 4 4 4 5 2 4,5 5 (5+4,5+4+2+4,5)/5=
20/5=4,00
(4+4+4+5+5)/5=
22/5=4,40
0,6×4,00+0,4×4,40=4,16
3 NYOMAN 4,5 4,5 4 4 4,5 4 3 3 5 3 (4,5+4,5+4,5+3+5)/5=
21,5/5=4,30
(4+4+4+3+3)/5=
18/5=3,60
0,6×4,30+0,4×3,60=4,02
4 KETUT 5 3.5 5 4 4,5 5 4 5 4,5 4 (5+3,5+4,5+5+4,5)/5=
22,5/5=4,50
(5+4+5+4+4)/5=
22/5=4,40
0,6×4,5+0,4×4,4=4,46
5 PUTU 5 5 4 2 4 4,5 4 2 3.5 5 (5+5+4+2+3,5))=
19,5/5=3,90
(4+2+4,5+4+5)/5=
19,5/5=3,90
0,6×3,90+0,4×3,90=3,90

Aspek Sikap Kerja (30%)

No Nama S1 S2 S3[s] S4[s] S5 S6[s] NCF (60%) NSF (40%) Nilai
1 GEDE 5 5 4,5 3 5 1 15/3=5,00 8.5/3=2,83 4,13
2 KADEK 4,5 4,5 2.5 3 4,5 1 13.5/3=4,50 6.5/3=2,17 3,57
3 NYOMAN 4,5 3 5 4,5 3.5 2 11/3=3,67 11.5/3=3,83 3,73
4 KETUT 3 4,5 2.5 3.5 3.5 2 11/3=3,67 8/3=2,67 3,27
5 PUTU 4,5 4,5 3.5 5 3.5 3 12.5/3=4,17 11.5/3=3,83 4,03

Aspek Perilaku (50%)

No Nama P1 P2 P3[s] P4[s] NCF (60%) NSF (40%) Nilai
1 GEDE 4,5 4,5 5 4 9/2=4,50 9/2=4,50 4,50
2 KADEK 4,5 5 5 4 9.5/2=4,75 9/2=4,50 4,65
3 NYOMAN 4,5 3.5 4,5 2 8/2=4,00 6.5/2=3,25 3,70
4 KETUT 5 5 5 5 10/2=5,00 10/2=5,00 5,00
5 PUTU 4,5 5 4 5 9.5/2=4,75 9/2=4,50 4,65

 


6. Menghitung Nilai total tiap kandidat

Nilai Total yang akan dijadikan rangking tiap kandidat didapatkan dengan menjumlahkan nilai setiap aspek dikalikan dengan bobot aspek.

Nilai Akhir = (x)%.Ni + (y)%.Ns + (z)%.Np

Keterangan:

  • x: Bobot Kecerdasan
  • Ni: Nilai Kecerdasan
  • y: Bobot Sikap kerja
  • Ns: Nilai Sikap kerja
  • z: Bobot Perilaku
  • Np: Nilai Perilaku
NO NAMA KECERDASAN (20%) SIKAP KERJA (30%) PERILAKU (50%) PERHITUNGAN NILAI
1 GEDE 3,94 4,13 4,50 0,2x3,94+0,3x4,13+0,5x4,50 4,28
2 KADEK 4,16 3,57 4,65 0,2x4,16+0,3x3,57+0,5x4,65 4,23
3 NYOMAN 4,02 3,73 3,70 0,2x4,02+0,3x3,73+0,5x3,70 3,77
4 KETUT 4,46 3,27 5,00 0,2x4,46+0,3x3,27+0,5x5,00 4,37
5 PUTU 3,90 4,03 4,65 0,2x3,90+0,3x4,03+0,5x4,65 4,32

 


7. Merangking Kandidat

Setelah mendapatkan Nilai Akhir, kita tinggal merangking kandidat dengan urutan nilai terbesar.

No Nama Nilai
1 KETUT 4,37
2 PUTU 4,32
3 GEDE 4,28
4 KADEK 4,23
5 NYOMAN 3,77

Source Code Metode Profile Matching dengan PHP MySQL

Database

DROP TABLE IF EXISTS `tbl_aspek`;

CREATE TABLE `tbl_aspek` (
  `id_aspek` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
  `nama_aspek` varchar(100) NOT NULL,
  `bobot` float NOT NULL,
  `bobot_core` float NOT NULL,
  `bobot_secondary` float NOT NULL,
  `nama_singkat` char(1) DEFAULT NULL,
  PRIMARY KEY (`id_aspek`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

/*Data for the table `tbl_aspek` */

insert  into `tbl_aspek`(`id_aspek`,`nama_aspek`,`bobot`,`bobot_core`,`bobot_secondary`,`nama_singkat`) values (1,'Kecerdasan',20,60,40,'I'),(2,'Sikap Kerja',30,60,40,'S'),(3,'Perilaku',50,60,40,'P');

/*Table structure for table `tbl_bobot` */

DROP TABLE IF EXISTS `tbl_bobot`;

CREATE TABLE `tbl_bobot` (
  `selisih` tinyint(3) NOT NULL,
  `bobot` float NOT NULL,
  `keterangan` varchar(100) NOT NULL,
  PRIMARY KEY (`selisih`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*Data for the table `tbl_bobot` */

insert  into `tbl_bobot`(`selisih`,`bobot`,`keterangan`) values (0,5,'Tidak ada  selisih (kompetensi,sesuai dgn yang dibutuhkan)'),(1,4.5,'Kompetensi individu kelebihan 1 tingkat'),(-1,4,'Kompetensi individu kekurangan 1 tingkat'),(2,3.5,'Kompetensi individu kelebihan 2 tingkat'),(-2,3,'Kompetensi individu kekurangan 2 tingkat'),(3,2.5,'Kompetensi individu kelebihan 3 tingkat'),(-3,2,'Kompetensi individu kekurangan 3 tingkat'),(4,1.5,'Kompetensi individu kelebihan 4 tingkat'),(-4,1,'Kompetensi individu kekurangan 4 tingkat');

/*Table structure for table `tbl_faktor` */

DROP TABLE IF EXISTS `tbl_faktor`;

CREATE TABLE `tbl_faktor` (
  `id_faktor` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
  `aspek` tinyint(3) unsigned NOT NULL COMMENT 'FK tbl_aspek',
  `nama_faktor` varchar(30) NOT NULL,
  `target` tinyint(3) NOT NULL,
  `jenis` enum('1','2') DEFAULT NULL COMMENT '1=Core;2=Secondary',
  PRIMARY KEY (`id_faktor`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;

/*Data for the table `tbl_faktor` */

insert  into `tbl_faktor`(`id_faktor`,`aspek`,`nama_faktor`,`target`,`jenis`) values (1,1,'Common Sense',3,'1'),(2,1,'Verbalisasi Ide',3,'1'),(3,1,'Sistematika Berpikir',4,'2'),(4,1,'Penalaran dan Solusi Real',4,'2'),(5,1,'Konsentrasi',3,'1'),(6,1,'Logika Praktis',4,'2'),(7,1,'Fleksibilitas Berpikir',4,'2'),(8,1,'Imajinasi Kreatif',5,'1'),(9,1,'Antisipasi',3,'1'),(10,1,'Potensi Kecerdasan',4,'2'),(11,2,'Energi Psikis',3,'1'),(12,2,'Ketelitian dan tanggung jawab',4,'1'),(13,2,'Kehati-hatian',2,'2'),(14,2,'Pengendalian Perasaan',3,'2'),(15,2,'Dorongan Berprestasi',3,'1'),(16,2,'Vitalitas dan Perencanaan',5,'2'),(17,3,'Dominance (Kekuasaan)',3,'1'),(18,3,'Influences (Pengaruh)',3,'1'),(19,3,'Steadiness (Keteguhan Hati)',4,'2'),(20,3,'Compliance (Pemenuhan)',5,'2');

/*Table structure for table `tbl_karyawan` */

DROP TABLE IF EXISTS `tbl_karyawan`;

CREATE TABLE `tbl_karyawan` (
  `id_karyawan` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
  `nama_karyawan` varchar(100) NOT NULL,
  PRIMARY KEY (`id_karyawan`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

/*Data for the table `tbl_karyawan` */

insert  into `tbl_karyawan`(`id_karyawan`,`nama_karyawan`) values (1,'GEDE'),(2,'KADEK'),(3,'NYOMAN'),(4,'KETUT'),(5,'PUTU');

/*Table structure for table `tbl_sample` */

DROP TABLE IF EXISTS `tbl_sample`;

CREATE TABLE `tbl_sample` (
  `id_sample` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `karyawan` tinyint(3) unsigned DEFAULT NULL,
  `faktor` tinyint(3) unsigned DEFAULT NULL,
  `nilai` tinyint(3) unsigned DEFAULT NULL,
  PRIMARY KEY (`id_sample`)
) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=latin1;

/*Data for the table `tbl_sample` */

insert  into `tbl_sample`(`id_sample`,`karyawan`,`faktor`,`nilai`) values (1,1,1,2),(2,1,2,4),(3,1,3,3),(4,1,4,3),(5,1,5,2),(6,1,6,2),(7,1,7,4),(8,1,8,3),(9,1,9,2),(10,1,10,3),(11,1,11,3),(12,1,12,4),(13,1,13,3),(14,1,14,1),(15,1,15,3),(16,1,16,1),(17,1,17,4),(18,1,18,4),(19,1,19,4),(20,1,20,4),(21,2,1,3),(22,2,2,4),(23,2,3,3),(24,2,4,3),(25,2,5,2),(26,2,6,3),(27,2,7,4),(28,2,8,2),(29,2,9,4),(30,2,10,4),(31,2,11,4),(32,2,12,5),(33,2,13,5),(34,2,14,1),(35,2,15,4),(36,2,16,1),(37,2,17,4),(38,2,18,3),(39,2,19,4),(40,2,20,4),(41,3,1,4),(42,3,2,4),(43,3,3,3),(44,3,4,3),(45,3,5,4),(46,3,6,3),(47,3,7,2),(48,3,8,3),(49,3,9,3),(50,3,10,2),(51,3,11,4),(52,3,12,2),(53,3,13,2),(54,3,14,4),(55,3,15,5),(56,3,16,2),(57,3,17,4),(58,3,18,5),(59,3,19,5),(60,3,20,2),(61,4,1,3),(62,4,2,5),(63,4,3,4),(64,4,4,3),(65,4,5,4),(66,4,6,4),(67,4,7,3),(68,4,8,5),(69,4,9,4),(70,4,10,3),(71,4,11,1),(72,4,12,5),(73,4,13,5),(74,4,14,5),(75,4,15,5),(76,4,16,2),(77,4,17,3),(78,4,18,3),(79,4,19,4),(80,4,20,5),(81,5,1,3),(82,5,2,3),(83,5,3,3),(84,5,4,1),(85,5,5,2),(86,5,6,5),(87,5,7,3),(88,5,8,2),(89,5,9,5),(90,5,10,4),(91,5,11,4),(92,5,12,5),(93,5,13,4),(94,5,14,3),(95,5,15,5),(96,5,16,3),(97,5,17,4),(98,5,18,3),(99,5,19,3),(100,5,20,5);

Kode Program

<?php
	mysql_connect("localhost","root","");
	mysql_select_db("dbspk");
?>
<!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="bs/bootstrap.min.css">
    <title>Metode Profile Matching</title>
  </head>
  <body>
  <div class="container">
  <?php
		//---------------------Menyimpan tabel bobot dalam array---------------------
			$bobot=array();
			$sql="SELECT * FROM tbl_bobot";
			$hasil=mysql_query($sql);
			while($row=mysql_fetch_assoc($hasil))
				{
					$bobot[$row['selisih']]=$row['bobot'];
				}
		//---------------------Menyimpan tabel sample dalam array---------------------
			$sql="SELECT * FROM tbl_sample";
			$hasil=mysql_query($sql);
			while($row=mysql_fetch_assoc($hasil))
				{
					$nilai_sample[$row['karyawan']][$row['faktor']]=$row['nilai'];
				}
		//---------------------Menyimpan tabel karyawan dalam array---------------------		
        	$nama_karyawan=array();
			$nilai_akhir=array();
			$sql="SELECT * FROM tbl_karyawan ORDER BY id_karyawan";
			$hasil=mysql_query($sql);
			while($row=mysql_fetch_assoc($hasil))
				{
					$nama_karyawan[$row['id_karyawan']]=$row['nama_karyawan'];
					$nilai_akhir[$row['id_karyawan']]=0;
				}
		//---------------------Menyimpan tabel aspek dalam array---------------------		
			$nama_aspek=array(); 
			$nama_singkat=array(); 
			$jumlah_kolom=array();
			$ba_all=array();
			$ba_cf=array();
			$ba_sf=array();
			$sql="SELECT *,(SELECT COUNT(id_faktor) FROM tbl_faktor WHERE aspek=id_aspek) AS jum_kolom 
				 FROM tbl_aspek";
			$hasil=mysql_query($sql);
			while($row=mysql_fetch_assoc($hasil))
				{
					$aspek=$row['id_aspek'];
					$nama_aspek[$row['id_aspek']]=$row['nama_aspek'];
					$nama_singkat[$row['id_aspek']]=$row['nama_singkat'];
					$jumlah_kolom[$row['id_aspek']]=$row['jum_kolom'];
					$ba_all[$row['id_aspek']]=$row['bobot'];
					$ba_cf[$row['id_aspek']]=$row['bobot_core'];
					$ba_sf[$row['id_aspek']]=$row['bobot_secondary'];
					//------------cari index berdasarkan nomor 
					$sql2="SELECT * FROM tbl_faktor WHERE aspek='$aspek' ORDER BY id_faktor";
					$hasil2=mysql_query($sql2);
					$kolom=1;
					while($row2=mysql_fetch_assoc($hasil2))
						{
							$r_index[$aspek][$kolom]=$row2['id_faktor'];
							$kolom++;
						}
				}
	?>
    <h1>Contoh SPK GAP MP</h1>
		<table class="table">
        	<tr>
            	<th>No</th>
                <th>Aspek</th>
                <th>Faktor</th>
                <th>Nilai Target</th>
                <th>Type</th>
            </tr>
            <?php
				$no=1;
				//---------------------Menyimpan tabel faktor dalam array dan menampilkan---------------------
            	$sql="SELECT tbl_faktor.*,nama_aspek,IF(jenis='1','c','s') AS nama_jenis
					FROM tbl_faktor LEFT JOIN tbl_aspek ON aspek=id_aspek ORDER BY aspek,id_faktor";
				$hasil=mysql_query($sql);
				$target=array();
				$nama_jenis=array();
				while($row=mysql_fetch_assoc($hasil))
				{		
					$target[$row['id_faktor']]=$row['target'];
					$nama_jenis[$row['id_faktor']]=$row['nama_jenis'];
			?>
        	<tr>
        	  <td><?php echo $no++;?></td>
        	  <td><?php echo $row['nama_aspek'];?></td>
        	  <td><?php echo $row['nama_faktor'];?></td>
        	  <td><?php echo $row['target'];?></td>
        	  <td><?php echo $row['nama_jenis'];?></td>
      	  </tr>
          <?php
				}
		  ?>
        </table>
        <?php
			
			
			while (list($key, $value) = each($nama_aspek)) 
				{		
					echo "<h2>".$nama_aspek[$key]."</h2>";
					
		?>
        		
        		<table class="table">
                	<tr>
                    	<th>No</th>
                        <th>Nama</th>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {?>
                        <th><?php echo $nama_singkat[$key]; ?><sub><?php echo $kol;?></sub></th>
                        <?php } ?>
                    </tr>
                    <?php
						reset($nama_karyawan);
						$nomor=1;	
                    	while (list($k, $v) = each($nama_karyawan)) 
							{
								
					?>
                    <tr>
                    	<td><?php echo $nomor++;?></td>
                        <td><?php echo $nama_karyawan[$k];?></td>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {
									$pos=$r_index[$key][$kol];
							?>
                        <td><?php echo $nilai_sample[$k][$pos]; ?></td>
                        <?php } ?>
                    </tr>
                    <?php
							}
					?>
                </table>
        <?php			
				}
		?>
		<hr />
        <h2>PERHITUNGAN GAP</h2>
        <?php
		reset($nama_aspek);
        while (list($key, $value) = each($nama_aspek)) 
				{		
					echo "<h3>Aspek ".$nama_aspek[$key]."</h3>";
					
		?>
        		
        		<table class="table">
                	<tr>
                    	<th>No</th>
                        <th>Nama</th>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {?>
                        <th><?php echo $nama_singkat[$key]; ?><sub><?php echo $kol;?></sub></th>
                        <?php } ?>
                    </tr>
                    <?php
						//---------------------Proses menghitung nilai GAP---------------------		
						reset($nama_karyawan);
						$nomor=1;	
                    	while (list($k, $v) = each($nama_karyawan)) 
							{
								
					?>
                    <tr>
                    	<td><?php echo $nomor++;?></td>
                        <td><?php echo $nama_karyawan[$k];?></td>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {
									$pos=$r_index[$key][$kol];
									$nilai_gap[$k][$pos]=$nilai_sample[$k][$pos]-$target[$pos]
							?>
                        <td>(<?php echo $nilai_sample[$k][$pos]; ?>-<?php echo $target[$pos]; ?>)=<strong><?php echo $nilai_gap[$k][$pos];?></strong></td>
                        <?php } ?>
                    </tr>
                    <?php
							}
					?>
                </table>
        <?php			
				}
		?>
        
        
        <hr />
        <h2>PEMBOBOTAN</h2>
        <?php
		reset($nama_aspek);
        while (list($key, $value) = each($nama_aspek)) 
				{		
					echo "<h3>Aspek ".$nama_aspek[$key]." (".$ba_all[$key]."%)</h3>";
					
		?>
        		
        		<table class="table">
                	<tr>
                    	<th>No</th>
                        <th>Nama</th>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {
								$pos=$r_index[$key][$kol];
							?>
                        <th><?php echo $nama_singkat[$key]; ?><sub><?php echo $kol;?></sub>[<?php echo $nama_jenis[$pos];?>]</th>
                        <?php } ?>
                        <th>rCF (<?php echo $ba_cf[$key];?>%)</th>
                        <th>rSF (<?php echo $ba_sf[$key];?>%)</th>
                        <th>Nilai</th>
                    </tr>
                    <?php
						reset($nama_karyawan);
						$nomor=1;	
                    	while (list($k, $v) = each($nama_karyawan)) 
							{
								$jum_cf=$jum_sf=$ccf=$csf=0;
								
					?>
                    <tr>
                    	<td><?php echo $nomor++;?></td>
                        <td><?php echo $nama_karyawan[$k];?></td>
                        <?php for($kol=1;$kol<=$jumlah_kolom[$key];$kol++) {
									$pos=$r_index[$key][$kol];
									$nilai_bobot[$k][$pos]=$bobot[$nilai_sample[$k][$pos]-$target[$pos]];
									if($nama_jenis[$pos]=="c")
										{
											$jum_cf+=$nilai_bobot[$k][$pos];
											$ccf++;	
										}
									else
										{
											$jum_sf+=$nilai_bobot[$k][$pos];
											$csf++;	
										}	
										
							?>
                        <td><?php echo $nilai_bobot[$k][$pos];?></td>
                        <?php }
						
							$ncf=$jum_cf/$ccf;
							$nsf=$jum_sf/$csf;
							$nilai_bobot[$k][$key]=$ba_cf[$key]*($ncf/100)+$ba_sf[$key]*($nsf/100);
							$nilai_akhir[$k]+=$nilai_bobot[$k][$key]*($ba_all[$key]/100);
						 ?>
                        <td><?php echo $jum_cf."/".$ccf;?>=<?php echo number_format($ncf,2,",","."); ?></td>
                        <td><?php echo $jum_sf."/".$csf;?>=<?php echo number_format($nsf,2,",","."); ?></td>
                        <td><?php echo  number_format($nilai_bobot[$k][$key],2,",","."); ?></td>
                    </tr>
                    <?php
							}
					?>
                </table>
        <?php			
				}
				//print_r($nilai_akhir);
				reset($nilai_akhir);
				//krsort($nilai_akhir);
				//print_r($nilai_akhir);
		?>
        				<h3>Nilai Akhir Total</h3>
                        <table class="table">
                        	<tr>
                            	<th>No</th>
                                <th>Nama</th>
                                <th>Nilai</th>
                            </tr>
        <?php
						
						$nomor=1;	
                    	while (list($k, $v) = each($nilai_akhir)) 	
							{
			?>
            			<tr>
                            	<td><?php echo $nomor++; ?></td>
                                <td><?php echo $nama_karyawan[$k]; ?></td>
                                <td><?php echo number_format($nilai_akhir[$k],2,",","."); ?></td>
                            </tr>
            <?php					
							}
		?>
        				</table>
             <?php
			 	//print_r($nilai_akhir);
				reset($nilai_akhir);
				arsort($nilai_akhir);
				//print_r($nilai_akhir);
			 ?>
                        
                        <h3>Nilai Akhir Total Sorting</h3>
                        <table class="table">
                        	<tr>
                            	<th>No</th>
                                <th>Nama</th>
                                <th>Nilai</th>
                            </tr>
        <?php
						
						$nomor=1;	
                    	while (list($k, $v) = each($nilai_akhir)) 	
							{
			?>
            			<tr>
                            	<td><?php echo $nomor++; ?></td>
                                <td><?php echo $nama_karyawan[$k]; ?></td>
                                <td><?php echo number_format($nilai_akhir[$k],2,",","."); ?></td>
                          </tr>
            <?php					
							}
		?>
        				</table>

	</div>
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="bs/jquery-3.2.1.slim.min.js"></script>
    <script src="bs/bootstrap.min.js"></script>
  </body>
</html>

Referensi

  • https://lectureku.files.wordpress.com/2012/03/profile-matching.ppt
  • http://cahyadsn.phpindonesia.id/extra/gap.php

Download Metode Profile Matching dengan PHP MySQL

Klik tombol Facebook / Twitter / Google + untuk Download


Komentar via Facebook tentang Metode Profile Matching dengan PHP MySQL

Komentar tentang Metode Profile Matching dengan PHP MySQL

Silahkan tulis saran, komentar dan pertanyaan dibawah!

Your email address will not be published. Required fields are marked *