Senin, 10 Maret 2014

Membuat aplikasi data mahasiswa




Membuat aplikasi data mahasiswa dengan PHP - Bagian 1
membuat aplikasi mahasiswa dengan phpPada artikel ini saya akan menjelaskan langkah-langkah secara lengkap membuat aplikasi data mahasiswa dengan php. Bahasan akan saya bagi menjadi beberapa bagian yaitu Langkah Membuat database, Membuat koneksi database, membuat menu utama, membuat form input data, membuat proses simpan dan upload gambar, membuat laporan membuat pencarian, membuat delete data, membuat form update, membuat proses update, membuat tabel login, membuat proses login, dan terakhir membuat proses logout.
Secara pembahasan, saya tidak mengikat pada penggunaan aplikasi bantu yang artinya anda bisa membuatnya dengan editor apa saja, bisa dreamweaver, notepad, notepad plus atau yang lainya, yang penting bisa mengedit file php. Web server yang saya gunakan xampp 1.7.1 dengan spesifikasi :
+ Apache 2.2.11
+ MySQL 5.1.33 (Community Server)
+ PHP 5.2.9
+ phpMyadmin
Membuat database dan tabel mahasiswa
Nama database : db_datamhs
Nama tabel : tb_mahasiswa
Susunan tabel :
  1. nim tipe char (12) primary
  2. nama  tipe varchar(30)
  3. alamat tipe varchar (100)
  4. tempat_lahir  tipe varchar(30)
  5. tanggal_lahir  tipe date
  6. jenis_kelamin  tipe enum(‘L’,’P’)
  7. photo tipe varchar(100)
Query Membuat tabel mahasiswa
CREATE TABLE  `db_datamhs`.`tb_mahasiswa` (
  `nim` CHAR(  12 )  NOT NULL  ,
  `nama` VARCHAR( 30 ) NOT  NULL ,
  `alamat` VARCHAR( 100 ) NOT  NULL ,
  `tempat_lahir` VARCHAR( 30 ) NOT  NULL ,
  `tanggal_lahir` DATE  NOT NULL  ,
  `jenis_kelamin` ENUM(  'L', 'P'  ) NOT  NULL ,
  `photo` VARCHAR( 100 ) NOT  NULL ,
  PRIMARY KEY  ( `nim`  )
  ) ENGINE = MYISAM  ;
Tampilan hasil tabel pada phpmyadmin
php data mahasiswa
Membuat folder aplikasi web data mahasiswa
Aplikasi data mahasiswa ini akan saya simpan dalam folder data-mahasiswa. Saya buka folder xampp (jika di c:/xampp atau di d:/xampp) dan masuk folder htdocs. Setelah itu saya create new folder dengan nama :
data-mahasiswa
Membuat Koneksi Database
Dengan berhasilnya database dan tabel dibuat maka sekarang, membuat koneksi dari php ke database dan tabel mysql yang sudah dibuat. Saya akan buat file baru dengan jenis php dan disimpan dengan nama koneksi.php dan dalamnya saya buat kode php :
<?php
  $dbserver="localhost";
  $dbusername="root";
  $dbpassword="";
  $dbname="db_mahasiswa";
  mysql_connect($dbserver,$dbusername,$dbpassword)  or die(mysql_error());
  mysql_select_db($dbname) or die  (mysql_error());
?>

Membuat Menu Utama aplikasi web data mahasiswa
Menu utama digunakan untuk mengakses halaman keseluruhan dari aplikasi data mahasiswa ini. Susunan menu yaitu : Tambah Data Mahasiswa dan Laporan Data Mahasiswa. Saya buat sebuah file dari php dengan nama index.php dengan isi sebagai berikut :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html  xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Menu  Utama Data Mahasiswa</title>
  </head>
  <body>
  <h1 align="center">Data Mahasiswa</h1>
  <p align="center"><a href="input-data-mahasiswa.php">Input Data Mahasiswa</a></p>
  <p align="center"><a href="laporan-data-mahasiswa.php">Laporan Data Mahasiswa  </a></p>
  <p>&nbsp;</p>
  <p align="center">Dikembangkan oleh <a  href="http://www.zainalhakim.web.id">www.zainalhakim.web.id</a></p>
  </body>
