Pencarian

Senin, 24 November 2008

Membuat buku tamu dengan php dan MySql

Yupz… setelah kamu bisa membuat koneksi ke database MySql dengan php, maka kita lanjut ke tutorial membuat buku tamu, tutorial ini hanya untuk pemula jadi bagi yang udah master mungkin agak membosankan atau malah sangat membosankan dan silahkan ditutup aj deh.
Dari pada berbasa-basa eh berbasa basi mari kita mulai :
Pertama kamu harus membuat database dengan nama db_study

Lalu membuat satu tabel dengan nama tb_bukutamu dengan field sbb

Set id menjadi primary key dan auto_increment
Atau lengkapnya seperti ini :

CREATE TABLE IF NOT EXISTS `tb_bukutamu` (

`id` int(10) NOT NULL auto_increment,

`nama` varchar(255) NOT NULL,

`email` varchar(255) NOT NULL,

`komentar` longtext NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
Next step, membuat file index.php
Kurang lebihnya sepert ini :

<?php
$alert = $_GET['alert'];
echo "<em><font color=red>$alert</font></em>";
?>
<!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=iso-8859-1" />
<title>Buku tamu</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="proses.php">
<table width="638" border="0">
<tr>
<td width="63">Nama</td>
<td width="559">
<input name="nama" type="text" id="nama" /></td>
</tr>
<tr>
<td>Email</td>
<td>
<input name="email" type="text" id="email" /></td>
</tr>
<tr>
<td>Komentar</td>
<td>
<textarea name="komentar" cols="35" rows="3" id="komentar"></textarea></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="Submit" value="Kirim" />
<input type="reset" name="Submit2" value="Batal" /></td>
</tr>
</table>
<br><a href=lihat.php>Lihat komentar</a>
</form>
</body>
</html>
yang perlu diperhatikan dari coding diatas adalah antara lain <method=:POST action=proses.php> yang artinya kita menggunakan methode POST dalam pengiriman data yang kita arahkan ke proses.php bila user menekan tombol kirim. lalu setelah itu ada <input name=nama >. Nah, ini adalah sebuah variabel yang kita kirimkan melalui method post, variabel ini akan berisikan text yang di isi oleh user pada text field nama.
Kamu bisa membuatnya jauh lebih cantik seperti yang kamu inginkan tapi untuk input name nya jangan di ubah karena akan berhubungan dengan form proses.php seperti yang saya jelaskan diatas.
Nah, kalo kamu bingung kenapa di baris paling atas ada coding php nya nanti kita bahas lebih lanjut ok.
So, lanjut ke file proses.php


<?php
$koneksi = mysql_connect("localhost","root","");
$database = mysql_select_db ("db_study");
if (!$koneksi || !$database)
{
echo " Database belom bisa konek ne<br>
mau nyiimpan kemana bos";
}
$nama = strip_tags(htmlentities($_POST['nama']));
$email = strip_tags(htmlentities($_POST['email']));
$komentar = strip_tags(htmlentities($_POST['komentar']));
$polaemail = "^.+@.+\..+$";
if ($nama == "" || $email == "" || $komentar == "")
{
header("location:./index.php?alert=Di isi dulu dunk");
exit;
}
if(!eregi($polaemail, $email))
{
header("location:./index.php?alert=Pola email ndak bener neh");
exit;
}
$query = mysql_query("insert into tb_bukutamu (nama,email,komentar)
values ('$nama','$email','$komentar')");
if ($query)
{
header("location:./lihat.php");
exit;
}
else
{
Echo “ Maaf, ada kesalahan neh “;
exit;
}
?>

Yups, mari kita bahas dulu coding di atas one by one,
Pertama-tama kita butuh koneksi ke database MySql maka codingnya jadi seperti :
$koneksi = mysql_connect("localhost","root","");
$database = mysql_select_db ("db_study");
if (!$koneksi || !$database)
{
echo " Database belom bisa konek ne<br>
mau nyiimpan kemana bos"; }
Setelah koneksi sukses maka kita perlu sebuah variabel untuk menangkap kiriman hasil post karena metode (method) yang kita gunakan di file index.php adalah POST(method="post" lihat di file index.php) maka jadinya :
$nama = strip_tags(htmlentities($_POST['nama']));
$email = strip_tags(htmlentities($_POST['email']));
$komentar = strip_tags(htmlentities($_POST['komentar']));
$polaemail = "^.+@.+\..+$";
Perintah di atas adalah memasukkan nilai post atau data yang user input ke dalam variabel yang telah kita buat. Seperti variabel $nama berarti variabel yang gunanya untuk menangkap nama yang di inputkan oleh user, lalu $email dan $komentar gitu juga, lalu $polaemail gunanya apa ?? ntar kita bahas yow.
(* Sebenernya $nama = $_POST[‘nama’]; juga sudah bisa di gunakan untuk menangkap post data tapi kita tambahkan fungsi strip_tags dan htmlentities. Fungsi tersebut berguna untuk menghindari Sql injection, php injection atau bahasa mudahnya agar user tidak bisa memasukkan perintah2 Sql, PHP atau html pada text field nama, email dan komentar.
Coba anda bayangkan jika user memasukkan <? Echo “<font size=10>Woiiiiii</font> di text field nama, dan data tersebut langsung kita simpan ke database tanpa di filter terlebih dahulu, lalu ketika file tersebut kita tampilkan di halaman lihat.php maka kata Woiiiiiii akan menjadi besar sesuai dengan fontnya yaitu 10, bisa kacau tuh, apalagi jika user mamasukkan perintah php lainnya seperti menghapus data dlll, waduh tambah gawat tuh. Maka dari itulah kita memerlukan filterisasi. *)


Lanjut ke perintah berikutnya,
if ($nama == "" || $email == "" || $komentar == "")
{
header("location:./index.php?alert=Di isi dulu dunk");
exit;
}
Kondisi diatas dapat kita jelaskan gini “Jika nama atau email atau komentar yang di masukkan user adalah kosong maka dengan senang hati kita antar user kembali ke halaman index.php. Dan alert adalah sebuah variabel luar yang kita kirimkan yang gunanya untuk menampilkan pesan mengapa user di antar kembali ke halaman index.php tersebut. Nah masih ingat dengan perintah php yang terdapat di atas halaman index.php

<?php

$alert = $_GET['alert'];
If($alert)
{
echo "<em><font color=red>$alert</font></em>";
}
?>

Nah, ini dia perintah untuk menangkap variabel luar yang kita kirim tadi lalu di tampilkan di halaman index.php (“ tapi sebaiknya variabel luar nggak usah dipake, kabarnya sih berbahaya, nanti aja deh kita cari tau koq bisa berbahaya”).

Lanjut lagi ke,
if(!eregi($polaemail, $email))
{
header("location:./index.php?alert=Pola email ndak bener neh");
exit;
}
Fungsi eregi yang kita pakai adalah untuk mencocokkan, jadi gini “ jika $email tidak sama (!) dengan $polaemail maka silahkan ke halaman index.php bersama dengan pesan alertnya.

Untuk membuat pola email kamu bisa melihat tabel berikut :



















































Pola

kode

Harus di awal kata

^

Huruf

A-Za-z

Angka

0-9

Huruf atau angka

[A-Za-z0-9]

Semua jenis karakter

.

Berjumlah satu atau lebih

+ atau {1,}

Berjumlah nol atau lebih

* atau {0,}

Berjumlah tiga sampai sepuluh

{3,10}

Diikuti dengan @

@

Tanda titik

\.

Harus berada di akhir kalimat

$


untuk membuat pola email, harus sebaris contohnya sebagai berikut :

$polaEmail = "^.+@.+\..+$";
Jadi pola email yang harus dimasukkan adalah satu atau lebih huruf/angka, diikuti tanda @ kemudian diikuti dengan satu atau lebih huruf/angka, dipisahkan oleh tanda titik, lalu diakhiri dengan satu atau lebih huruf/angka.
contohnya : logic.cjbi@gmail.com

lanjut lagi,
$query = mysql_query("insert into tb_bukutamu (nama,email,komentar)
values ('$nama','$email','$komentar')");

Perintah diatas adalah perintah untuk memasukkan atau menyimpan ke dalam tb_bukutamu yang sudah kita siapkan sebelumnya, gue jelasin satu-satu ya :
mysql_query adalah perintah/fungsi php untuk mengakses query MySql lalu
insert into adalah perintah sql untuk memasukkan atau input data
tb_buku tamu adalah nama tabel yang sudah kita buat
(nama,email,komentar) adalah nama field didalam tabel kita

Kita tidak perlu lagi mendefinisikan kolom id, karena kolom id sudah kita set menjadi auto_increment yang artinya begitu ada data yang masuk maka secara otomatis Mysql akan memberi nilai 1 pada kolom id dan akan menambahnya dengan 1 bila ada data baru dimasukkan.
Values adalah isi
('$nama','$email','$komentar')"); adalah variabel yang berisi hasil tangkapan dari post.

Lalu yang terakhir :
if ($query)

{
header("location:./lihat.php");
}
else
{
Echo “ Maaf, ada kesalahan neh “;
}
Sebuah kondisi dimana jika $query berhasil dijalankan maka user langsung kita ajak menuju halaman lihat.php, jika tidak maka akan keluar pesan kesalahan.
Jadi gue simpulin dikit, header(“location:./namafile”); adalah sebuah fungsi untuk melanjutkan, mengantar, melempar atau halusnya berpindah ke halaman yang kita inginkan, dan dalam kasus diatas adalah halaman lihat.php.

Wuuuhhhh….. lanjut lagi ke file lihat.php

<?php
$koneksi = mysql_connect("localhost","root","");
$database = mysql_select_db ("db_study");
if (!$koneksi || !$database)
{
echo " Database belom bisa konek ne ";
}
$query = mysql_query("select *from tb_bukutamu order by id desc");
while ($lihat = mysql_fetch_array($query))
{
echo "<table width=238 border=0>
<tr>
<td width=62>Nama</td>
<td width=122>$lihat[nama]</td>
</tr>
<tr>
<td>Email</td>
<td>$lihat[email]</td>
</tr>
<tr>
<td>Komentar</td>
<td>$lihat[komentar]</td>
</tr>

</table>";

echo "<br><hr>";

}

?>
<a href=index.php> Masukan komentar</a>


Nah, setelah data tersimpan, maka kita perlu memperlihatkan data yang tersimpan tadi
Lalu caranya ???? gini, setelah koneksi berhasil, ada perintah :
$query =select *from tb_bukutamu order by id desc
artinya adalah isi variabel query ($query) dengan nilai query seperti ini : mengambil semua data dari tb_bukutamu sekalian juga urutkan data tersebut berdasarkan id yang paling terakhir.
Lanjut, setelah $query berisi nilai diatas maka kita lanjut ke perintah untuk menampilkan:
while ($lihat = mysql_fetch_array($query))


while adalah pengulangan
$lihat = mysql_fetch_array($query) artinya isi variabel lihat dengan perintah untuk menampilkan dan jumlah $querynya
while ($lihat = mysql_fetch_array($query)) jadi kalo nggak bener artinya gini, ulangi sebanyak variabel query atau jumlah data yang ada di dalam query.


Lalu,
echo "<table width=238 border=0>
<tr>
<td width=62>Nama</td>
<td width=122>$lihat[nama]</td>
</tr>
<tr>
<td>Email</td>
<td>$lihat[email]</td>
</tr>
<tr>
<td>Komentar</td>
<td>$lihat[komentar]</td>
</tr>
</table>";
echo "<br><hr>";
ini adalah coding untuk membuat tabel biasa, lalu ada perintah $lihat[nama], yang artinya tampilkan data yang ada di kolom/field nama yang ada di tabel, dan $lihat[email], $lihat[komentar] juga sama.
Trus, koq ada coding <a href=index.php> Masukan komentar</a>…????
Ahhhh, itukan Cuma coding untuk membuat link biasa, masa nggak tau juga sih…!!!!!

Huuhhhh…. Akhirnya selesei juga tutorial yang sederhana, sangat sederhana atau malah sangat-sangat sederhana ini. Buku tamu yang saya buat di atas tentu saja masih jauh dari cukup bila untuk ukuran buku tamu online, kamu bisa mengembangkannya dengan menambahkan capcha ( anti spam) dan lain sebagainya.


Mudah-mudahan ada manfaatnya buat pemirsa sekalian dan kalo masih bingung juga silahakan email ke a3m.nix@gmail.com atau ym : a3m_cuyyy.
KEEP SHARE YA …

2 komentar:

  1. Terimakasih pak.. hehehe... nambah dikit masalah alert dan ereg..

    BalasHapus
  2. Makasih informasinya mas, sangat berguna sekali bagi saya.
    Silahkan mampir dulu ke situs kami obatkatarak.utamakansehat.com

    BalasHapus