Membuat Fasilitas Komentar Sederhana dengan PHP dan MySQL

Jumat, 14 Agustus 2009
Beberapa waktu yang lalu ada permintaan untuk men-share cara membuat fasilitas komentar seperti yang saya gunakan di website ini. Karena itulah, di sini akan saya share contoh sederhana untuk membuat fasilitas komentar dengan menggunakan PHP dan MySQL. Bagi yang sudah terbiasa coding dengan PHP dan MySQL mungkin bisa dilewati saja bagian ini.

Untuk mempermudah, saya sudah menyediakan beberapa file PHP dan query MySQL yang akan digunakan. Silahkan download file komentar.zip. Setelah di-ekstrak Anda akan menemukan 2 file PHP dan 1 file SQL. Copy file PHP ke folder htdocs web server Anda. Sedangkan untuk file SQL dapat langsung di-import ke database.

Contoh yang saya berikan adalah kode program untuk menambahkan komentar pada artikel yang telah kita buat sebelumnya. Karena itulah, pada tabel comment disediakan field article_id yang akan menghubungkan komentar dengan artikel.

CREATE TABLE `comment` (
`id` int(11) NOT NULL auto_increment,
`article_id` int(11) default NULL,
`name` varchar(50) default NULL,
`email` varchar(100) default NULL,
`comment` text,
`date` datetime default NULL,
PRIMARY KEY (`id`)
)

Buatlah form input komentar sederhana yang terdiri dari nama, email dan komentar. Untuk menghindari spam dan flooding, Anda dapat menggunakan Captcha. Saya menambahkan fungsi sederhana dengan tujuan yang sama.

function create_code() {
$temp = explode(" ", microtime());
$recnum = str_replace(".", "", $temp[1].$temp[0]);

$rcode = hexdec(md5($recnum));
$code = substr($rcode, 2, 6);

$_SESSION['tmp']['captcha'][0] = $recnum;
$_SESSION['tmp']['captcha'][1] = $code;

return array($recnum, $code);
}

Tambahkan form input HTML untuk memasukkan kode verifikasi. Kemudian, gunakan fungsi berikut untuk mem-verifikasi apakah kode yang dimasukkan sudah benar atau tidak.

function verify_code($rec_num, $checkstr) {
if ($_SESSION['tmp']['captcha'][0] == $rec_num) {
$code = $_SESSION['tmp']['captcha'][1];
$_SESSION['tmp']['captcha'] = '';
return ($checkstr == $code);
}
return FALSE;
}

Jika semua proses verifikasi sudah dilakukan, selanjutnya tinggal meng-input-kan semua data ke dalam database.

mysql_query("INSERT INTO comment (article_id, name, email, comment, date) VALUES ({$id}, '{$nama}', '{$email}', '{$pesan}', NOW() )");

Dengan demikian, komentar dari pengunjung website akan disimpan dan dapat ditampilkan.



Komentar

Marzoze
27 Agustus 2009 - 12:43:21
Mas faris,, saya udah coba tpi koq artikel nya gak tampil ya, yg muncul cuma komentar nya aja.

aL
27 Agustus 2009 - 13:20:30
iya mas, contoh yg saya buat cuma menampilkan komentar saja. asumsi saya yang artikelnya bisa dibuat sendiri :)

di database-nya silahkan buat 1 tabel lagi dengan nama article yang isinya id, title dan body.

nanti pemanggilannya menggunakan URL seperti article.php?id=1
angka 1 bebas diganti sesuai id article-nya

semoga berhasil :)

daniel 2k9
22 September 2009 - 03:28:28
saya ngerti sih php & mysql, cm penjelasannya ini untuk yg sdh terbiasa dgn php mysql ya? jadinya sy g ngerti kata2 anda, bisa tlg dijelasin g, klo bisa di ym, danielblogger_2k9

