Membuat Fasilitas Buku Tamu Dengan PHP
Membuat Fasilitas Buku Tamu Dengan PHP
Membuat Fasilitas Buku Tamu Dengan PHP
Written by Fatoni
Membuat Fasilitas Buku Tamu dengan PHP, MySQLi dan Bootstrap. Bagi sobat
tutorialweb yang aktif baca tutorial di sini pasti sudah tahu kalau dulu sudah pernah ada tulisan
tentang bagaimana cara membuat buku tamu dengan PHP dan MySQL. Nah, sekarang ini ada
tutorial yang sama tentang buku tamu, bedanya sekarang lebih update aja dalam hal template
yang menggunakan bootstrap, dan query yang menggunakan MySQLi dan tentu saja
menggunakan PHP untuk bahasa pemrogramannya.
Disini nanti akan dijelaskan bagaimana membuat fasilitas buku tamu atau bahasa kerennya
guestbook di dalam website sobat, dimana nanti akan ada form untuk pengisian buku tamu,
kemudian di bawah form tersebut akan menampilkan 5 tulisan buku tamu terakhir, dan juga ada
menu di navbar untuk melihat semua isi buku tamu yang pernah di tulis oleh pengunjung website
sobat.
Sebelum dimulai, ada gambar di bawah ini bagaimana struktur folder yang nantinya akan sobat
buat.
Persiapan
Pertama karena ini menggunakan framework bootstrap, maka silahkan download dahulu di
website resminya. Bisa klik disini untuk menuju download link.
Setelah di download sobat akan mendapat sebuah file dengan extensi .zip, silahkan di ekstrak
dahulu.
Sekarang sudah ada kan sebuah folder, di dalamnya ada 3 buah folder seperti gambar di atas tadi
(css, fonts, js) 3 folder ini yang dibutuhkan. Silahkan buat folder baru di htdocs (jika
menggunakan xampp) atau di folder www (jika menggunakan appserv).
Database
Setelah itu langsung kita masuk dulu ke bagian database. Buat sebuah database baru,
misal tutorialweb. Kemudian masuk menu SQL dan jalankan query di bawah ini:
SQL
MySQL
1 CREATE TABLE `bukutamu` (
2 `id` int(11) NOT NULL,
3 `tanggal` date NOT NULL,
4 `nama` varchar(50) NOT NULL,
5 `email` varchar(50) NOT NULL,
6 `website` varchar(50) NOT NULL,
7 `judul` varchar(50) NOT NULL,
8 `pesan` text NOT NULL
9 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Jika sudah sobah akan mendapakan beberapa tabel seperti gambar di bawah ini:
Koneksi ke Database
Lanjut kita buat koneksi ke databasenya, koneksi menggunakan mysqli ya sob. soalnya kalau
masih pakek mysql sudah tidak support lagi.
config.php
PHP
1 <?php
2 //mengabaikan pesan Notice
3 error_reporting(E_ALL ^ (E_NOTICE));
4
5 //melakukan koneksi ke database dengan MySQLi
6 $koneksi = new mysqli("localhost", "root", "", "tutorialweb");
7 if($koneksi->connect_errno) {
8 echo "Gagal melakukan koneksi ke MySQL: " . $koneksi->connect_error;
9 }
10 ?>
Jangan lupa disimpan ya..
digunakan untuk mengabaikan pesan kesalahan Notice. Pesan ini bisa di abaikan saja
Buat file baru dengan nama index.php dan ketikkan script di bawah ini:
index.php
1 <?php
2 include("config.php");
3 ?>
4 <!DOCTYPE html>
5 <html lang="en">
6 <head>
7 <meta charset="utf-8">
8 <meta http-equiv="X-UA-Compatible" content="IE=edge">
9 <meta name="viewport" content="width=device-width, initial-scale=1">
10 <title>Buku Tamu || Tutorialweb.net</title>
11
12 <link href="css/bootstrap.min.css" rel="stylesheet">
13
14 <!--[if lt IE 9]>
15 <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
16 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
17 <![endif]-->
18 </head>
19 <body>
20 <nav class="navbar navbar-default navbar-fixed-top">
21 <div class="container">
22 <div class="navbar-header">
23 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-
24 collapse-1" aria-expanded="false">
25 <span class="sr-only">Toggle navigation</span>
26 <span class="icon-bar"></span>
27 <span class="icon-bar"></span>
28 <span class="icon-bar"></span>
29 </button>
30 <a class="navbar-brand" href="#">TUTORIALWEB</a>
31 </div>
32 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
33 <ul class="nav navbar-nav">
34 <li class="active"><a href="index.php">Beranda</a></li>
35 <li><a href="data.php">Data Buku Tamu</a></li>
36 <li class="dropdown">
37 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-
38 expanded="false">Dropdown <span class="caret"></span></a>
39 <ul class="dropdown-menu">
40 <li><a href="#">Action</a></li>
41 <li><a href="#">Another action</a></li>
42 <li><a href="#">Something else here</a></li>
43 <li role="separator" class="divider"></li>
44 <li><a href="#">Separated link</a></li>
45 <li role="separator" class="divider"></li>
46 <li><a href="#">One more separated link</a></li>
47 </ul>
48 </li>
49 </ul>
50 </div>
51 </div>
52 </nav>
53
54 <div class="container" style="margin-top: 50px">
55 <h1>Tulis Buku Tamu!</h1>
56 <hr />
57
58 <form class="form-horizontal" method="post" action="index.php">
59 <div class="form-group">
60 <label class="col-sm-2 control-label">NAMA LENGKAP</label>
61 <div class="col-sm-4">
62 <input type="text" name="nama" class="form-control" placeholder="Tutorialweb" required>
63 </div>
64 </div>
65 <div class="form-group">
66 <label class="col-sm-2 control-label">EMAIL</label>
67 <div class="col-sm-4">
68 <input type="email" name="email" class="form-control" placeholder="support@tutorialweb.net" required>
69 </div>
70 </div>
71 <div class="form-group">
72 <label class="col-sm-2 control-label">WEBSITE</label>
73 <div class="col-sm-4">
74 <input type="url" name="website" class="form-control" placeholder="http://tutorialweb.net">
75 </div>
76 </div>
77 <div class="form-group">
78 <label class="col-sm-2 control-label">JUDUL PESAN</label>
79 <div class="col-sm-6">
80 <input type="text" name="judul" class="form-control" placeholder="Senang banget dengan tutorialweb.net"
81 required>
82 </div>
83 </div>
84 <div class="form-group">
85 <label class="col-sm-2 control-label">ISI PESAN</label>
86 <div class="col-sm-8">
87 <textarea name="pesan" class="form-control" placeholder="Hai, saya sangat senang dengan tutorial yang ada
88 di tutorialweb.net. Terima kasih." required></textarea>
89 </div>
90 </div>
91 <div class="form-group">
92 <label class="col-sm-2 control-label"></label>
93 <div class="col-sm-8">
94 <input type="submit" name="submit" class="btn btn-primary" value="KIRIM PESAN">
95 </div>
96 </div>
97 </form>
98
99 <?php
100 //definisikan variabel untuk tiap-tiap inputan
101 $nama = $koneksi->real_escape_string($_POST['nama']);
102 $email = $koneksi->real_escape_string($_POST['email']);
103 $web = $koneksi->real_escape_string($_POST['website']);
104 $judul = $koneksi->real_escape_string($_POST['judul']);
105 $pesan = $koneksi->real_escape_string($_POST['pesan']);
106 $tanggal = date('Y-m-d');
107
108 //jika di klik tombol kirim pesan menjalankan script di bawah ini
109 if($_POST['submit']){
110 $input = $koneksi->query("INSERT INTO
111 bukutamu(tanggal,nama,email,website,judul,pesan) VALUES('$tanggal','$nama','$email','$web','$judul','$pesan')") or
112 die($koneksi->error);
113 if($input){
114 echo '<div class="alert alert-success">Pesan anda berhasil di simpan!</div>';
115 }else{
116 echo '<div class="alert alert-warning">Gagal menyimpan pesan!</div>';
117 }
118 }
119 ?>
120
121 <hr />
122 <h2>5 Buku tamu terakhir</h2>
123
124 <?php
125 //menampilkan 5 buku tamu terbaru
126 $res = $koneksi->query("SELECT * FROM bukutamu ORDER BY id DESC LIMIT 5") or
127 die($koneksi->error);
128
129 if($res->num_rows){
130 while($row = $res->fetch_assoc()){
131 echo '
132 <table class="table table-condensed table-striped">
133 <tr>
134 <th width="150">TANGGAL TULIS</th>
135 <th width="10">:</th>
136 <td>'.$row['tanggal'].'</td>
137 </tr>
138 <tr>
139 <th width="150">NAMA LENGKAP</th>
140 <th width="10">:</th>
141 <td>'.$row['nama'].'</td>
142 </tr>
143 <tr>
144 <th>EMAIL</th>
145 <th>:</th>
146 <td>'.$row['email'].'</td>
147 </tr>
148 <tr>
149 <th>WEBSITE</th>
150 <th>:</th>
151 <td>'.$row['website'].'</td>
152 </tr>
153 <tr>
154 <th>JUDUL PESAN</th>
155 <th>:</th>
156 <td>'.$row['judul'].'</td>
157 </tr>
158 <tr>
159 <th>ISI PESAN</th>
160 <th>:</th>
161 <td>'.$row['pesan'].'</td>
162 </tr>
163 </table>
164 ';
165 }
166 }else{
167 echo 'Belum ada data buku tamu';
168 }
169
170 ?>
<p><a class="btn btn-primary btn-sm" href="data.php">Lihat semua data</a></p>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Disimpan ya, jangan sampai lupa.
data.php
1 <?php
2 include("config.php");
3 ?>
4 <!DOCTYPE html>
5 <html lang="en">
6 <head>
7 <meta charset="utf-8">
8 <meta http-equiv="X-UA-Compatible" content="IE=edge">
9 <meta name="viewport" content="width=device-width, initial-scale=1">
10 <title>Buku Tamu || Tutorialweb.net</title>
11
12 <link href="css/bootstrap.min.css" rel="stylesheet">
13
14 <!--[if lt IE 9]>
15 <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
16 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
17 <![endif]-->
18 </head>
19 <body>
20 <nav class="navbar navbar-default navbar-fixed-top">
21 <div class="container">
22 <div class="navbar-header">
23 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-
24 collapse-1" aria-expanded="false">
25 <span class="sr-only">Toggle navigation</span>
26 <span class="icon-bar"></span>
27 <span class="icon-bar"></span>
28 <span class="icon-bar"></span>
29 </button>
30 <a class="navbar-brand" href="#">TUTORIALWEB</a>
31 </div>
32 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
33 <ul class="nav navbar-nav">
34 <li><a href="index.php">Beranda</a></li>
35 <li class="active"><a href="data.php">Data Buku Tamu</a></li>
36 <li class="dropdown">
37 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-
38 expanded="false">Dropdown <span class="caret"></span></a>
39 <ul class="dropdown-menu">
40 <li><a href="#">Action</a></li>
41 <li><a href="#">Another action</a></li>
42 <li><a href="#">Something else here</a></li>
43 <li role="separator" class="divider"></li>
44 <li><a href="#">Separated link</a></li>
45 <li role="separator" class="divider"></li>
46 <li><a href="#">One more separated link</a></li>
47 </ul>
48 </li>
49 </ul>
50 </div>
51 </div>
52 </nav>
53
54 <div class="container" style="margin-top: 50px">
55 <h1>Data Buku Tamu!</h1>
56 <hr />
57 <?php
58 //menampilkan data buku tamu
59 $res = $koneksi->query("SELECT * FROM bukutamu ORDER BY id DESC") or die($koneksi-
60 >error);
61
62 if($res->num_rows){
63 while($row = $res->fetch_assoc()){
64 echo '
65 <table class="table table-condensed table-striped">
66 <tr>
67 <th width="150">TANGGAL TULIS</th>
68 <th width="10">:</th>
69 <td>'.$row['tanggal'].'</td>
70 </tr>
71 <tr>
72 <th width="150">NAMA LENGKAP</th>
73 <th width="10">:</th>
74 <td>'.$row['nama'].'</td>
75 </tr>
76 <tr>
77 <th>EMAIL</th>
78 <th>:</th>
79 <td>'.$row['email'].'</td>
80 </tr>
81 <tr>
82 <th>WEBSITE</th>
83 <th>:</th>
84 <td>'.$row['website'].'</td>
85 </tr>
86 <tr>
87 <th>JUDUL PESAN</th>
88 <th>:</th>
89 <td>'.$row['judul'].'</td>
90 </tr>
91 <tr>
92 <th>ISI PESAN</th>
93 <th>:</th>
94 <td>'.$row['pesan'].'</td>
95 </tr>
96 </table>
97 ';
98 }
99 }else{
100 echo 'Belum ada data buku tamu';
101 }
102
103 ?>
104 </div>
105
106 <script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Silahkan disimpan. Isinya tidak jauh beda dengan file sebelumnya. Jadi akan saya jelaskan
sedikit biar sobat gak bingung.
Baris ke 2 : sama yaitu untuk memasukkan file config.php agar bisa terhubung ke database
Baris ke 57 : query mysqli untuk mendapatkan data dari database dengan urut id paling besar
dahulu
Baris 59 : jika data dari query baris ke 57 ada datanya, maka akan menjalankan baris ke 60 95
Baris 60 : perulangan while untuk menampilkan data dari query baris ke 57
Baris 61 94 : menampilkan data dari perulangan baris ke 60, dan ditampilkan dengan table
bootstrap
Baris 96 : jika dari query baris ke 57 tidak ditemukan data di database, maka menampilkan pesan
di baris 97
Selesai
Saya rasa cukup untuk tutorial membuat buku tamu atau guestbook dengan PHP, MySQLi dan
Bootstrap ini, semoga bisa membantu buat sobat-sobat yang lagi belajar dalam pemrograman
PHP.