Banyak sekali pengunjung setia blog ini yang menanyakan ke saya, bagaimana cara membuat script komentar dalam blog ini. He.. 3x jujur saja, bahwa di blog ini saya tidak pernah membuat script tersebut sama sekali karena blog ini
saya bangun menggunakan WordPress. Di dalam WordPress, memang sudah
tersedia fasilitas untuk mengirim komentar yang ditujukan bagi para
pengunjung blognya.
But.. anyway di sini saya akan memberikan sedikit ide sederhana
bagaimana membuat script PHP untuk memberikan komentar ala blog
tersebut. Mudah-mudahan paparan saya ini bisa berguna buat Anda yang
ingin mengembangkan script komentar ala blog di situs buatan sendiri
atau bahkan siapa tahu ada yang membuat software blogging sendiri
seperti layaknya WordPress buatan anak bangsa Indonesia
OK.. sebelum kita bahas point utama pembuatannya, saya berikan dulu
screen shot hasilnya berikut ini untuk memberikan gambaran awal skenario
penggunaan scriptnya.
Gambar di atas menunjukkan tampilan pertama (halaman index) dari
script yang menampilkan list atau daftar artikel yang telah dipublish.
Sekarang perhatikan tampilan di bawah ini yang menunjukkan tampilan
script setelah salah satu artikel diklik
Terlihat pada gambar di atas bahwa di bawah konten artikel terdapat
bagian komentar yang nantinya akan diisi oleh pengunjung. Perhatikan
hasil tampilan script komentarnya setelah user mengisi komentar pada
artikel tersebut di bawah ini
Nah.. sedangkan gambar di bawah ini tampilan bila sudah ada lebih dari satu komentar yang ada dalam artikel.
OK dah paham ya dengan skenario tampilan dan penggunaannya? Kalo sudah, kita bisa mulai membuat script komentar ala blog ini.
Pertama, kita siapkan tabel databasenya. Di sini saya hanya membuat 2
tabel saja, yaitu untuk menyimpan data konten artikel serta tabel untuk
menyimpan data komentar. Perlu diingat bahwa hal terpenting untuk
pembuatan script komentar ini adalah pengkaitan antara suatu artikel
dengan komentar yang berada di dalam postingan artikel tersebut. Oleh
karena itu di dalam tabel komentar, kita harus membuat field yang
menghubungkan suatu komentar dengan artikel tertentu.
1.
CREATE
TABLE
`artikel` (
2.
`idArtikel`
int
(11) auto_increment,
3.
`title`
varchar
(30),
4.
`content` text,
5.
`author`
varchar
(30),
6.
`datePub`
date
,
7.
PRIMARY
KEY
(`idArtikel`)
8.
);
01.
CREATE
TABLE
`komentar` (
02.
`idComment`
int
(11) auto_increment,
03.
`idArtikel`
int
(11),
04.
`commentAuthor`
varchar
(30),
05.
`urlAuthor`
varchar
(30),
06.
`comment` text,
07.
`commentDate`
date
,
08.
PRIMARY
KEY
(`idComment`)
09.
);
OK sekarang saya berikan sampel data konten artikelnya (2 data saja ya).
1.
INSERT
INTO
`artikel`
VALUES
(
'1'
,
'Title Artikel 1'
,
'Ini adalah konten artikel 1. Ini adalah konten artikel 1.
2.
Ini adalah konten artikel 1. Ini adalah konten artikel 1. Ini adalah konten artikel 1. Ini adalah konten artikel 1.
3.
Ini adalah konten artikel 1. Ini adalah konten artikel 1. Ini adalah konten artikel 1. '
,
'Rosihan Ari'
,
4.
'2010-01-20'
);
1.
INSERT
INTO
`artikel`
VALUES
(
'2'
,
'Title Artikel 2'
,
'Ini adalah konten artikel 2. Ini adalah konten artikel 2.
2.
Ini adalah konten artikel 2. Ini adalah konten artikel 2. Ini adalah konten artikel 2. Ini adalah konten artikel 2.
3.
Ini adalah konten artikel 2. Ini adalah konten artikel 2. Ini adalah konten artikel 2. '
,
'Rosihan Ari'
,
4.
'2010-01-21'
);
Script pertama yang dibuat adalah script untuk menampilkan list artikelnya dulu (sesuai skenario di atas). Ini dia scriptnya. Oya.. hampir lupa, sebelum membuat script list artikel, ada baiknya kita buat dulu script untuk koneksi ke MySQL nya.
koneksi.php
1.
2.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
3.
mysql_select_db(
"dbname"
);
4.
?>
Silakan diisi sendiri ya parameter koneksi di atas..
Selanjutnya kita bisa buat script untuk menampilkan list artikelnya
index.php
01.
Daftar Artikel
02.
03.
04.
05.
// koneksi ke mysql
06.
include
"koneksi.php"
;
07.
08.
// query SQL untuk membaca semua artikel terurut berdasarkan id nya
09.
$query
=
"SELECT * FROM artikel ORDER BY idArtikel"
;
10.
$hasil
= mysql_query(
$query
);
11.
while
(
$data
= mysql_fetch_array(
$hasil
))
12.
{
13.
// menampilkan list judul artikel
14.
echo
"
']."'
>".
$data
[
'title'
].
"
"
;
15.
}
16.
17.
?>
Keterangan:
Pada script di atas, setiap title artikel diberikan link menuju ke
script view.php untuk menampilkan detail konten artikelnya. Oya, jangan
lupa gunakan parameter pada link nya ya. Dalam hal ini parameter yang
digunakan dalam link nya adalah id setiap artikel.
Sekarang, kita buat script view.php nya. Di dalam script ini nanti
kita akan buat bagian untuk menampilkan full isi artikelnya berdasarkan
id artikel yang berasal dari parameter link, sekaligus bagian untuk
menampilkan list komentar dan form untuk mengisi komentar.
view.php
01.
02.
// koneksi ke mysql
03.
include
"koneksi.php"
;
04.
05.
// membaca id artikel
06.
$idArtikel
=
$_GET
[
'idArtikel'
];
07.
08.
// proses yang dilakukan setelah tombol submit komentar diklik
09.
if
(
$_GET
[
'act'
] ==
"submit"
)
10.
{
11.
// membaca data komentar dari form
12.
$nama
=
$_POST
[
'nama'
];
13.
$url
=
$_POST
[
'url'
];
14.
$komentar
=
$_POST
[
'komentar'
];
15.
$idArtikel
=
$_POST
[
'idArtikel'
];
16.
$tglKomentar
=
date
(
"Y-m-d"
);
17.
18.
// proses insert komentar ke database
19.
$query
= "INSERT INTO komentar (idArtikel, commentAuthor, urlAuthor, comment, commentDate)
20.
VALUES (
'$idArtikel'
,
'$nama'
,
'$url'
,
'$komentar'
,
'$tglKomentar'
)";
21.
$hasil
= mysql_query(
$query
);
22.
}
23.
24.
// proses menampilkan detail artikel berdasarkan id artikel
25.
$query
=
"SELECT * FROM artikel WHERE idArtikel = '$idArtikel'"
;
26.
$hasil
= mysql_query(
$query
);
27.
$data
= mysql_fetch_array(
$hasil
);
28.
29.
echo
"
"
.
$data
[
'title'
].
"
"
;
30.
echo
"
Tanggal publikasi: "
.
$data
[
'datePub'
].
", Oleh: "
.
$data
[
'author'
].
"
"
;
31.
echo
"
"
.
$data
[
'content'
].
"
"
;
32.
33.
// proses menampilkan komentar berdasarkan id artikelnya
34.
35.
echo
"
Komentar
"
;
36.
37.
$query
=
"SELECT * FROM komentar WHERE idArtikel = '$idArtikel'"
;
38.
$hasil
= mysql_query(
$query
);
39.
40.
if
(mysql_num_rows(
$hasil
) > 0)
41.
{
42.
// jika ada komentar (jumlah data hasil query > 0), maka tampilkan komentarnya
43.
while
(
$data
= mysql_fetch_array(
$hasil
))
44.
{
45.
echo
"
Dikirim oleh: "
.
$data
[
'commentAuthor'
].
" (']."'
>".
$data
[
'urlAuthor'
].
"
), Tanggal: "
.
$data
[
'commentDate'
].
"
"
;
46.
echo
"
"
.
$data
[
'comment'
].
"
"
;
47.
}
48.
}
49.
// jika tidak ada komentar (jumlah data hasil query = 0), tampilkan keterangan belum ada komentar
50.
else
if
(mysql_num_rows(
$hasil
) == 0)
echo
"Belum ada komentar.
"
;
51.
52.
// menampilkan form pengisian komentar
53.
54.
echo
"
Kirim Komentar
"
;
55.
56.
echo
"
57.
echo
"";
58.
echo
"
"
;
59.
echo
"
"
;
60.
echo
"
"
;
61.
echo
"
"
;
62.
echo
"
Nama
Anda :
URL
Anda :
Komentar
Anda :
"
;
63.
echo
""
;
64.
65.
?>
Keterangan:
Perhatikan perintah berikut ini pada script di atas
1.
// membaca id artikel
2.
$idArtikel
=
$_GET
[
'idArtikel'
];
Perintah di atas digunakan untuk membaca id artikel berasal dari link
yang ada di index.php nya maupun dari action form submit komentarnya.
ID artikel ini nantinya digunakan query SQL untuk menampilkan detail
artikel , menampilkan komentar berdasarkan ID artikel tersebut, maupun
untuk query INSERT komentarnya.
Oya, mungkin ada yang bertanya mengapa bagian script untuk proses
menyimpan komentar (INSERT komentar) yang ada di blok atau bagian
1.
if
(
$_GET
[
'act'
] ==
"submit"
)
2.
{
3.
...
4.
}
diletakkan di atas atau sebelum bagian script untuk menampilkan data
komentarnya? Iya donk, hal ini dilakukan supaya komentar yang baru saja
dikirim nantinya akan langsung tampil di daftar komentar yang telah
masuk setelah tombol submit komentarnya diklik. Jika Anda letakkan
bagian script untuk menyimpan komentar setelah bagian menampilkan daftar
komentar, maka Anda harus merefresh halaman tersebut untuk melihat
komentar yang baru saja dikirim, karena proses INSERT dilakukan setelah
proses menampilkannya. Seharusnya kan INSERT dulu baru ditampilkan.
Paham ya maksud saya?
Nah.. mudah bukan membuatnya? Selamat mencobanya ya. Kalau sukses,
silakan mengembangkan sendiri sesuai imajinasi dan kreatifitas Anda.
Good luck.
EmoticonEmoticon