Input, edit dan delete ( Pengolahan data )

Tampilan data siswa yang telah dibuat yaitu (file : tampildata.php), akan dimodifikasi menjadi seperti gambar dibawah ini :

Disini tampilan data siswa ditambahkan kolom “Action” untuk menempatkan tombol “Edit” dan “Hapus”. Ketika pengguna menekan tombol “Edit”, maka pengguna akan langsung dialihkan (redirect) ke halaman yang berisi form untuk mengubah data siswa (file : editdata.php). Jika pengguna menekan tombol “Hapus“, jendela konfirmasi akan keluar untuk memastikan mengenai data siswa yang akan dihapus. Berikut tampilan jendela konfirmasi tersebut :

Penghapusan akan dilakukan jika pengguna menekan tombol “OK” pada jendela konfirmasi. Kode penghapusan data akan diletakkan di halaman php yang berbeda, yaitu pada halaman “hapusdata.php‘. Untuk lebih jelasnya, berikut ini adalah contoh kode pada halaman tampildata.php yang telah dimodifikasi dan file fungsi.php:
Source Code File : tampildata.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
include("koneksidb.php");
include("fungsi.php");
 
if($_POST['btnaction'] == "Edit")
{
   $nim = $_POST['nim'];
   $page = "editdata.php?nim=".$nim;
   echo redirectPage($page);
}
?>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>PHP Dasar 3 - Koneksi Database MySQL dan Menampilkan Data</title>
   <script type="text/javascript">
   function konfirmasiHapus(nim,nama)
   {
      var nim = nim;
      var nama = nama;
      var jawab;
 
      jawab = confirm("Apakah data '"+nama+"' akan dihapus ?")
      if(jawab)
      {
         window.location = "hapusdata.php?nim="+nim;
         return false;
      }else{
         alert("Penghapusan data dibatalkan");
      }
   }
   </script>
</head>
<body>
   <table border="1" align="center">
   <tr>
      <th>Nim</th>
      <th>Nama</th>
      <th>Tgl Lahir</th>
      <th>Status</th>
      <th>Action</th>
   </tr>
      <?php
         $sql = "SELECT nim, nama, tgllahir, status FROM siswa";
         $hasil = mysql_query($sql);
         if(mysql_num_rows($hasil) > 0)
         {
            while($data = mysql_fetch_array($hasil))
            {
               echo"<tr>";
               echo"<td>".$data['nim']."</td>";
               echo"<td>".$data['nama']."</td>";
               echo"<td>".$data['tgllahir']."</td>";
               echo"<td>".$data['status']."</td>";
               echo"<td>";
                  echo"<form action='' method='post'>";
                     echo"<input type='hidden' name='nim' value='".$data['nim']."'>";
                     echo"<input type='submit' name='btnaction' value='Edit'>";
                     echo"<input type='submit' name='btnaction' onclick=\"return konfirmasiHapus('".$data['nim']."','".$data['nama']."');\" value='Hapus'>";
                  echo"</form>";
               echo"</td>";
               echo"</tr>";
           }
       }else{
            echo"<tr>";
            echo"<td>Data Belum Ada</td>";
            echo"</tr>";
       }
?>
</table>
</body>
</html>
Berikut ini adalah penjelasan kode yang ditambahkan pada halaman tampildata.php :
Baris 3 : Mengikut sertakan file “fungsi.php” yang berisi fungsi redirectPage($page). Fungsi ini berfungsi untuk mengalihkan sebuah halaman menuju ke halaman lain. Pada contoh kode diatas, fungsi ini akan mengalihkan halaman “tampildata.php” ke halaman “editdata.php” ketika pengguna menekan tombol “Edit”. Hal ini bisa dilihat pada baris ke 7 – 8.
Baris 7 – 9 : Fungsi redirect ini lebih banyak digunakan pada saat fungsi header(Location:lokasi.php) tidak berfungsi.
Baris 5 : Memastikan bahwa tombol yang ditekan oleh pengguna adalah tombol “Edit”. Hal ini bisa dilihat bahwa name dari tombol “Edit” adalah “btnaction” (Lihat baris 58).
Baris 16 – 32 : Fungsi JavaScript untuk menampilkan jendela konfirmasi ketika pengguna menekan tombol “Hapus”. Fungsi ini memiliki 2 parameter, yaitu nim dan nama. Parameter ini di set ketika dipanggil pada baris : 59. Pada baris 26 terlihat bahwa jika pengguna menekan tombol “OK” pada jendela konfirmasi maka halaman akan dialihkan ke halaman hapusdata.php dengan membawa variabel nim.
Baris 57 : Membuat variabel tersebunyi (hidden) bernama nim untuk dikirim dengan method POST ketika pengguna menekan tombol “Edit”. nim ini akan ditangkap nilainya pada baris 7.
Baris 58 – 59 : Kode untuk menampilkan tombol “‘Edit” dan “Hapus”.
Source Code File : fungsi.php
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function redirectPage ($page) {
   $newpage = "<script type='text/javascript'>";
   $newpage .= "window.location.href='$page';";
   $newpage .= "</script>";
   $newpage .= "<noscript>";
   $newpage .= "<meta http-equiv='refresh' content='0;url=$page'/>";
   $newpage .= "</noscript>";
 
   return $newpage;
}
?>
Penjelasan kode :
Fungsi redirect diatas pada dasarnya fungsi JavaScript (window.location.href) yang dipicu oleh fungsi refresh HTML.

