Cara Membuat Artikel Terkait dengan PHP MYSql
Tutorial kali ini kita akan Membahas Cara Membuat atau Menampilkan Artikel terkait dengan PHP MYSQL , artikel terkait merupakan artikel yang mempunyai keterkaitan dengan artikel yang di tampilkan , Hal ini bisa anda lihat pada blog yang menggunakan CMS wordpress/ blogspot .. Source Code PHP dibawah ini bisa anda pelajari dan terapkan pada website anda untuk membuat artikel terkait dengan pHP MYSql
Membuat artikel terkait dengan PHP MYSql
Untuk membuat artikel terkait ini , simak tutorial dibawah ini..
Anggaplah kita mempunyai database dengan struktur :
CREATE TABLE `artikel` (
`id` int(11) AUTO_INCREMENT,
`judul` varchar(100),
`konten` text,
`tanggal` date,
PRIMARY KEY (`id`)
);
Dan anggaplah kita mempunyai data sbb :
Selanjutnya, kita buat script untuk menampilkan detail isi artikelnya berdasarkan id artikel nya.
artikel.php
<?php
// koneksi ke database
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
// membaca id artikel
$idartikel = abs((int) $_GET['id']);
// membaca data detail artikel berdasarkan id artikel
$query = "SELECT * FROM artikel WHERE id = '$idartikel'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
?>
<html>
<head>
<title><?php echo $data['judul']?></title>
</head>
<body>
<h1><?php echo $data['judul']?></h1>
<small><em>Tanggal publikasi: <?php echo $data['tanggal']?></em></small>
<div>
<?php echo $data['konten']?>
</div>
<div>
<h3>Artikel Terkait</h3>
<?php
include "function.php";
artikelTerkait($idartikel);
?>
</div>
</body>
</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
// membaca id artikel
$idartikel = abs((int) $_GET['id']);
<div>
<h3>Artikel Terkait</h3>
<?php
include "function.php";
artikelTerkait($idartikel);
?>
</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.
Nah… dari ide di atas, kita bisa membuat scriptnya sbb:
kita bisa membuat scriptnya sbb:
function.php
<?php
// koneksi ke database
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
function artikelTerkait($id)
{
// batas threshold 40%
$threshold = 40;
// jumlah maksimum artikel terkait yg ditampilkan 3 buah
$maksArtikel = 3;
// array yang nantinya diisi judul artikel terkait
$listArtikel = Array();
// membaca judul artikel dari ID tertentu (ID artikel acuan)
// judul ini nanti akan dicek kemiripannya dengan artikel yang lain
$query = "SELECT judul FROM artikel WHERE id = '$id'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$judul = $data['judul'];
// membaca semua data artikel selain ID artikel acuan
$query = "SELECT id, judul FROM artikel WHERE id <> '$id'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// cek similaritas judul artikel acuan dengan judul artikel lainnya
similar_text($judul, $data['judul'], $percent);
if ($percent >= $threshold)
{
// jika prosentase kemiripan judul di atas threshold
if (count($listArtikel) <= $maksArtikel)
{
// jika jumlah artikel belum sampai batas maksimum, tambahkan ke dalam array
$listArtikel[] = "<li><a href='artikel.php?id=".$data['id']."'>".$data['judul']."</a></li>";
}
}
}
// jika array listartikel tidak kosong, tampilkan listnya
// jika kosong, maka tampilkan 'tidak ada artikel terkait'
if (count($listArtikel) > 0)
{
echo "<ul>";
for ($i=0; $i<=count($listArtikel)-1; $i++)
{
echo $listArtikel[$i];
}
echo "</ul>";
}
else echo "<p>Tidak ada artikel terkait</p>";
}
?>
Mudah bukan membuatnya? Hasil dari script artikel.php?id=… jika dijalankan di browser adalah sebagai berikut