Membuat aplikasi data mahasiswa dengan PHP - Bagian 4

aplikasi web, data mahasiswa

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.

File form koreksi data mahasiswa dapat didownload disini.

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.

File update data mahasiswa dapat didownload disini.

Sampai diproses update, secara umum program aplikasi data mahasiswa dengan php ini selesai. Saya akan tambahkan proses login untuk melindungi aplikasi ini lain waktu.

Semoga Bermanfaat, kritik saran, koreksi, pertanyaan jangan sungkan anda sampaikan. Silahkan berbagi buat yang lain jika ini menurut anda baik.

Zainal Hakim

Membuat aplikasi data mahasiswa dengan PHP - Bagian 1 Bagian 2 - Bagian 3 - Bagian 4 - Bagian 5 - Bagian 6

** Bebas disunting dengan menyebutkan sumber **

Komentar

Halaman Lainya

  • Menyimpan data dalam banyak tabel bersamaan
    Jika anda membuat aplikasi php dan mysql yang menggunakan beberapa tabel database mungkin akan menemui proses menyimpan data ke dalam banyak tabel secara bersamaan dalam satu proses. Contoh sederhana membuat aplikasi php penjualan yang dalam prosesnya menyimpan data dalam tabel transaksi dan sub transaksi.
  • Membuat kalender bulan dengan php
    Jika anda membuat aplikasi berbasis web, fitur yang yang sering diandalkan adalah tampilan dan kemudahan membuat laporan. Misal saja dalam aplikasi yang anda buat ada salah satu laporan yang menyajikanya berdasarkan tanggal.
  • Menghindari duplikat data dalam mysql dengan php
    Menghindari duplikat data dalam mysql bisa dilakukan dengan dua cara, pertama dengan mendefinisikan salah satu field/kolom sebagai primary key atau index, dan cara kedua adalah dengan membuat rutin perintah pengecekan data pada saat akan melakukan insert data. Berikut ini saya akan berbagi tentang bagaimana membuat rutin perintah php yang digunakan untuk menghindari duplikat data dalam mysql.
  • Mengubah format tanggal mysql menjadi indonesia dalam php
    Anda mungkin sudah mengetahui kalau format tanggal yang disimpan dalam database mysql adalah tahun-bulan-tanggal. Pada saat kita menampilkan data tanpa ada perintah perubahan seperti pada tulisan saya sebelumnya tentang mengubah tampilan format tanggal mysql, maka tentunya output ke layar akan tetap sama
  • Menyederhanakan operasi mysql dengan function dalam php
    Sering dalam sebuah aplikasi web khususnya php, kita melakukan operasi database mysql secara berulang. Misal melakukan pengecekan, perhitungan, perbandingan ataupun operasi-operasi umum lainya yang dilibatkan dalam sebuah proses besar. Hal ini sangat tidak efektif karena kita harus menyusunya berulang-ulang yang kadang berujung pada sulitnya melakukan pengembangan. Pada tulisan ini saya akan berbagi trik jitu agar masalah diatas bisa teratasi dengan mudah.

Kiriman terbaru