Pembuatan Kode Halaman Hapus Data

Halaman ini berfungsi untuk menghapus data siswa berdasarkan nim yang dikirim oleh halaman tampildata.php (Lihat kode tampildata.php baris 25). Variabel nim yang dikirim melalui URL akan ditangkap dengan method GET oleh halaman hapusdata.php. Untuk lebih jelasnya, lihat kode halaman hapusdata.php berikut ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
   include("koneksidb.php");
   include("fungsi.php");
 
   $nim = $_GET['nim'];
 
   $sql = "DELETE FROM siswa WHERE nim = '$nim'";
   mysql_query($sql);
   if(mysql_errno() == 0)
   {
      echo"<script>alert('Data berhasil dihapus !');</script>";
      $page = "tampildata.php";
      echo redirectPage($page);
   }else{
      echo"<script>alert('Data gagal dihapus !');</script>";
   }
?>
Penjelasan kode :
Baris 5 : Menangkap nilai dari parameter nim yang dikirim melalui URL (Method GET).
Baris 7 : String SQL Query untuk menghapus data siswa berdasarkan nim.
Baris 9 – 16 : Memastikan bahwa String SQL Query yang dieksekusi berhasil dan tidak ada error. Jika terjadi kesalahan, maka akan muncul pemberitahuan bahwa data gagal dihapus (Lihat baris 15). Dan akan mengalihkan halaman ke halaman tampildata.php jika data berhasil dihapus (Lihat baris 12 – 13).

Pembuatan Kode Halaman Edit Data

Halaman Edit data tampak seperti gambar berikut ini :

Berikut ini adalah contoh kode halaman Edit Data Siswa :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?php
include("koneksidb.php");
 
$nim = $_GET['nim'];
 
if($_POST['btnsimpan'] == "Update")
{
   $nim = $_POST['nim'];
   $nama = $_POST['nama'];
   $tgl = $_POST['tgl']; $bln = $_POST['bln']; $thn = $_POST['thn'];
   $status = $_POST['status'];
 
   $tgllahir = $thn."-".$bln."-".$tgl;
 
   if($nim != "" and $nama != "" and $tgl != "" and $bln != "" and $thn != "")
   {
      $sql = "UPDATE siswa SET nama ='$nama', tgllahir = '$tgllahir', status ='$status' WHERE nim = '$nim'";
      mysql_query($sql);
 
      if(mysql_errno() == 0)
      {
          echo"<script>alert('Data berhasil diupdate !');</script>";
          $page = "tampildata.php";
          echo redirectPage($page);
      }else{
          echo"<script>alert('Data gagal diupdate !');</script>";
      }
   }else{
      echo"<script>alert('Data harus diisi lengkap !');</script>";
   }
}
 
