Membangun Web Service PDDIKTI Sederhana (Lanjutan) MySql2Feeder

Pada Tutorial sebelumnya telah di bahas bagaimana membuat Web Service PDDIKTI Feeder (Client ) sederhana, dimana data bersumber dari file excell. Untuk kali ini akan di bahas lagi mengembangkan dari script-script terdahulu, namun datanya akan diambilkan dari database MySql yang akan langsung diimport ke database postgre feeder.
Inti daripada Web Service untuk insert record atau recordset adalah data yang akan diimport harus dijadikan menjadi file JSON,
Untuk mengkovert menjadi file JSON, cukup mudah yaitu hanya dengan perintah json_encode($variabel_yg_dirubah), contohnya :
$nama = 'Mary',
Maka untuk merubah variabel $nama menjadi JSON adalah $je_nm=json_encode($nama), dimana $je_nm merupakan sebuah variabel yang sudah berupa json, dari variabel nama ($nama). Sedang untuk decode adalah $jd_nm=json_decode($je_nm,true).
Untuk memulai membuat Web Service dari database MySql ke Postgres Feeder adalah sebagai berikut :
1. Download database disini
2. Download file koneksi.php disini

Bukalah file depan.php dengan editor kesayangan anda, dan rubahlah scriptx menjadi seperti dibawah ini (melengkapi script terdahulu).

<?php
include "session.php";
//echo "Id Perguruan Tinggi : <strong>".$id_sp."</strong><br />";
echo "Nama Perguruan Tinggi : <strong>".$nm_lemb."</strong><br />";

?>
<p>Untuk <strong><font color="#990000">insert mahasiswa dari file excell</font></strong> silahkan download template excel <a href="temp_excell/inst_mhs.xls">disini</a></p>
<form method="post" enctype="multipart/form-data" action="insert_mhs.php">
Pilih File Excel*: <input name="fileexcel" type="file"> <input name="upload" type="submit" value="Import">
</form>
<br />
<p>Untuk <strong><font color="#990000">insert mahasiswa</font></strong> dari database : <font color="#000066" size="+2">MySql to Feeder</font></p>
<form method="post" enctype="multipart/form-data" action="mhs_mysql2feeder.php">
<input name="mhs" type="submit" value="MySql2Feeder">
</form>
<br /><br />
<a href="logout.php">Logout</a>

Sehingga setidaknya akan tampil seperti gambar berikut ini :

Dari script diatas nampak ada penambahan form pada baris dibawahnya yang tujuannya adalah import data dari database MySql ke Porsgres PDDIKTI FEEDER (MySql2Feeder).
Jika pada tombol MySql2Feeder di klik, maka akan diarahkan menuju halaman mhs_mysql2feeder.php sesuai dengan action="mhs_mysql2feeder.php", yang akan tampil halaman seperti gambar berikut :


mhs_mysql2feeder.php


<?php
include 'session.php';
include 'koneksi.php';
@$keyfilter=$_REQUEST['keyfilter'];
//@$keyorder=$_REQUEST['keyorder'];
//@$keylimit=$_REQUEST['keylimit'];
//@$keyoffset=$_REQUEST['keyoffset'];
$sukses = 0;
$gagal = 0;

?>
<h1>Insert Mahasiswa : <font color="#000066" size="+2">MySql to Feeder</font></h1>
<form method="post" name="sisfo" action="<?php echo $_SERVER['PHP_SELF'];?>?op=insert">
  <table>
  <tr>
     <td height="34">Filter Field Tabel&nbsp;&nbsp;</td>
     <td><input type="text" name="keyfilter" class="inputbox" size="80" value="<?php echo $keyfilter; ?>"></td>
  </tr>
  <!--<tr>
     <td height="34">Order Field&nbsp;&nbsp;</td>
     <td><input type="text" name="keyorder_sisfo" class="inputbox" size="80" value="<?php echo $keyorder; ?>"></td>
  </tr>
  <tr>
     <td height="34">Offset&nbsp;&nbsp;</td>
     <td><input type="text" name="keyoffset_sisfo" class="inputbox" size="20" value="<?php echo $keyoffset; ?>"></td>
  </tr>
  <tr>
     <td height="34">Limit&nbsp;&nbsp;</td>
     <td><input type="text" name="keylimit_sisfo" class="inputbox" size="20" value="<?php echo $keylimit; ?>"></td>
  </tr>
  <tr>

      <!-- Form dalam Form -->
  <!--<td>Menambah record ke tabel :</td>
    <td><select name="nama_tabel" class="inputbox">-->                    
  <!--</tr>-->
  <td width="0">&nbsp; </td>
  <td>
  <input name="proses" type="submit" value="insert" alt="Insert">
  </td>
  </tr>   
  </table>