</html>
Sekarang saya sudah bisa jalankan dengan mengetik http://localhost/data-mahasiswa dan hasilnya :
php data mahasiswa - menu utama



Membuat aplikasi data mahasiswa dengan PHP - Bagian 2
Melanjutkan artikel saya tentang bagaimana membuat aplikasi data mahasiswa dengan php bagian 1, pada bagian 2 ini akan saya bahas tentang bagaimana membuat form/formulir input data mahasiswa, membuat proses simpan dan upload photo mahasiswa.
Membuat form input data mahasiswa
Sesuai dengan susunan database yang sudah saya rancang sebelumnya maka saya akan membuat sebuah form dengan kode sebagai berikut dan disimpan dengan nama input-data-mahasiswa.php :
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN">
  <html>
  <head>
  <title>Entry Mahasiswa</title>
  <meta http-equiv="Content-Type" content="text/html;  charset=iso-8859-1">
  </head>
  <body>
  <form action="simpan-data-mahasiswa.php"  method="post" enctype="multipart/form-data"  name="FMHS">
  <table  width="452" border="0" align="center"  cellpadding="0" cellspacing="1"  bgcolor="#669900">
  <tr>
  <td  height="40" align="center"  bgcolor="#669900"><strong><font  color="#FFFFFF">ENTRY DATA</font></strong></td>
  </tr>
  <tr>
  <td  bgcolor="#FFFFFF"><table width="452"  border="0" align="center" cellpadding="5"  cellspacing="0">
  <tr><td  width="113">NIM</td><td width="11">:</td>
  <td  width="237"><input name="nim" type="text"  id="nim" size="12" maxlength="12"></td>
  </tr>
  <tr><td>Nama</td><td>:</td>
  <td><input  name="nama" type="text" id="nama"  size="30" maxlength="30"></td>
  </tr>
  <tr><td>Tempat  Lahir</td><td>:</td>
  <td><input  name="tempat_lahir" type="text" id="tempat_lahir"  size="30" maxlength="30"></td>
  </tr>
  <tr><td>Tanggal  Lahir</td><td>:</td>
  <td><select name="tgl" size="1"  id="tgl">
  <?php
  for ($i=1;$i<=31;$i++)
  {
  echo "<option  value=".$i.">".$i."</option>";
  }
  ?>
  </select>
  <select  name="bln" size="1" id="bln">
  <?php
  $bulan=array("","Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember");
  for ($i=1;$i<=12;$i++)
  {
  echo "<option  value=".$i.">".$bulan[$i]."</option>";
  }
  ?>
  </select>
  <select  name="thn" size="1" id="thn">
  <?php
  for ($i=1985;$i<=2000;$i++)
  {
  echo "<option  value=".$i.">".$i."</option>";
  }
  ?>
  </select></td>
  </tr>
  <tr>
  <td>Alamat</td>
  <td>:</td>
  <td><textarea name="alamat" cols="30"  rows="5" id="alamat"></textarea></td>
  </tr>
  <tr><td>Jenis  Kelamin</td><td>:</td>
  <td><input  name="jenis_kelamin" type="radio" value="L" checked> Laki-laki <input  name="jenis_kelamin" type="radio" value="P"> Perempuan  </td>
  </tr>
  <tr><td>Photo</td><td>:</td>
  <td><input  type="file" name="photo"  id="photo"></td>
  </tr>
  <tr><td  colspan="3" align="center"><input  name="fok" type="submit" id="fok"  value="OK">
  <input  name="fulang" type="reset" id="fulang"  value="Ulangi">
  <input name="fulang2"  type="button" id="fulang2" value="Batal"  onClick="javascript:history.back()"></td>
  </tr>
  </table></td>
  </tr>
  </table>
  </form>
  <div  align="center"><a href="index.php">Menu  Utama</a></div>
  </body>