$sqldata = "SELECT * FROM siswa WHERE nim = '$nim'";
$result = mysql_query($sqldata);
if(mysql_num_rows($result) > 0)
{
   while($data = mysql_fetch_array($result))
   {
      $nim = $data['nim'];
      $nama = $data['nama'];
 
      $tgllahir = $data['tgllahir'];
      $arrtgl = explode("-",$tgllahir);
      $tgl = $arrtgl[2]; $bln = $arrtgl[1]; $thn = $arrtgl[0];
 
      $status = $data['status'];
   }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Edit Data Siswa</title>
</head>
<body>
   <table align="center">
   <tr>
      <td>
      <fieldset>
      <legend><strong>[ Edit Data Siswa ]</strong></legend>
      <form action="" method="post">
         <table>
         <tr>
            <td>Nim</td>
            <td>
               <input type="text" name="nim" value="<?php echo"$nim"; ?>" />
            </td>
        </tr>
        <tr>
            <td>Nama</td>
            <td>
               <input type="text" name="nama" value="<?php echo"$nama"; ?>"/>
            </td>
        </tr>
        <tr>
           <td>Tgl Lahir</td>
           <td>
              <select name="tgl">
              <option value="">- Pilih Tgl -</option>
              <?php
                 for($t=1;$t<=31;$t++)
                 {
                    $val_t = str_pad($t,2,'0',STR_PAD_LEFT);
                    echo"<option value='$val_t' ";
                    if($tgl == $val_t)
                    {
                       echo"selected='selected'";
                    }
                    echo">$val_t</option>";
                  }
              ?>
              </select>
              &nbsp;
              <select name="bln">
                 <option value="">- Pilih Bulan -</option>
                 <?php
                    $arrbulan = array('Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','November','Desember');
                    for($b=0;$b<11;$b++)
                    {
                       $val_b = str_pad($b+1,2,'0',STR_PAD_LEFT);
                       echo"<option value='$val_b' ";
                       if($bln == $val_b)
                       {
                          echo"selected='selected'";
                       }
                       echo">$arrbulan[$b]</option>";
                     }
                  ?>
               </select>
               &nbsp;
               <select name="thn">
                  <option value="">- Pilih Tahun -</option>
                  <?php
                     $thn_skrng = date('Y');
                     $thn_mulai = $thn_skrng - 30;
                     $thn_akhir = $thn_skrng - 5;
 
                    for($th=$thn_mulai;$th<=$thn_akhir;$th++)
                    {
                       echo"<option value='$th' ";
                       if($thn == $th)
                       {
                          echo"selected='selected'";
                       }
                       echo">$th</option>";
                     }
                  ?>
                  </select>
             </td>
         </tr>
         <tr>
            <td>Status</td>
            <td>
               <input type="radio" name="status" value="aktif" <?php if($status == "aktif"){echo "checked='checked'";} ?>/> Aktif
               <input type="radio" name="status" value="nonaktif" <?php if($status == "nonaktif"){echo "checked='checked'";} ?>/> Non Aktif
            </td>
         </tr>
         <tr>
            <td colspan="2" align="right">
               <input type="submit" name="btnsimpan" value="Update" />
            </td>
         </tr>
      </table>
     </form>
  </fieldset>
   </td>
</tr>
</table>
</body>
</html>
Penjelasan kode :
Pada dasarnya, kode halaman edit siswa (file : editdata.php), hampir sama dengan tambah siswa (file : tambahdata.php). Perbedaannya ada pada :
Baris 4 : nilai variabel nim yang di kirim melalui URL diterima dengan method GET.
Baris 6 : Memastika pengguna menekan tombol “update”.

Baris 17 :String SQL Query untuk memperbaharui data siswa berdasarkan nim.
Baris 33 – 48 : Kode pada baris ini berfungsi mengambil data dari tabel siswa berdasarkan nim yang diterima pada baris 4. Tanggal lahir yang diambil dari tabel harus dipecah menjadi tanggal, bulan dan tahun. Berguna untuk men-set tanggal, bulan dan tahun pada baris ke 86, 103 dan 122.

Pembuatan Halaman Tambah Data Siswa

Catatan :
Pada contoh kode tambahdata.php belum dilengkapi fungsi validasi dan verifikasi seperti
  1. Pengecekan bahwa Nim hanya boleh angka.
  2. Pengecekan bahwa Nim harus unik (Harus ada pemberitahuan bahwa Nim yang dimasukan sudah ada)
  3. Pengecekan Tgl Lahir bahwa Tanggal, Bulan dan Tahun yang dimasukan adalah benar dan valid. (Contoh : Tidak mungkin ada tanggal 31 di bulan februari).
  4. Jika form tidak diisi lengkap oleh pengguna, tetapi pengguna sudah terlanjur menekan tombol simpan, maka seharusnya data-data yang telah diisi tidak hilang dari form. Sehingga pengguna tidak perlu mengisi kembali seluruh data pada form.
Catatan diatas akan diterapkan pada tutorial selanjutnya. Sesuai dengan struktur data pada tabel siswa, maka halaman tambah data siswa akan tampak seperti pada gambar berikut ini :

Untuk membuat form Tambah Data Siswa seperti pada gambar diatas, buatlah sebuah halaman php dengan nama “tambahdata.php“. Lalu buatlah kode seperti dibawah ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
   include("koneksidb.php");
 
   if($_POST['btnsimpan'] == "Simpan")
   {
      $nim = $_POST['nim'];
      $nama = $_POST['nama'];
      $tgl = $_POST['tgl']; $bln = $_POST['bln']; $thn = $_POST['thn'];
      $status = $_POST['status'];
 
      $tgllahir = $thn."-".$bln."-".$tgl;
 
      if($nim != "" and $nama != "" and $tgl != "" and $bln != "" and $thn != "")
      {
         $sql = "INSERT INTO siswa VALUES('$nim','$nama','$tgllahir','$status')";
         mysql_query($sql);
 
         if(mysql_errno() == 0)
         {
            echo"<script>alert('Data berhasil disimpan !');</script>";
         }else{
            echo"<script>alert('Data gagal disimpan !');</script>";
         }
      }else{
         echo"<script>alert('Data harus diisi lengkap !');</script>";
      }
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Tambah Data Siswa</title>
</head>
<body>
   <table align="center">
   <tr>
      <td>
      <fieldset>
      <legend><strong>[ Tambah Data Siswa ]</strong></legend>
         <form action="" method="post">
         <table>
         <tr>
            <td>Nim</td>
            <td>
               <input type="text" name="nim" />
            </td>
         </tr>
         <tr>
            <td>Nama</td>
            <td>
               <input type="text" name="nama" />
            </td>
         </tr>
         <tr>
            <td>Tgl Lahir</td>
            <td>
               <select name="tgl">
                  <option value="">- Pilih Tgl -</option>
                  <?php
                     for($t=1;$t<=31;$t++)
                     {
                        $val_t = str_pad($t,2,'0',STR_PAD_LEFT);
                        echo"<option value='$val_t'>$val_t</option>";
                     }
                  ?>
               </select>
               &nbsp;
               <select name="bln">
                  <option value="">- Pilih Bulan -</option>
                  <?php
                     $arrbulan = array('Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','November','Desember');
                     for($b=0;$b<11;$b++)
                     {
                        $val_b = str_pad($b+1,2,'0',STR_PAD_LEFT);
                        echo"<option value='$val_b'>$arrbulan[$b]</option>";
                     }
                  ?>
               </select>
               &nbsp;
               <select name="thn">
                  <option value="">- Pilih Tahun -</option>
                  <?php
                     $thn_skrng = date('Y');
                     $thn_mulai = $thn_skrng - 30;
                     $thn_akhir = $thn_skrng - 5;
 
                     for($th=$thn_mulai;$th<=$thn_akhir;$th++)
                     {
                        echo"<option value='$th'>$th</option>";
                     }
                  ?>
                </select>
               </td>
            </tr>
            <tr>
               <td>Status</td>
               <td>
                  <input type="radio" name="status" value="aktif" checked="checked"/> Aktif
                  <input type="radio" name="status" value="nonaktif" /> Non Aktif
               </td>
            </tr>
            <tr>
               <td colspan="2" align="right">
                   <input type="submit" name="btnsimpan" value="Simpan" />
               </td>
            </tr>
         </table>
         </form>
      </fieldset>
      </td>
   </tr>
</table>
</body>
</html>
Penjelasan kode :
Baris 4 : Memastikan bahwa tombol “Simpan” yang memiliki name =’btnsimpan‘ ditekan oleh pengguna.
Baris 6 – 9 : Menangkap semua nilai dari form input seperti nim, nama, tgl, bln, thn dan status yang dikirim dengan method POST.
Baris 11 : Menyusun tgl, bulan dan tahun ke dalam format “tahun-bulan-tanggal” (format standar pada database).
Baris 13 : Memastikan bahwa semua data pada form telah diisi.
Baris 15 : String SQL Query untuk menyimpan data ke dalam tabel siswa.
Baris 18 – 23 : Memastikan bahwa eksekusi String SQL Query berjalan tanpa ada error.
Baris 25 : Peringatan akan muncul jika pengguna tidak mengisi lengkap data pada form.
Baris 58 – 93 : Combo Box untuk tgl, bulan tahun yang harus dipilih sebagai nilai dari tgllahir. Fungsi str_pad(input, pjg_karakter_yg_diharapkan, karakter, tipe_str_pad ) pada baris 63 dan 75 adalah fungsi untuk memberikan tambahan angka “0″ (Lihat parameter ke-3 dari str_pad) pada sebelah kiri (STR_PAD_LEFT) pada sebuah karakter yang tidak memenuhi panjang karakter yang ditentukan pada parameter ke-2 dari str_pad. Pada baris 85 dan 86, terlihat bahwa tahun yang akan ditampilkan pada combo box tahun adalah 30 tahun dari tahun sekarang hingga 5 tahun kedepan dari tahun sekarang.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar