Misalkan kita mempunyai CMS dengan struktur tabel database untuk menyimpan data artikel seperti di bawah ini:
1.
CREATE
TABLE
`artikel` (
2.
`id`
int
(11) AUTO_INCREMENT,
3.
`judul`
varchar
(100),
4.
`konten` text,
5.
`tanggal`
date
,
6.
PRIMARY
KEY
(`id`)
7.
);
dan andaikan kita sudah memiliki data artikel sbb:
Selanjutnya, kita buat script untuk menampilkan detail isi artikelnya berdasarkan id artikel nya.
artikel.php
01.
<?php
02.
03.
mysql_connect(
'localhost'
,
'username'
,
'password'
);
04.
mysql_select_db(
'database'
);
05.
06.
07.
$idartikel
=
abs
((int)
$_GET
[
'id'
]);
08.
09.
10.
$query
=
"SELECT * FROM artikel WHERE id = '$idartikel'"
;
11.
$hasil
= mysql_query(
$query
);
12.
$data
= mysql_fetch_array(
$hasil
);
13.
?>
14.
15.
<html>
16.
<head>
17.
<title><?php
echo
$data
[
'judul'
]?></title>
18.
</head>
19.
<body>
20.
<h1><?php
echo
$data
[
'judul'
]?></h1>
21.
<small><em>Tanggal publikasi: <?php
echo
$data
[
'tanggal'
]?></em></small>
22.
23.
<div>
24.
<?php
echo
$data
[
'konten'
]?>
25.
</div>
26.
27.
<div>
28.
<h3>Artikel Terkait</h3>
29.
<?php
30.
include
"function.php"
;
31.
artikelTerkait(
$idartikel
);
32.
?>
33.
</div>
34.
</body>
35.
</html>
Script di atas digunakan untuk menampilkan konten dari sebuah artikel
berdasarkan id artikelnya, dimana untuk menampilkan konten suatu
artikel menggunakan URL
http://namahost/artikel.php?id=…
Perhatikan perintah
1.
$idartikel
=
abs
((int)
$_GET
[
'id'
]);
perintah tersebut digunakan untuk mencegah
SQL injection melalui GET method sebagaimana yang dulu pernah saya tulis artikelnya.
Jika kita perhatikan dari script di atas, maka di bawah isi artikelnya ada bagian sbb:
1.
<div>
2.
<h3>Artikel Terkait</h3>
3.
<?php
4.
include
"function.php"
;
5.
artikelTerkait(
$idartikel
);
6.
?>
7.
</div>
Bagian tersebut digunakan untuk menampilkan daftar artikel yang
terkait dengan artikel yang sedang dibaca. Untuk menampilkan daftar
artikel yang terkait dengan artikel ber ID $idartikel, saya menggunakan
sebuah function dengan nama artikelTerkait($idartikel) dimana $idartikel
adalah parameternya. Function ini saya letakkan di file function.php
yang terpisah dari script artikel.php. Kalaupun Anda meletakkan
functionnya dalam file yg sama dengan artikel.php juga tidak ada masalah
Selanjutnya kita tinjau apa isi dari
function artikelTerkait(). Dalam
contoh ini, keterkaitan artikel yang dimaksud di sini ditinjau dari
kemiripan judul artikelnya. Adapun idenya adalah, kita baca semua judul
artikel yang ada dalam database kecuali artikel yang menjadi acuan
(artikel ber ID $idartikel). Selanjutnya untuk semua judul artikel ini,
kita lihat kemiripannya dengan judul dari artikel yang ber ID $idartikel
ini. Kita bisa melihat kemiripan dari judul artikel ini menggunakan
function similar_text() yang pernah saya bahas di artikel lain tentang
uji kemiripan teks.
Kemudian, karena hasil dari penggunakan similar_text() ini berupa
angka dalam bentuk prosentase kemiripan, maka sebaiknya kita membuat
semacam batas minimal prosentase atau threshold, yang nantinya digunakan
untuk memberi batas minimal kemiripannya. Sebagai contoh misalkan
daftar artikel terkait yang ditampilkan hanya artikel yang memiliki
tingkat kemiripan 50% ke atas. Hal ini berfungsi untuk memfilter mana
artikel yang benar-benar mirip atau tidak. Artikel yang jauh dari mirip,
akan memiliki prosentase kemiripan kecil. Tapi besar kecilnya threshold
ini sepenuhnya terserah Anda, karena Andalah yang menentukan.
Hal yang menjadi pemikiran berikutnya adalah,
bagaimana jika jumlah artikel yang terkait itu ada banyak, misalkan ada 100 buah? tentunya
tidak mungkin kita tampilkan semua karena halaman page artikelnya bisa
jadi penuh dengan judul-judul artikel sehingga
tidak menarik bagi pengunjung. Oleh karena itu kita sebaiknya batasi jumlah artikel
terkaitnya. Untuk mengimplementasikan hal ini, setiap judul artikel yang
kemiripannya di atas
threshold, maka kita simpan ke dalam sebuah array.
Selama jumlah artikel dalam array tersebut belum memenuhi batas
maksimum jumlah artikel nya, maka judul-judul terkait itu bisa
ditambahkan dalam array. Setelah proses ini selesai, barulah kita
tampilkan list judul artikel terkaitnya yang ada dalam array tersebut.
function.php
01.
<?php
02.
03.
04.
mysql_connect(
'localhost'
,
'username'
,
'password'
);
05.
mysql_select_db(
'database'
);
06.
07.
function
artikelTerkait(
$id
)
08.
{
09.
10.
$threshold
= 40;
11.
12.
$maksArtikel
= 3;
13.
14.
15.
$listArtikel
= Array();
16.
17.
18.
19.
$query
=
"SELECT judul FROM artikel WHERE id = '$id'"
;
20.
$hasil
= mysql_query(
$query
);
21.
$data
= mysql_fetch_array(
$hasil
);
22.
$judul
=
$data
[
'judul'
];
23.
24.
25.
$query
=
"SELECT id, judul FROM artikel WHERE id <> '$id'"
;
26.
$hasil
= mysql_query(
$query
);
27.
while
(
$data
= mysql_fetch_array(
$hasil
))
28.
{
29.
30.
similar_text(
$judul
,
$data
[
'judul'
],
$percent
);
31.
if
(
$percent
>=
$threshold
)
32.
{
33.
34.
if
(
count
(
$listArtikel
) <=
$maksArtikel
)
35.
{
36.
37.
$listArtikel
[] =
"<li><a href='artikel.php?id="
.
$data
['id
']."'
>".
$data
[
'judul'
].
"</a></li>"
;
38.
}
39.
}
40.
}
41.
42.
43.
44.
if
(
count
(
$listArtikel
) > 0)
45.
{
46.
echo
"<ul>"
;
47.
for
(
$i
=0;
$i
<=
count
(
$listArtikel
)-1;
$i
++)
48.
{
49.
echo
$listArtikel
[
$i
];
50.
}
51.
echo
"</ul>"
;
52.
}
53.
else
echo
"<p>Tidak ada artikel terkait</p>"
;
54.
}
55.
?>
Mudah bukan membuatnya? Hasil dari script
artikel.php?id=… jika dijalankan di browser adalah sebagai berikut:
Sumber : http://blog.rosihanari.net