Membuat Bukutamu dengan PHP dan MySQL (Pra Advance)
Oleh : Adi Sumaryadi
Walaupun banyak orang yang bilang bahwa jika sebuah website
mempunyai bukutamu itu membutuhkan pengakuan dari pengunjung, tapi saya
kali ini sambil menunggu nasi mateng akan coba berbagi, mudah-mudahan
bermanfaat bagi pembaca semua. Kali ini akan membahas bagaimana membuat
bukutamu, namun kita akan buat bukutamu sebagai modul yang siap
diintegrasikan dengan modul-modul lain yang kita buat, bertahap, kita
pertama buat modul bukutamu terlebih dahulu, silahkan baca selengkapnya
saja.
Ok, kita mulai, saya anggap teman-teman sudah berhasil
menginstall Webserver menggunakan Apache atau yang lainnya. ada
beberapa langkah yang harus dilakukan. Oh iya, saya kali ini membuat
dalam PHP 4.4 dan MySQL 5.
Membuat Database Bukutamu
Tentunya
sebelum kita membuat code PHPnya, kita akan membuat databasenya
terlebih dahulu, silahkan buka database consolenya atau kalau sulit
kita akan langsung gunakan PHPMyAdmin yang biasanya diakses melalui
browser http://localhost/phpmyadmin.
Setelah kita berada dalam konsole MySQL, baik, kita anggap ada dalam Windows.
D:/apache/mysql/bin/
MySQL > create database latihan1;
//selesai membuat database bukutamu selajutnya kita membuat table bukutamu
CREATE TABLE IF NOT EXISTS `bukutamu` (
`isi_id` int(11) NOT NULL auto_increment,
`pesan` text collate latin1_general_ci,
`tanggal` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`nama` text collate latin1_general_ci NOT NULL,
`homepage` varchar(100) collate latin1_general_ci NOT NULL,
`ip` varchar(200) collate latin1_general_ci NOT NULL default '',
`occupation` varchar(250) collate latin1_general_ci NOT NULL default '',
`lokasi` varchar(200) collate latin1_general_ci NOT NULL default '',
`email` varchar(50) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`isi_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=552 ;
selesai semua pembuatan database bukutamu. Selanjutnya adalah membuat koding PHPnya.
Membuat Struktur Folder Bukutamu
Supaya
dikemudian hari kita mudah mengintegrasikan dengan modul yang lain maka
kita akan menampung semua file yang berhubungan dengan bukutamu dalam
sebuah folder, tidak harus begini memang, cuma untuk memudahkan.
Nantinya akan ada beberapa file yang harus ada yaitu.
1. form.php
2. simpan.php
3. data_bukutamu.php
4. modul.php
Selain itu juga kita akan membuat folder untuk meyimpan file-file
konfigurasi yang kita butuhkan, anggap saja kita akan membuat folder
bernama configurasi yang berisi file database.conf.php
Memulai Membuat Kode PHP.
Pertama
yang harus kita buat adalah yang ada dalam folder configurasi yaitu
database.conf.php yang isinya adalah sebagai berikut :
<?php
//Konfigurasi Database
$hostname = "localhost";
$username = "root";
$password = "";
$database = "latihan1";
// Melakukan koneksi database
$koneksi = mysql_connect ($hostname,$username,$password);
if (!$koneksi) die ("Tidak tersambung kedalam server database ");
mysql_select_db($database);
$badword ="fuck,anjing,kehed"; //untuk menyensor kata kata jelek dibukutamu
$badip = "202.123.123.123,66.77.88.99"; // untuk memblok IP berbahaya
$judul_per_hlm = 10; // Banyaknya data bukutamu yang ditampikan dalam 1 hlm
?>
Simpan file tadi dalam folder configurasi, oh iya semuanya harus dalam
folder misalkan di C:/apache/htdocs/latihan1 untuk memudahkan saja.
Kedua kita akan membuat form untuk butamunya itu sendiri, kalau bingung
ketik saja semua yang ada, nanti dipelajari menyusul. isi dari form.php
adalah sebagai berikut :
<SCRIPT language=javascript>
function simpan()
{
if ((document.register.nama.value == "")||(document.register.nama.value.length < 3))
{
alert("Nama harus diisi")
return false
}
else if (document.register.email.value == "" || document.register.email.value.indexOf ('@',0) == -1 ||
document.register.email.value.indexOf ('.',0) == -1)
{
alert("email tidak valid")
return false
}
else if (document.register.occupation.value == "")
{
alert("Pekerjaan anda masih kosong")
return false
}
else if (document.register.lokasi.value == "")
{
alert("Alamat anda harus diisi")
return false
}
else if (document.register.pesan.value == "")
{
alert("Apakah anda lupa mengisi pesan ?")
return false
}
}
</script>
<form method="post" onsubmit="return simpan()" name="register">
<input type="hidden" value="simpan" name="aksi">
<table width="63%" border="0" align="center" cellpadding="4" cellspacing="4" bordercolor="#FFFFFF" >
<tr>
<td bgcolor="">
<table width="100%" border="0" align="center" cellpadding="1" cellspacing="1" class="hitamsedang">
<tr>
<td width="50%"><? echo $bahasa_nama; ?></td>
<td width="50%"><? echo $bahasa_email; ?></td>
</tr>
<tr>
<td> <input type="text" name="nama" class="textfield1"> </td>
<td> <input name="email" type="text" class="textfield1" id="email"> </td>
</tr>
<tr>
<td width="50%"><? echo $bahasa_alamat; ?></td>
<td width="50%"><? echo $bahasa_pekerjaan; ?></td>
</tr>
<tr>
<td> <input name="lokasi" type="text" class="textfield1" id="lokasi"> </td>
<td> <input type="text" name="occupation" class="textfield1"> </td>
</tr>
<tr>
<td colspan="2"><? echo $bahasa_isipesan; ?></td>
</tr>
<tr>
<td colspan="2"> <textarea name="pesan"
class="textarea1"></textarea> <input type="hidden"
name="aksi" value="simpan">
</td>
</tr>
<tr>
<td colspan="2" align="right"><input
class="button" type="submit" name="Submit" value="<? echo
$bahasa_kirim; ?>">
</td>
</tr>
</table></td>
</tr>
</table>
</form>
File ini sudah mengandung Javascript untuk validasi kemungkinan mengisi bukutamu kosong.
Selanjutnya kita kan membuat file simpan.php yang isinya sebagai berikut :
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="hitamsedang" align="center">
<tr>
<td valign="top" align="center" class=hitamsedang>
<?
if (isset($_POST['aksi']) && $_POST['aksi'] == 'simpan')
{
$pesan= $_POST[pesan];
$occupation =$_POST[occupation];
$nama = $_POST[nama];
$email = $_POST[email];
$lokasi = $_POST[lokasi];
$pesan = htmlspecialchars("$pesan",ENT_QUOTES);
$lokasi = htmlspecialchars("$lokasi",ENT_QUOTES);
$nama = htmlspecialchars("$nama",ENT_QUOTES);
$occupation = htmlspecialchars("$occupation",ENT_QUOTES);
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$error_back = "<p align=center ><b><a href="javascript:history.back();" class=judul> [ Back
]</a></b></p>";
if (empty($nama))
{
$salah .= ("Nama harus diisi dong<br>
");
$benar = 2;
}
if (empty($email))
{
$salah .= ("Email tidak valid<br>
");
$benar = 2;
}
if (empty($lokasi))
{
$salah .= ("Alamat harus diisi<br>
");
$benar = 2;
}
if (empty($pesan) )
{
$salah .= ("Pesan harus diisi<br>
");
$benar = 2;
}
//Pacth untuk menghapus pesan terlalu panjang
$pesanpanjang = explode(" ",$pesan);
$totalkatapanjang = count($pesanpanjang);
for($i=0;$i < $totalkatapanjang;$i++){
$jumlahkarakter = strlen($pesanpanjang[$i]);
if($jumlahkarakter > 30 )
$pesan = str_replace("$pesanpanjang[$i]", " **sensored** ", "$pesan");
}
//Patch Selesai
//menyensor kata2 jelek
$kata = explode(",",$badword);
$totalkata = count($kata);
for($i=0;$i < $totalkata;$i++){
$pesan = str_replace("$kata[$i]", " **sensored** ", "$pesan");
}
// melarang IP jelek ngisi bukutamu
$badip = explode(",",$badip);
$totalip = count($badip);
for($i=0;$i < $totalip;$i++){
if ($ip=="$badip[$i]")
{
$salah .= ("Anda tidak boleh ngisi bukutamu<br>
");
$benar = 2;
}
}
if ($benar == 2)
{
print ("<p align=center class=hitamsedang>Ada kesalahan saat ngisi bukutamu
<br><br>$salah <br> $error_back
</p>
");
}
else
{
/*---------cek udah ada belom--------*/
$sql = "select count(*) as jml from bukutamu where nama='$nama'
and occupation='$occupation' and ip='$ip' and pesan='$pesan' and
email='$email' and lokasi='$lokasi' ";
$hsl = mysql_db_query($database, $sql);
$tot = mysql_result($hsl, 0, jml);
if ($tot=="0")
{
$query=("insert into bukutamu (nama,occupation,pesan,ip,lokasi,email)
values ('$nama','$occupation','$pesan','$ip','$lokasi','$email')");
$hasil = mysql_db_query($database,$query);
if($hasil)
{
echo "<br><br><br><br>Bukutamu berhasil disimpan.<br>
<b><a href="index.php" class=judul>[ Back to Home ]</a></b>";
}else
echo "<br><br><br><br>Gagal
disimpan.<br> <b><a href="javascript:history.back();"
class=arsip>[ Back ]</a></b>. ";
}
else
echo "<br><br><br><br>gagal disimpan,
please recompose.<br> <b><a href="javascript:history.back();" class=judul>[ Back
]</a></b>. ";
// Selesai
}
}
?>
</td>
</tr>
</table>
Baik selanjutnya kita akan membuat file untuk menampilkan data yaitu data_bukutamu.php yang isinya sebagai berikut :
<?php
$hlm=$_GET[hlm];
$nama_tabel="bukutamu";
$judul_per_hlm = 10;
$sql = "select count(*) as jml from $nama_tabel";
$hsl = mysql_db_query($database, $sql);
$tot = mysql_result($hsl, 0, jml);
$hlm_tot = ceil($tot / $judul_per_hlm);
if (empty($hlm)){
$hlm = 1;
}
if ($hlm > $hlm_tot){
$hlm = $hlm_tot;
}
$ord = ($hlm - 1) * $judul_per_hlm;
if($ord < 1) $ord=0;
$sql = "select * from $nama_tabel order by isi_id desc limit $ord, $judul_per_hlm";
$hsl = mysql_db_query($database, $sql);
$i = 1;
while ($row = mysql_fetch_object($hsl))
{
$nama = $row->nama;
$occupation = $row->occupation;
$pesan = $row->pesan;
$pesan = nl2br($pesan);
$isi_id = $row->isi_id;
$lokasi = $row->lokasi;
$tanggal = $row->tanggal;
echo"<span class=hitamsedang>$tanggal";
echo"</span>";
echo"<table cellpading=0 cellspacing=0 width=100% border=0 class=hitam >";
echo"<tr><td class=hitamsedang align=left><b>$nama,$occupation
di $lokasi</b><br><br>$pesan</td></tr>";
echo"</table><hr>";
$i %= 2;
$i++;
$ord++;
}
//Paging untuk mengatur halaman
echo"<table cellpading=0 cellspacing=0 width=100% border=0 class=putihsedang><tr><td align=right>";
if ($hlm > 1){
$prev = $hlm - 1;
print("<a href=$php_self?hlm=$prev class=menu><b>Previous Page|</b></a> ");
}
for ($i=1; $i <= $hlm_tot; $i++){
if ($i==$hlm){
//print(" <b class=putihsedang>$i</b> ");
}else{
//print(" <a href=$php_self?hlm=$i class=isi>$i</a> ");
}
}
if ($hlm < $hlm_tot){
$next = $hlm + 1;
print(" <a href=$php_self?hlm=$next class=menu><b>|Next Page</b></a>");
}
echo"</td></tr></table>";
mysql_free_result($hsl);
include('form.php');
?>
Selesai
sudah membuat file-file bukutamu yang diperlukan, sekarang kita akan
membuat navigasi untuk file-file tadi dan kita simpan di dalam file modul.php yang isinya adalah sebagai berikut :
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<tr>
<td><?
// mengatur aksi-kasi yang timbul
if($_POST[aksi]=="simpan")
{
include('simpan.php');
}
else
{
include('data_bukutamu.php');
} ?></td>
</tr>
</table>
Sudah
semuanya, sekarang tinggal menampilkan di halaman depan website kita,
oh iya saya ulang kembali struktur folder yang harusnya ada :
Htdocs/latihan1/
- bukutamu
- form.php
- simpan.php
- data_bukutamu.php
- modul.php
- configurasi
- database.conf.php
index.php (nah ini dia halaman depan website bukutamu kita)
isi dari index.php yaitu
<?
//memanggil file-file
include('configurasi/database.conf.php');
include('bukutamu/modul.php');
?
Baik
semuanya sudah selesai, ingat pelajari kode php yang tidak dimengerti,
selamat mencoba, jangan malu untuk bertanya jika tidak berhasil dan
mari kita belajar bersama-sama
Catatan :
1. Kode tersebut berjalan di PHP Register Global Off, lihat tulisan saya sebelumnya
2. Kode diatas masih banyak kekurangan, dan masih dalam pengembangan
3. Akan sangat baik sekalli jika ada salah dibenarkan dan di informasikan lewat comment.
|