2 Nov 2014

Cara Ekstrim input data PHP MySQL

Ribet bikin field yang banyaaaaaaaaak sekali? cara yg lebih hemat seperti ini. Kasus :   Misa... thumbnail 1 summary

Ribet bikin field yang banyaaaaaaaaak sekali?
cara yg lebih hemat seperti ini.

Kasus : 
Misal ada data siswa, ada entrian nama,ttl,agama,dll. Mungkin membutuhkan field 20 buah. Lalu besok ada perubahan nambah field atau ngurangin field. Pasti 2x jalan, ubah kode dan ubah tablenya. 
Jadi, ngapain bikin repot.

Solusi : 

Json Data. Yak, nantinya tinggal ubah pada kode aja. Saat simpan bikin pake json_encode lalu saat outputkan pake json_decode.
Nah, beresssss 


Mari kita intip kodenya, oya.. sebelumnya download atau copy paste code berikut kedalam file yang bernama mysqlminang.php

Buat database jsondatates create table murid

CREATE TABLE IF NOT EXISTS `murid` (
  `murid_id` int(5) NOT NULL AUTO_INCREMENT,
  `data` text NOT NULL,
  PRIMARY KEY (`murid_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

index.php sebagai view data

<?php
require_once("mysqlminang.php");
$p=new Mysqlminang("jsondatates","localhost","root","");
$sql="Select * from murid";
echo '<table border="1" width="100%"/>';
echo '<th>NIS</th>';
echo '<th>Nama</th>';
echo '<th>Tempat Lahir</th>';
echo '<th>Tanggal Lahir</th>';
echo '<th>Ayah</th>';
echo '<th>Ibu</th>';
echo '<th>B. Indonesia</th>';
echo '<th>B. Inggris</th>';
echo '<th>Agama</th>';
echo '<th>PKN</th>';
foreach($p->GetAllRows($sql) as $row)
{
$dt=json_decode($row->data,true);
echo '<tr>';
echo '<td>'.$dt['profil']['nis'].'</td>'; echo '<td>'.$dt['profil']['nama'].'</td>';
echo '<td>'.$dt['profil']['tempat'].'</td>';
echo '<td>'.$dt['profil']['tgl'].'</td>';
echo '<td>'.$dt['profil']['ayah'].'</td>';
echo '<td>'.$dt['profil']['ibu'].'</td>';
echo '<td>'.$dt['nilai']['indonesia'].'</td>';
echo '<td>'.$dt['nilai']['inggris'].'</td>';
echo '<td>'.$dt['nilai']['agama'].'</td>';
echo '<td>'.$dt['nilai']['pkn'].'</td>';
echo '</tr>';
}
echo '</table>';
?>
Pada kode index.php ini , ada function json_decode yang berguna untuk memparse json data agar bisa dibaca pada program. Karena json data nya sebagai array maka formatnya [jsonkeyparent][jsonkey] .
Contoh data seperti ini

{ "nilai" : { "agama" : "80",
      "indonesia" : "50",
      "inggris" : "70",
      "pkn" : "60"
    },
  "profil" : { "ayah" : "Ayah Janjrit",
      "ibu" : "Ibu Janjrit",
      "nama" : "Janjrit",
      "nis" : "123456789",
      "tempat" : "Jakarta",
      "tgl" : "1999-02-14"
    }
}

Jadi hanya memanggil keyparent nilai dan key indonesia maka akan mendapatkan value 50
add.php sebagai form tambah


<a href="index.php">Lihat Data</a><br></br>
<form method="post" action="add.php">
<hr>PROFIL</hr><br>
NIS <input type="text" name="ip[nis]"/><br>
Nama <input type="text" name="ip[nama]"/><br>
Tempat Lahir <input type="text" name="ip[tempat]"/><br>
Tanggal Lahir <input type="text" name="ip[tgl]"/>format Y-m-d (2014-12-31) bikin sendiri :v <br>
Ayah <input type="text" name="ip[ayah]"/><br>
Ibu <input type="text" name="ip[ibu]"/><br>
<hr>NILAI</hr><br>
B. Indonesia <input type="text" name="in[indonesia]"/><br>
B. Inggris <input type="text" name="in[inggris]"/><br>
Agama <input type="text" name="in[agama]"/><br>
PKN <input type="text" name="in[pkn]"/><br> <input type="submit" name="submit"/>
</form>
<?php
if(isset($_POST['submit']))
{
require_once("mysqlminang.php");
$p=new Mysqlminang("jsondatates","localhost","root","");
$dJson=json_encode(array(
'profil'=>$_POST['ip'],
'nilai'=>$_POST['in'],
));
$d=array(
'data'=>$dJson,
);
if($p->insert('murid',$d)==TRUE)
{
echo "Sukses";
}else{
echo "GAGAL";
}
}
?>
Keterangan add.php ini agak sulit juga. Karena saya membuat sebuah input array untuk memudahkan memberikan nama dan output nantinya.
Disini ada ip[nis], maka untuk membuat sebuah key nis , saya array kan nama input nis.
Jadi, cara membuat data jsonnya akan lebih mudah. Contoh insert data lebih detail nanti seperti berikut.

$dJson=json_encode(array(
'profil'=>array(
'nis'=>'valueNIS',
'nama'=>'valueNama',
          ),
'nilai'=>array(
'indonesia'=>'nilaiIndonesia',
'inggris'=>'nilaiInggris',
 )
));

Seperti biasanya, saya akan menyediakan source code untuk implementasi artikel ini