Metode Profile Matching dengan PHP MySQL
4 May 2018 | Tags: Metode Profile Matching, Metode Profile Matching dengan PHP MySQL, Profile Matching MySQL, Profile Matching PHP
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.
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:
- Menentukan Aspek penilaian, bobot aspek, bobot Core Factor dan bobot Secondary Factor. Setiap aspek dibagi lagi menjadi beberapa faktor dengan target nilai yang ditetapkan
- Menentukan Kandidat
- Memasukkan Nilai faktor setiap kandidat
- Menghitung GAP
- Konversi nilai GAP dengan tabel bobot nilai GAP & menghitung serta mengelompokkan nilai Core Factor dan Secondary Factor pada setiap aspek
- Menghitung Nilai total tiap kandidat
- 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.
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.
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 tentang Metode Profile Matching dengan PHP MySQL
kak, kok ga bisa dirun programnya. Why??