aL
22 September 2009 - 22:17:52
bagian mana ya yg belum jelas? mungkin klo mempelajari source code-nya akan lebih mengerti..

daniel 2k9
01 Oktober 2009 - 08:49:35
thanks ya, sy ngerti skrg :))

tapi kan search engine2 spt google nggak suka sm url yg ada '?' apalagi itu url buat article, sulit keindex dah, ada cr lain g biar urlnya ga gitu, namanya sih klo gk salah SEF :))

oia, klo buat halaman yg bisanya cm html, javascript, xml, jadi gimana ya, pertama buat filenya di host sdr yg bisa php mysql, trus mau ku taruh di hlmn yg cm bisa itu tadi, bisa koq pake javascript (file php diubah jd file js walaupun akhirannya .php ;))

jadi ambil idnya, pake apa? jd bingung? dlm js lho..

klo bingung, ke emailku aja, thanks b4 atas bantuannya :)

aL
04 Oktober 2009 - 19:53:40
klo soal url biar ga pake tanda "?" silahkan dicoba-coba mod_rewrite yang ada di apache. tulisan saya yg ini memang tidak membahas soal itu.

aL
04 Oktober 2009 - 19:58:43
untuk pertanyaannya kedua itu maksudnya bagaimana ya?
kalau akhiran (ekstensi) file memang bukan suatu yang masalah, pake ekstensi apa aja bisa.

tes
24 Oktober 2009 - 14:02:18
tes bozz :D

Ira
18 November 2009 - 11:22:23
Tengkyu bro, aku lg nyari2 tentang artikel bikin script komentar, mu coba dulu..

tohir
26 November 2009 - 15:39:09
mas minta kode buat "berikan komentar" yang mas buat dong.

makasih ya sebelumnya

aL
26 November 2009 - 20:46:37
sebenarnya source code yang ada http://alfarisi.web.id/downloads/article/example/koment ar.zip itu sudah menggambarkan alurnya, tidak beda jauh dengan fasilitas komentar di website saya ini. mungkin mas Thohir bisa pelajari dulu..

Fajar
08 Januari 2010 - 07:11:00
Wah bagus sekali.
Terima kasih banyak, benar-benar sangat membantu.

andi
13 Februari 2010 - 10:09:14
bagus juga

sigit
14 April 2010 - 12:13:02
Mas Faris, terimakasih share ilmunya. Sangat bermanfaat sekali..

Kalau boleh saya tanya, untuk setiap komentar yang diberikan, kalau kita ingin menambahkan fasilitas REPLY comment (nested comment). Jadi komentar balasannya akan muncul di bawah komentar yang kita tuju, itu bagaimana caranya ya Mas?

Terimakasih sebelumnya atas jawaban yang diberikan.

aL
14 April 2010 - 12:59:07
di database-nya bisa ditambahkan satu field lagi, yaitu PARENT_ID yang merujuk ke comment utama (yg di-reply).

saat menampilkannya pun salah satunya bisa dilakukan dengan melakukan looping. pertama, mengambil komentar yg parent_id nya 0, lalu dicari lagi komentar yg parent_id nya sama dengan ID komentar induk tadi, dst..

sigit
15 April 2010 - 10:11:44
terimakasih atas penjelasannya...

Sy sudah tambahkan field PARENT_ID di table comment. Tapi untuk penerapan kode programnya, sy masih kesulitan.
Kalau Mas Faris tidak keberatan, tolong dibantu penerapan kodenya ke email saya di sigit_59t [at] yahoo.com.

Thanks.

I Putu Puspayana
15 April 2010 - 16:28:15
mas,,, makasi banyak ya aku mulai kebayang
tp eru database ngak??

aL
16 April 2010 - 17:03:16
@sigit
nanti kalau ada cukup waktu, saya coba e-mail atau saya tuliskan di web ini juga.. atau kalau mas malah sudah coba-coba buat mungkin saya bisa dikasih liat code-nya.. siapa tau cuma butuh sedikit penyempurnaan..