</html>
Hasil kode tersebut jika dijalankan akan seperti gambar berikut :
form/formulir input data mahasiswa
Membuat Proses Simpan dan Upload photo mahasiswa
Setelah form selesai sekarang saya membuat file untuk menyimpan data yang diisikan lewat formulir entry, nama file sesuai seperti yang saya buat di
< form action="simpan-data-mahasiswa.php" …> yaitu simpan-data-mahasiswa.php. Isinya seperti berikut :
 <?php
  include "koneksi.php";
  $nim=$_POST['nim'];
  $nama=$_POST['nama'];
  $tempat_lahir=$_POST['tempat_lahir'];
  $tanggal_lahir =  $_POST['thn']."-".$_POST['bln']."-".$_POST['tgl'];
  $alamat=$_POST['alamat'];
  $jenis_kelamin=$_POST['jenis_kelamin'];
  //masing-masing variabel yang diawali dengan $_POST harus sesuai dengan  nama yang dibuat dalam form
  if (empty($nim))
  {             
     die("Isikan  NIM!"); //Berhenti dan munculkan pesan jika nim tidak diisi
  }
  elseif(empty($nama))
  {
     die("Isikan  Nama!"); //Berhenti dan munculkan pesan jika nama tidak diisi
     //anda bisa  tambahkan struktur if yang lain jika ada data yang perlu dicek
  }
  else
  {
     $cekdata="select  nim from tb_mahasiswa where nim='$nim'";
     $ada=mysql_query($cekdata)  or die(mysql_error());
     if(mysql_num_rows($ada)>0)
     { die("NIM  telah Terdaftar!"); }
     else  {
  if (!empty($_FILES["photo"]["tmp_name"]))
  {
    $namafolder="photo/";  //tempat menyimpan file
    $jenis_gambar=$_FILES['photo']['type'];
    if($jenis_gambar=="image/jpeg"  || $jenis_gambar=="image/jpg" || $jenis_gambar=="image/gif"  || $jenis_gambar=="image/png")
    {          
  $photo  = $namafolder . basename($_FILES['photo']['name']);      
  if  (!move_uploaded_file($_FILES['photo']['tmp_name'], $photo))
  { die("Gambar gagal dikirim"); }
    } else  { die("Jenis gambar yang anda kirim salah. Harus .jpg .gif .png"); }
  }  //end if cek file upload
  mysql_query("insert  into tb_mahasiswa(nim,nama,tempat_lahir,tanggal_lahir,alamat,jenis_kelamin,photo)  " .
  "values('$nim','$nama','$tempat_lahir','$tanggal_lahir','$alamat','$jenis_kelamin','$photo')")  or die(mysql_error());
  echo  "Berhasil";
  header("location:laporan-data-mahasiswa.php");
     } //end if  terdaftar
}    
?>
Setelah selesai form input mahasiswa, anda masuk ke folder data-mahasiswa, lalu buat sebuah folder baru diberi nama photo. Kemudian coba jalankan aplikasi seperti awal tadi (lihat bagian 1 menjalankan menu), masuk ke menu utama http://localhost/data-mahasiswa  kemudian masuk ke menu input data mahasiswa.
Kemudian coba diisikan lengkap dengan gambar dan disimpan.
Jika pas selesai ternyata ada error header... , seperti gambar berikut :
error header php

Anda jangan panik dulu, data sebenarnya sudah masuk tapi ada bagian baris pertama pada file koneksi.php yang harus anda tambahkan, lihat perubahan pada baris pertama :
<?php
ob_start(); //ditambahkan untuk mengabaikan pengiriman header, berlaku juga untuk mengabaikan pesan error header
$dbserver="localhost";
$dbusername="root";
$dbpassword="";
$dbname="db_datamhs";
mysql_connect($dbserver,$dbusername,$dbpassword) or die(mysql_error());
mysql_select_db($dbname) or die (mysql_error());
?>
setelah anda perbaiki file koneksi.php, coba refresh lagi...
Ternyata muncul lagi pesan error... semuanya anda abaikan dulu. Sekarang kita coba cek dulu apakah data yang dikirim sudah masuk database atau belum, caranya anda buka phpmyadmin, masuk ke database db_datamhs, tb_mahasiswa, coba anda browse apakah ada baris baru disitu??? kalau ya berati data memang berhasil tersimpan.
Setelah itu kita cek lagi file gambar yang diupload, buka folder data-mahasiswa/photo, apakah ada file gambar disitu??? kalau ya berarti data sudah masuk dan photo juga sudah terkirim. PROSES SIMPAN SELESAI.

