Kamis, 08 Januari 2009

Membuat Bukutamu dengan PHP dan MySQL (Pra Advance)

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

MySQL > CREATE TABLE `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,
`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=162 ;

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 :

//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 :






































   



File ini sudah mengandung Javascript untuk validasi kemungkinan mengisi bukutamu kosong.

Selanjutnya kita kan membuat file simpan.php yang isinya sebagai berikut :






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 = "

[ Back ]

";
if (empty($nama))
{
$salah .= ("Nama harus diisi dong
");
$benar = 2;
}
if (empty($email))
{
$salah .= ("Email tidak valid
");
$benar = 2;
}
if (empty($lokasi))
{
$salah .= ("Alamat harus diisi
");
$benar = 2;
}
if (empty($pesan) )
{
$salah .= ("Pesan harus diisi
");
$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
");
$benar = 2;
}
}

if ($benar == 2)
{
print ("

Ada kesalahan saat ngisi bukutamu


$salah
$error_back

");
}
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 "



Bukutamu berhasil disimpan.

[ Back to Home ]";
}else
echo "



Gagal disimpan.
[ Back ]. ";
}
else
echo "



gagal disimpan, please recompose.
[ Back ]. ";
// Selesai
}
}
?>



Baik selanjutnya kita akan membuat file untuk menampilkan data yaitu data_bukutamu.php yang isinya sebagai berikut :

$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"$tanggal";

echo"
";
echo"";
echo"";
echo"
$nama,$occupation
di $lokasi


$pesan

";
$i %= 2;
$i++;
$ord++;
}

//Paging untuk mengatur halaman
echo"
";
if ($hlm > 1){
$prev = $hlm - 1;
print("Previous Page| ");
}
for ($i=1; $i <= $hlm_tot; $i++){
if ($i==$hlm){
//print(" $i ");
}else{
//print(" $i ");
}
}
if ($hlm < $hlm_tot){
$next = $hlm + 1;
print(" |Next Page");
}
echo"
";
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 :





// mengatur aksi-kasi yang timbul
if($_POST[aksi]=="simpan")
{
include('simpan.php');
}
else
{
include('data_bukutamu.php');
} ?>



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.

Tidak ada komentar:

Posting Komentar