@putu
terima kasih kembali
oya kalimat terakhir itu maksudnya gimana ya? "tp eru database ngak" saya agak bingung, hehe.. harap maklum..

coa
19 April 2010 - 12:34:29
coba..

sigit
20 April 2010 - 12:33:16
Mas Faris,
Saya baru bisa buat ini, tolong bantu diperbaiki ya...

1. Menambahkan field PARENT_ID di tabel COMMENT:
alter table comment add parent_id int(11) after id;

2. Menampilkan tulisan link REPLY di samping Nama Komentar dan Tanggal :
$query = mysql_query("SELECT * FROM comment WHERE article_id={$id} ORDER BY date");
while ($row = mysql_fetch_array($query)) {
$nama = $row['name'];
$komentar = nl2br($row['comment']);
$datestamp = $row['date'];
echo "<div style='border:1px solid;'>{$nama} on {$datestamp}</i><a href='#'> Reply</a><br /><blockquote>{$komentar}</blockquote></div><br />";
}

Thanks.

MJaura
18 Mei 2010 - 00:15:01
makasih mas postingannya
ni aku lagi mo nyoba
doain yaa moga2 berhasil

Ari
25 Mei 2010 - 07:40:51
mas maaf, saya masih awam dalam hal ini.
saya buat desain form komentarnya dgn dreamweaver, nah gmna cara mengkoneksikannya dengan PHP dan Mysql nya mas ?
tolong bantu ya mas . .
tolong dikirim ke email saya :
sahrijalari [at] yahoo.com

aL
27 Mei 2010 - 16:02:31
mungkin bisa download file komentar.zip pada link yang saya sebut sebelumnya. di situ juga ada contoh untuk koneksi dengan MySQL..

mamat
27 Juni 2010 - 21:19:17
bang Al bagaimana membuat tampilan membalas komentar buat admin biar berbeda dan jawaban admin ada dibawah penanya
banyak terima kasih buat bang Al

cynk
29 Juni 2010 - 15:59:47
walah-walah....bukane mudeng malah mubeng....njenengan mudeng ga mas al farisis?

Dede
15 Juli 2010 - 20:06:28
Bang kalo script untuk reply (jawaban) di dalam komentar itu sendiri gimana ya...minta pertolongan nih..

Thank\'s

azzahid
26 Juli 2010 - 10:17:00
ada kode membuat forum ga? Tolong jelaskan?

ismail
09 Agustus 2010 - 15:35:37
bagus banget

en
10 Agustus 2010 - 14:26:08
sip.....

en
10 Agustus 2010 - 14:27:00
ssiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiip

looke
17 Agustus 2010 - 10:43:31
pak saya bingung dengan CREATE TABLE `comment` (
`id` int(11) NOT NULL auto_increment,
`article_id` int(11) default NULL,..............maksudnya kita buat tabel dimana ya pak? terus dalam bentuk apa kita simpan html? mohon penjelasannya maaf masih newbie

aL
21 Agustus 2010 - 06:31:43
@looke
itu query MySQL, digunakan untuk membuat tabel..

Ahmad
30 Agustus 2010 - 00:38:40
tq bro

Ali Syahbana
30 Agustus 2010 - 08:48:57
terima kasih banget mas alfarisi.

lee
07 September 2010 - 15:00:55
aku memakai dreamweaver membuat kommen,pengertian terhadap javascrip,php, mysql kurang bagat,kira2 ada tidak cara cepat utk mengerti bagaimana membuat commen lewat dreamweaver ...
tolong kasih tau mas ,,, step2 apa yg harus aku ambil
tolong diblas lewat e-mail
snoopl33 [at] hotmail.com
thx

Berikan Komentar

Nama:


E-mail:


Website:
Contoh http://www.indokreatif.net

Silahkan tulis komentar anda :


Masukkan kode berikut