Belajar pemrograman web
Membuat aplikasi data mahasiswa dengan PHP - Bagian 3

Membuat laporan data mahasiswa

Laporan akan saya buat dengan susunan tabel yang menampilkan seluruh data mahasiswa. Silahkan lihat kode berikut ini :
<?php
include "koneksi.php";
?>
<html>
<head>
<title>Laporan Data Mahasiswa</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">Data Mahasiswa</h2>
<form action="" method="get" name="FCari" id="FCari">
  Cari NIM/Nama 
    <input name="txtcari" type="text" id="txtcari" size="20" maxlength="30" value="<?php echo $_GET['txtcari']?>">
  <input type="submit" name="Submit" value="Cari">
</form>
<form name="FLaporan" method="post" action="delete-banyak.php" onSubmit="return confirm('Hapus data terpilih?')">
<table width="100%" border="1" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td align="center">&nbsp;</td>
    <td>NIM</td>
    <td>Nama</td>
    <td>Tempat Lahir</td>
    <td align="center">Tanggal Lahir</td>
    <td align="center">Jenis Kelamin</td>
    <td>Alamat</td>
    <td align="center">Photo</td>
    <td align="center">Koreksi</td>
    <td align="center">Hapus</td>
  </tr>
<?php
  if(!empty($_GET['txtcari'])) 
  {
     $myquery="select nim,nama,tempat_lahir, DATE_FORMAT(tanggal_lahir, '%d-%m-%Y') as tanggal_lahir, jenis_kelamin,alamat, photo from tb_mahasiswa where nim='".$_GET['txtcari']."' or nama LIKE '%".$_GET['txtcari']."%'";
  }
  else
  {
     $myquery="select nim,nama,tempat_lahir, DATE_FORMAT(tanggal_lahir, '%d-%m-%Y') as tanggal_lahir, jenis_kelamin,alamat, photo from tb_mahasiswa";
  }      
  $daftarsiswa=mysql_query($myquery) or die (mysql_error());
  while($dataku=mysql_fetch_object($daftarsiswa))
  {
?>
  <tr>
    <td align="center">
    <input type="checkbox" name="item[]" id="item[]" value="<?php echo $dataku->nim?>" /></td>
    <td><?php echo  $dataku->nim?></td>
    <td><?php echo  $dataku->nama?></td>
    <td><?php echo  $dataku->tempat_lahir?></td>
    <td align="center"><?php echo  $dataku->tanggal_lahir?></td>
    <td align="center"><?php echo  $dataku->jenis_kelamin?></td>
    <td><?php echo  $dataku->alamat?></td>
    <td align="center"><img src="<?php echo  $dataku->photo?>" alt="<?php echo  $dataku->nama?>" width="50" /></td>
    <td align="center"><a href="koreksi-data-mahasiswa.php?nim=<?php echo  $dataku->nim?>">Koreksi</a></td>
    <td align="center"><a href="hapus-data-mahasiswa.php?nim=<?php echo  $dataku->nim?>">Hapus</a></td>
  </tr>
<?
}
?>
</table>
    <input name="btnHapus" type="submit" value="Delete">
  <p align="center"><a href="index.php">Menu Utama
  </a></p>
</form>
</body>
</html>
Kemudian saya simpan dengan nama file laporan-data-mahasiswa.php, jika panggil melalui menu utama maka hasilnya akan seperti berikut :

untuk sementara yang bisa digunakan hanya faslitas pencarian, anda bisa coba.
Secara logika, pencarian dilakukan apabila text pencarian dengan nama txtCari diisi dan dikirim, sehingg halaman laporan menerima melalui metode GET dan mencari berdasar nim atau nama.

