FacebookTwitterGoogle+
Trigger ketika update atau delete (dalam tutorial ini bukan delete yang sebenarnya,
tetapi merubah status artikel) data :
1 CREATE TRIGGER `after_update_artikel`
2 AFTER UPDATE ON `tb_artikel` FOR EACH ROW
3 BEGIN
4 IF NEW.status THEN
5 SET @tipe= 'DELETE';
6 ELSE
7 SET @tipe= 'UPDATE';
8 END IF;
9
10 INSERT INTO tb_artikel_log (id, perubahan) VALUES (NEW.id, @tipe);
11 END
Supaya lebih mudah memasukkan data, sekaligus melihat data yang tersimpan dan log
dari perubahan data, akan lebih baik jika membuat satu halaman untuk melihatnya.
Pertama buat file untuk koneksi ke database (db.php)
1 <?php
2
3 define('DB_HOST', 'localhost');
4 define('DB_USER', 'root');
5 define('DB_PASS', '');
6 define('DB_NAME', 'db_belajar');
7
8 function connect() {
9 $connect = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
10
11 if (mysqli_connect_errno($connect)) {
12 die("Failed to connect:" . mysqli_connect_error());
13 }
14
15 mysqli_set_charset($connect, "utf8");
16
17 return $connect;
18 }
19
20 ?>
Kemudian buat file untuk Create, Read, Update, Delete data (contoh_trigger.php) :
1 <?php
2 error_reporting(0);
3 include "db.php";
4 $connect = connect();
5 if (!empty($_POST)) {
6 if (empty($_GET['act'])) {
7 $query = "INSERT INTO tb_artikel(judul,artikel) VALUES('" . $_POST['judul'] . "','" . $_POST['artikel'] . "')";
8 mysqli_query($connect, $query);
9 } else {
10 $query = "UPDATE tb_artikel SET judul = '" . $_POST['judul'] . "', artikel = '" . $_POST['artikel'] . "' WHERE id = '" . $_GET['id'] .
11 "'";
12 mysqli_query($connect, $query);
13 }
14 } else {
15 switch ($_GET['act']) {
16 case "update" :
17 $query = "SELECT * FROM tb_artikel WHERE id = '" . $_GET['id'] . "'";
18 $result = mysqli_query($connect, $query);
19 $row = mysqli_fetch_assoc($result);
20 break;
21 case "delete" :
22 $query = "UPDATE tb_artikel SET status = '1' WHERE id = '" . $_GET['id'] . "'";
23 mysqli_query($connect, $query);
24 break;
25 }
26 }
27 ?>
28 <!DOCTYPE html>
29 <head lang="en">
30 <meta charset="utf-8">
31 <title>Contoh Trigger MySQL </title>
32 <style>
33 .data th , .data td {
34 border: 1px solid grey;
35 border-collapse: collapse;
36 padding: 5px;
37 }
38 .data tr:nth-child(odd) {
39 background-color: #f2f2f2;
40 }
41 .data tr:nth-child(even) {
42 background-color: #ffffff;
43 }
44 </style>
45 </head>
46 <body>
47 <h2>Masukkan Data</h2>
48 <form action="" method="post" name="inputdata">
49 <table border="0">
50 <tr>
51 <td>Judul</td>
52 <td><input type="text" name="judul" value="<?= $row['judul'] ?>" /></td>
53 </tr>
54 <tr>
55 <td>Artikel</td>
56 <td><textarea name="artikel"><?= $row['artikel'] ?></textarea></td>
57 </tr>
58 <tr>
59 <td></td>
60 <td><input type="submit" value="Simpan" name="simpan"></td>
61 </tr>
62 </table>
63 </form>
64 <br />
65 <h2>Daftar Artikel</h2>
66 <table class="data" cellspacing="0" cellpadding="0">
67 <tr>
68 <th>Judul</th>
69 <th>Action</th>
70 </tr>
71 <?php
72 $sql = "SELECT * FROM tb_artikel WHERE status is null";
73 if ($result = mysqli_query($connect, $sql)) {
74 while ($row = mysqli_fetch_assoc($result)) {
75 ?>
76 <tr>
77 <td><?= $row['judul'] ?></td>
78 <td>[<a href="contoh_trigger.php?act=update&id=<?= $row['id'] ?>">update</a>] [<a
79 href="contoh_trigger.php?act=delete&id=<?= $row['id'] ?>">delete</a>]</td>
80 </tr>
81 <?php
82 }
83 }
84 ?>
85 </table>
86 <br />
87 <h2>Log Artikel</h2>
88 <table class="data" cellspacing="0" cellpadding="0">
89 <tr>
90 <th>Tanggal</th>
91 <th>Judul</th>
92 <th>Action</th>
93 </tr>
94 <?php
95 $sql = "SELECT t1.*, t2.judul FROM tb_artikel_log AS t1 JOIN tb_artikel AS t2 ON t1.id = t2.id ORDER BY t1.log_id DESC";
96 if ($result = mysqli_query($connect, $sql)) {
97 while ($row = mysqli_fetch_assoc($result)) {
98 ?>
99 <tr>
100 <td><?= $row['waktu'] ?></td>
101 <td><?= $row['judul'] ?></td>
102 <td><?= $row['perubahan'] ?></td>
103 </tr>
104 <?php
105 }
106 }
107 ?>
108 </table>
</body>
</html>
MySQL adalah database paling populer untuk membangun website, untuk panduan
lengkapnya bisa cek di Cara Membuat Database di MySQL.