</form>  
  
  <br>
  
  <?php
  if(isset($_GET['op'])){
     if($_GET['op']=='insert')
  //echo "test lagi<br>";
  {
  $sql1= "SELECT * FROM mahasiswa WHERE ".$keyfilter ;
  //echo $sql1;
  /* array data mahasiswa yang akan di insert */       
  
  $Q=mysql_query($sql1);
  $hasildata=mysql_num_rows($Q);
  if($Q){ 
   $datas = array();
    if(mysql_num_rows($Q)){
     while($data = mysql_fetch_assoc($Q)){
      $datas[] = $data;
      }
    } else {
      echo "limit/offset yang diisi melampaui dari record";
      }
    //print_r($datas);
    //echo json_encode(array('msmhs_'=>$posts));
    $encode=json_encode($datas);
    //print_r($encode);
    $decode = json_decode($encode, true);
    //print_r($decode);
  
  
    // parsing JSON untuk di masukkan ke database Feeder
    for($i=0;$i<1;$i++){
     foreach($decode as $row){
      //$record['nipd']=$data->val($i,1);
     $record['nm_pd'] = $row['nama']; 
     $record['tmpt_lahir'] = $row['tempat_lahir'];
     $record['tgl_lahir'] = $row['tanggal_lahir'];
     $record['jk']  = $row['jenis_kelamin'];
     $record['id_agama'] =$row['agama'];
     $record['id_kk']=$row['id_kk'];
     //$record['id_jns_daftar'] = $data['tanggal_lahir'];
     //$record['tgl_masuk_sp'] = $data['tanggal_lahir'];
     //$record['mulai_smt'] = $data['tanggal_lahir'];
     $record['jln'] = $row['jalan'];
     $record['rt'] = $row['rt'];
     $record['rw'] = $row['rw'];
     $record['nm_dsn'] = $row['nama_dusun'];
     $record['ds_kel'] = $row['kelurahan'];
     $record['id_wil']='000000';
     $record['a_terima_kps'] = $row['terima_kps'];
     $record['stat_pd'] = $row['status'];
     $record['nm_ayah'] = $row['nama_ayah'];
     $record['id_jenjang_pendidikan_ayah'] = $row['pendidikan_ayah'];
     $record['id_pekerjaan_ayah'] = $row['pekerjaan_ayah'];
     $record['id_penghasilan_ayah'] = $row['penghasilan_ayah'];
     $record['id_kebutuhan_khusus_ayah'] = 0;
     $record['nm_ibu_kandung']  = $row['nama_ibu'];
     $record['id_jenjang_pendidikan_ibu'] = $row['pendidikan_ibu'];
     $record['id_pekerjaan_ibu'] = $row['pekerjaan_ibu'];
     $record['id_penghasilan_ibu'] = $row['penghasilan_ibu'];
     $record['id_kebutuhan_khusus_ibu'] = 0;
     $record['nik'] = $row['nik'];
     //$record['kode_prodi'] = $data->val($i,40);
     $record['kewarganegaraan']='ID';
     $records[]=$record;
    
       }
    
       $j_encode=json_encode($records);
       $mhs_json=$j_encode;
      //echo "parameter yang masuk ke tabel mahasiswa sebagai berikut <br />";
      //print_r($mhs_json)."<br />";
      //echo "----------------------------------<br>";
      $j_decode=json_decode($j_encode,true);
      $mhs_json1=$j_decode;
      
      
      $result=$proxy->InsertRecordset($gettoken,'mahasiswa',$mhs_json);    // fix insert banyak records
      //var_dump($result)."<br>";    
    }
   }
  if ($result['result']) { 
   for($i=0;$i<1;$i++){
    foreach($decode as $row){
     
     $tbl_sms='sms';
     $idsp="id_sp='".$id_sp."'";
     $kode_prodi="kode_prodi='".$row['kode_prodi']."'";
     $filter=$kode_prodi." AND ".$idsp;
    //echo $filter."<br>";
     $result=$proxy->GetRecord($gettoken,'sms',$filter);
     $coba=$result['result'];
     $id_sms=$coba['id_sms'];
    //echo "id_sms = '".$id_sms."'<br>";
    // Kebutuhan tabel mahasiswa_pt
    
     $record1['id_reg_pd']='';
     $record1['id_sms']=$id_sms;//'851ef9fb-ee0a-4772-b868-43d9370c21df';//$coba['id_sms'];
      
     
     
     $filt_nm="nm_pd='".$row['nama']."'";
     $filt_tpl="tmpt_lahir='".$row['tempat_lahir']."'";
     $filt_tgl="tgl_lahir='".$row['tanggal_lahir']."'";
     $filter1=$filt_nm." AND ".$filt_tpl." AND ".$filt_tgl;
       //echo $filter1;
       $result=$proxy->GetRecord($gettoken,'mahasiswa',$filter1);
       $coba1=$result['result'];
       $id_pd=$coba1['id_pd'];
       //echo "<br />";
  //     print_r ("id_pd ='".$id_pd."'<br>");
     
     $record1['id_pd']=$id_pd;
     $record1['id_sp']=$id_sp;
     //     
     //if($row['StatusAwalID']=='B'){$id_daftar=1;}else{$id_daftar=2;}
     $record1['id_jns_daftar']=$row['jenis_pendaftaran'];
     $nipd=$row['nim'];
     $record1['nipd']=$nipd;
     //$record1['id_pd']=$id_pd;
     $record1['tgl_masuk_sp']=$row['tgl_masuk_kuliah'];
       $mulai_smt=$row['mulai_semester'];
     $record1['mulai_smt']=$mulai_smt;
     $record1s[]=$record1;
    //}
    if ($hasildata) $sukses++;
    else $gagal++;
   }
    $j_encode1=json_encode($record1s);
    $mhs_pt_json=$j_encode1;
    //print_r($mhs_pt_json);
    //$j_decode1=json_decode($j_encode1,true);
    //$mhs_pt_json1=$j_decode1;
   
   $result1=$proxy->InsertRecordset($gettoken,'mahasiswa_pt',$mhs_pt_json);    // fix insert banyak record
   echo "<pre>";
   if ($result['result']) { 
     for($i=0;$i<1;$i++){
      foreach($decode as $row){
    
      $filt_nm="nm_pd='".$row['nama']."'";
      $filt_tpl="tmpt_lahir='".$row['tempat_lahir']."'";
      $filt_tgl="tgl_lahir='".$row['tanggal_lahir']."'";
      $filter1=$filt_nm." AND ".$filt_tpl." AND ".$filt_tgl;
      //echo $filter1;
      $result=$proxy->GetRecord($gettoken,'mahasiswa_pt',$filter1);
      $coba1=$result['result'];
      $id_pd=$coba1['id_pd'];
      $nm=$result['result']['nm_pd'];
      $nim=$result['result']['nipd'];
      $mulai_smt=$result['result']['mulai_smt'];
  
      echo "<br>NIM : ".$nim." | Nama : ".$nm." | Semester Awal = ".$mulai_smt;
      }
     }
   }
   echo "</pre>";
  
  }
  }
  echo "<b>import data selesai.</b> <br>";
  echo "Data yang berhasil di import : " . $sukses .  "<br>";
  echo "Data yang gagal diimport : ".$gagal .  "<br>";
  echo "kembali ke <a href='depan.php'>depan</a>";
  }
  }
?>

Dari form tersebut, disediakan kolom filter dimana dari tabel yang akan diambil berdasarkan filter trtentu, dimana filter ini syntaxnya adalah menyebutkan nama kolom pada tabel mysql dengan data yang diinginkan, misal : kolom yang di filter adalah kolom kode_prodi dengan data yang dicari 86208 adalah merupakan prodi Pendidikan Agama Islam, sehingga akan tampak seperti gambar berikut :


dan setelah kita tekan tombol insert maka hasilnya akan tampil seperti gambar berikut :


Setelah ada informasi data berhasil diimport setidaknya data mahasiswa tersebut sudah masuk ke database postgres feeder.
Untuk melengkapi script yang kurang yaitu adanya logout, dimana mksud dari script tersebut adalah untuk menghilangkan atau menghapus session yang terjadi setelah login, berikut script logout.php

Logout.php

<?php
session_start();
if (empty($_SESSION['token'])) {
header("location:login.php"); // jika belum login, maka dikembalikan ke file form_login.php
}
else {
header("localtion:logout.php");
session_destroy();
}
header("location:login.php"); // jika belum login, maka dikembalikan ke file form_login.php
?>

Demikian tutoral membuat Web Service sederhana untuk data dari database mysql untuk import ke feeder.
Dan yang perlu diketahui adalah jika susunan tabel yang disediakan disini tidak sesuai dengan database pada siakad, maka script ini harus di edit disesuaikan dengan susunan field tabel masing-masing PT (maping database), terutama nama tabel dan nama field (kolom).
Jika dalam pembahasan pada tulisan-tulisan terdahulu masih banyak kekurangan, penulis mohon maaf karena keterbatasan penulis, dan semoga tulisan-tulisan di blog ini ada guna dan manfaatnya. Amin.

Salam Koding dan selamat berkarya.
Terima Kasih.

Previous
Next Post »