Membuat halaman delete / hapus satu baris data

Jika anda lihat dibagian kolom laporan ada sebuah kolom dengan judul hapus, tulisan hapus pada tiap baris digunakan untuk mengahpus baris yang sesuai, mekanismenya, link hapus membawa nilai dengan kunci nim ke halaman hapus. Sekarang saya akan membuat halaman hapus untuk menerima kiriman dari link hapus. Lihat kode berikut :
<?php
include "koneksi.php";
$nim = $_GET['nim'];
$res = mysql_query("select photo from tb_mahasiswa where nim='".$_GET['nim']."' LIMIT 1");
$d=mysql_fetch_object($res);
if (strlen($d->photo)>3)
{
  if (file_exists($d->photo)) unlink($d->photo);
}        
$myquery =  "delete from tb_mahasiswa where nim ='$nim' limit 1"; 
$hapus = mysql_query($myquery) or die ("gagal menghapus"); 
header ("location:laporan-data-mahasiswa.php");
?>
Disini antara hapus satu baris saya bedakan filenya, agar lebih mudah difahami. Sebenarnya bisa digabung dengan mendeteksi bentuk kiriman parameter nilainya, nanti jika diperlukan akan saya bahas kembali.
Proses penghapusan data dalam file hapus-data-mahasiswa.php dilakukan dengan menghapus sekaligus file gambar yang sudah dimasukkan. Sebelum menghapus juga ada pengecekan status photo jika ada isinya dan jika ada filenya maka dilakukan hapus gambar.
Bagian ini adalah halaman yang akan menangani proses jika baris data dipilih dan tombol delete ditekan. Fungsinya adalah menghapus semua data yang sudah terpilih. Dibagian laporan, saya sudah buatkan checkbox yang masing-masing sudah diberi nilai dalam susunan array input. Lihat kode baris ini pada bagian kode laporan.
<input type="checkbox" name="item[]" id="item[]" value="<?php echo $dataku->nim?>" />
Setiap perulangan baris maka masing-masing item[] akan diberi nilai sesuai nim yang sedang diambil dalam tabel. Kemudian semua array akan dikirim ke halaman delete-banyak.php sesuai dengan action form yang ada sebelum tabel. Berikut kode untuk mengambil nilai dari array pilihan yang dihapus :
<?php
include "koneksi.php";
$jumlah = count($_POST["item"]);
for($i=0; $i < $jumlah; $i++) 
{
  $nim=$_POST["item"][$i];
  $res = mysql_query("select photo from tb_mahasiswa where nim='$nim' LIMIT 1");
  $d=mysql_fetch_object($res);
  if (strlen($d->photo)>3)
  {
    if (file_exists($d->photo)) unlink($d->photo);
  }      
  $myquery =  "delete from tb_mahasiswa where nim ='$nim' limit 1"; 
  $hapus = mysql_query($myquery) or die ("gagal menghapus"); 
}
header ("location:laporan-data-mahasiswa.php");
?>
Semua array akan dihitung dan dilakukan perulangan untuk menghapus photo serta recordnya.









Membuat aplikasi data mahasiswa dengan PHP - Bagian 4

Melanjutkan artikel saya tentang membuat aplikasi data mahasiswa yang sempat tertunda, sekarang saya lanjutkan membahas tentang bagaimana membuat form update data mahasiswa serta menyimpanya kembali kedalam tabel database mysql yang sudah saya buat. Langkah-langkahnya akan saya bahas berikut.
Setelah sebelumnya pada artikel membuat aplikasi data mahasiswa bagian 1 tentang susunan tabel, koneksi, bagian 2 membuat input data dan simpan, bagian 3 tentang laporan dan hapus data, langkah berikutnya adalah menghubungkan laporan dengan form koreksi data. Pada form koreksi data, data mahasiswa yang sudah ada dimunculkan dengan opsi perubahan isian tertentu kecuali nim. Nim dibuat primary/index sehingga tidak diperkenankan merubahnya. Secara desain, form koreksi hampir sama dengan form input data, hanya berbeda fungsi. Kalau form input ditampilkan dengan isian kosong, kalau form koreksi dengan form yang sudah terisi sesuai data yang tersimpan. Susunan form koreksi data bentuknya seperti gambar berikut :
Untuk membuat form seperti itu saya membuat susunan kode php dan html yang disimpan dengan nama file koreksi-data-mahasiswa.php, susunan kodenya sebagai berikut :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Koreksi Mahasiswa</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
    include("koneksi.php");
    $nim=$_GET['nim'];
    $qrykoreksi=mysql_query("select * from tb_mahasiswa where nim='$nim' LIMIT 1");
    $dataku=mysql_fetch_object($qrykoreksi);
    list($tahun,$bulan,$tanggal) = explode('-',$dataku->tanggal_lahir);
?>
<form action="update-data-mahasiswa.php" method="post" enctype="multipart/form-data" name="FKoreksi">
  <table width="600" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#669900">
    <tr>
      <td height="50" align="center" bgcolor="#669900"><strong><font color="#FFFFFF">KOREKSI DATA</font></strong></td>
    </tr>
    <tr>
      <td><table width="100%" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#FFFFFF">
          <tr>
            <td width="99">NIM</td>
            <td width="9">:</td>
            <td width="287"><input name="nim" type="text" id="nim" size="10" maxlength="10" value="<?php echo $dataku->nim?>" readonly=""></td>
            <td width="163" rowspan="7" align="center" valign="top"><img src="<?php echo  $dataku->photo?>" alt="<?php echo  $dataku->nama?>" width="100" border="1"/></td>
          </tr>
          <tr>
            <td>Nama</td>
            <td>:</td>
            <td><input name="nama" type="text" id="nama" size="30" maxlength="30" value="<?php echo $dataku->nama?>"></td>
          </tr>
          <tr>
            <td>Tempat Lahir</td>
            <td>:</td>
            <td><input name="tempat_lahir" type="text" id="tempat_lahir" size="30" maxlength="30" value="<?php echo $dataku->tempat_lahir?>"></td>
          </tr>
          <tr>
            <td>Tanggal Lahir</td>
            <td>:</td>
            <td><select name="tgl" size="1" id="tgl">
                <?php
             for ($i=1;$i<=31;$i++)
             {
                if($tanggal==$i) {
                    echo "<option value=".$i." selected>".$i."</option>";
                } else {
                    echo "<option value=".$i.">".$i."</option>";
                }
             }
          ?>
              </select>
              <select name="bln" size="1" id="bln">
                <?php
             $namabulan=array("","Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember");
             for ($i=1;$i<=12;$i++)
             {
                if($bulan==$i) {
                    echo "<option value=".$i." selected>".$namabulan[$i]."</option>";
                } else {
                    echo "<option value=".$i.">".$namabulan[$i]."</option>";
                }
             }
          ?>
              </select>
              <select name="thn" size="1" id="thn">
                <?php
              echo "<option value=".$tahun.">".$tahun."</option>";
             for ($i=1985;$i<=2000;$i++)
             {
                if($tahun==$i) {
                    echo "<option value=".$i." selected>".$i."</option>";
                } else {
                    echo "<option value=".$i.">".$i."</option>";
                }
             }
          ?>
              </select></td>
          </tr>
          <tr>
            <td>Alamat</td>
            <td>:</td>
            <td><textarea name="alamat" cols="30" rows="5" id="alamat"><?php echo $dataku->alamat?></textarea></td>
          </tr>
          <tr>
            <td>Jenis Kelamin</td>
            <td>:</td>
            <td><input name="jenis_kelamin" id="jenis_kelamin" type="radio" value="L" <?php if($dataku->jenis_kelamin=='L') echo "checked";?>>
              Laki-laki
              <input name="jenis_kelamin" id="jenis_kelamin" type="radio" value="P" <?php if($dataku->jenis_kelamin=='P') echo "checked";?>>
              Perempuan </td>
          </tr>
          <tr>
            <td>Photo</td>
            <td>:</td>
            <td><input type="file" name="photo" id="photo"></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>Pilih photo jika ingin diganti</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td height="50" colspan="4" align="center"><input name="fok" type="submit" id="fok" value="OK">
              <input name="fulang" type="reset" id="fulang" value="Ulangi"><input name="fulang" type="button" id="fulang" value="Batal" onClick="javascript:history.back()"></td>
          </tr>
      </table></td>
    </tr>
  </table>
</form>
  <div align="center"><a href="index.php">Menu Utama</a></div>
</body>
</html>
 
Dari kode ada beberapa hal yang perlu diperhatikan :
  1. nim diambilkan dari nilai yang dikirimkan melalui url pada laporan, sehingga dalam halaman koreksi diambil dengan fungsi $_GET['nim']
  2. setelah itu nim dicari dalam tabel mahasiswa dan jika ditemukan ditampilkan dalam form koreksi
  3. karena field tanggal lahir dari database dikirimkan dengan format tahun/bulan/tanggal maka untuk menampilkanya dalam combo/listmenu maka field harus dipisah dengan perintah list($tahun,$bulan,$tanggal)
  4. kemudian dalam form, nim yang ditampilkan harus dikunci agar tidak bisa dirubah, cara menguncinya dengan perintah readonly=""
  5. data lainnya ditampilkan sesuai dengan input yang disediakan.
Setelah form koreksi selesai, sekarang saya membuat proses penyimpanan kembali data yang dikoreksi. Proses simpan ini juga dapat memperbaharui gambar yang sudah ada. Kodenya dapat dilihat berikut :
<?php
include "koneksi.php";
$nim=$_POST['nim'];
$nama=$_POST['nama'];
$tempat_lahir=$_POST['tempat_lahir'];
$tanggal_lahir = $_POST['thn']."-".$_POST['bln']."-".$_POST['tgl'];
$alamat=$_POST['alamat'];
$jenis_kelamin=$_POST['jenis_kelamin'];
if (empty($nim))
{   
    die("Isikan NIM!");
}
elseif(empty($nama))
{
    die("Isikan Nama!");
}
else //bisa tambahkan pengecekan yang lain jika perlu
{
    //proses upload photo jika ada
    if (!empty($_FILES["photo"]["tmp_name"]))
    {
        $namafolder="photo/"; //tempat menyimpan file
        $jenis_gambar=$_FILES['photo']['type'];
        if($jenis_gambar=="image/jpeg" || $jenis_gambar=="image/jpg" || $jenis_gambar=="image/gif" || $jenis_gambar=="image/png")
        {          
            $photo = $namafolder . basename($_FILES['photo']['name']);      
            if (!move_uploaded_file($_FILES['photo']['tmp_name'], $photo))
            {
               die("Gambar gagal dikirim");
            }
            //Hapus photo yang lama jika ada
            $res = mysql_query("select photo from tb_mahasiswa where nim='$nim' LIMIT 1");
            $d=mysql_fetch_object($res);
            if (strlen($d->photo)>3)
            {
                if (file_exists($d->photo)) unlink($d->photo);
            }                   
            //update photo dengan yang baru
            mysql_query("UPDATE tb_mahasiswa SET photo='$photo' WHERE nim='$nim' LIMIT 1");
        }
        else { die("Jenis gambar yang anda kirim salah. Harus .jpg .gif .png"); }
    } //end if cek file upload
    $myqry="UPDATE tb_mahasiswa SET nama='$nama',tempat_lahir='$tempat_lahir',".
            "tanggal_lahir='$tanggal_lahir',alamat='$alamat',jenis_kelamin='$jenis_kelamin' WHERE nim='$nim' LIMIT 1";
    mysql_query($myqry) or die(mysql_error());
    header("location:laporan-data-mahasiswa.php");
    exit;
}       
?>
File dapat disimpan dengan nama update-data-mahasiswa.php. Dari kode dapat dilihat bahwa halaman update ini menerima input dari form koreksi data dan memprosesnya dengan langkah memindah nilai yang dikirimkan, kemudian mengecek isian dan mengecek photo yang diupload.