BBL‍UE DROIDPLUSS
Sabtu, 03 April 2010

Membuat FAQ dengan PHP dan MySQL

Dalam kesempatan ini saya akan mencoba untuk menjelaskan bagaimana membuat fasilitas FAQ (Frequently Asked Questions). FAQ merupakan fasilitas yang berupa daftar pertanyaan dan jawaban yang sering ditanyakan oleh user tentang suatu hal. Fasilitas ini dapat dibuat dengan mudah menggunakan PHP dan MySQL.

Mengapa harus menggunakan PHP dan MySQL, toh… kita bisa membuatnya secara statis tanpa perlu menggunakan programming. Dengan PHP dan MySQL kita bisa membuat fasilitas FAQ yang interaktif dan memudahkan administrator dalam mengelola daftar pertanyaan dan jawaban yang ada. MySQL dalam pembuatan FAQ ini diperlukan untuk menyimpan data daftar pertanyaan dan jawaban, sedangkan PHP untuk mewujudkan keinteraktifan dalam pengelolaannya.



Untuk membuat FAQ dengan PHP dan MySQL, langkah pertama kita coba desain tabel untuk menyimpan data pertanyaan dan jawaban. Sebagai contoh, kita bisa membuat struktur tabel sederhana berikut ini:


CREATE TABLE faq

(
id INT AUTO_INCREMENT,
question TEXT,
answer TEXT,
PRIMARY KEY(id)

)


Karena pada dasarnya FAQ ini hanya berisi pertanyaan dan jawaban, maka tabel harus memuat kedua hal tersebut. Pada tabel di atas, field ‘ID’ digunakan sebagai pembeda antar satu record berisi sebuah pertanyaan dan jawaban dengan record yang lain. Karena merupakan kode pembeda, maka ID ini harus unik oleh karena itu kita set sebagai kunci primer (primary key). Anda boleh menambahkan field tambahan yang lain bila diperlukan, misalkan ditambahkan tanggal dan waktu kapan pertanyaan dan jawaban itu dikirim atau dipublish.

Setelah kita mendesain tabelnya, berikutnya kita akan mendesain aplikasinya. Untuk keperluan mengisi data pertanyaan dan jawaban, kita buat form terlebih dahulu.

form.htm


<h1>Tambah FAQ</h1>
<form method="post" action="submit.php">
Pertanyaan <br />

<textarea name="question" rows="5" cols="30"></textarea><br />
Jawaban <br />
<textarea name="answer" rows="5" cols="30"></textarea><br />
<input type="submit" name="submit" value="Submit" /></td></tr>
</table>

</form>


Tampilan form tambah FAQ di atas tampak di bawah ini

Photobucket

Selanjutnya kita akan membuat script untuk memproses FAQ yang diisikan melalui form di atas. Proses yang dilakukan script ini adalah memasukkannya ke dalam database.

submit.php


<?php
// membaca pertanyaan dari form
$question = $_POST['question'];

// membaca jawaban dari form
$answer = $_POST['answer'];

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

// query untuk memasukkan FAQ ke tabel DB
$query = "INSERT INTO faq(question, answer) VALUES('$question', '$answer') ";

$hasil = mysql_query($query);

// konfirmasi gagal tidaknya memasukkan FAQ ke tabel
if ($hasil) echo "Tambah FAQ sukses";

else echo "Tambah FAQ gagal";
?>


Mudah bukan membuat scriptnya. OK… demikianlah cara membuat script FAQ. Semoga ada manfaatnya buat Anda.

Eit… kayaknya ada yang ketinggalan ya. Oh iya… hampir lupa bagaimana dengan script untuk menampilkan daftar FAQ nya? he.. he 3x padahal yang jadi point penting adalah script ini ya.

OK.. sekarang kita buat script untuk menampilkan daftar FAQ nya.

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li>".$data['question']."</li>";

}
echo "</ul>";
?>


Nah.. script di atas baru akan menampilkan daftar pertanyaan FAQ nya. Trus… untuk jawabannya bagaimana? Anda dapat langsung menampilkan pertanyaan dan jawabannya sekaligus dalam script di atas seperti pada script yang dimodifikasi berikut ini

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><em>".$data['question']."</em><br />".$data['answer']."</li>";

}
echo "</ul>";
?>


Dalam script di atas, pertanyaan ditampilkan secara miring (italic) menggunakan tag dan jawabannya ditampilkan di bawahnya.

Selain teknik di atas, Anda dapat juga memunculkan jawabannya dengan mengklik link pada pertanyaan yang diinginkan. Untuk melakukan hal ini, ya… cukup tambahkan link dalam setiap list pertanyaan. Linknya bisa diarahkan ke script lain atau ke script ini sendiri. Dalam contoh ini kita arahkan link ke script ini sendiri (menggunakan $_SERVER['PHP_SELF']). Oya.. jangan lupa dalam link tersebut diberikan parameter berupa ID dari pertanyaannya. ID ini nanti digunakan sebagai kriteria untuk mencari jawabannya.


faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><a href='".$_SERVER['PHP_SELF']."?id=".$data['id']."'>".$data['question']."</a></li>";

}
echo "</ul>";
?>


Trus… enaknya detail pertanyaan dan jawaban setelah kita klik link FAQnya akan ditampilkan di mana ya? Coba kita tampilkan di atas daftar FAQ saja deh….

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php


// menampilkan detail FAQ (pertanyaan dan jawaban) setelah link diklik
// blok dalam IF ini hanya akan dijalankan bila terdapat parameter id pada URL, misal: http://.../faq.php?id=...

if ($_GET['id'])
{

// membaca parameter id FAQ dari link
$id = $_GET['id'];

$query = "SELECT * FROM faq WHERE id = $id";

$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);

echo "<p>Pertanyaan : ".$data['question']."</p>";
echo "<p>Jawaban : ".$data['answer']."</p>";

}

// menampilkan daftar FAQ
$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><a href='".$_SERVER['PHP_SELF']."?id=".$data['id']."'>".$data['question']."</a></li>";

}
echo "</ul>";
?>


Apabila script faq.php di atas dijalankan, maka akan muncul tampilan berikut ini (dengan asumsi data faq sudah dientri sebelumnya)

Photobucket

Sedangkan berikut ini adalah tampilan ketika sebuah link FAQ diklik untuk melihat detailnya


Photobucket

Nah.. jadi deh script FAQ nya. Lumayan bukan ?? Silakan nanti dimodifikasi sendiri scriptnya. Di sini saya hanya memberikan konsep dan ide pembuatannya saja secara sederhana. Anda bisa menambahkan fitur lain, misalnya fasilitas untuk edit data FAQ dan fasilitas hapus FAQ.

Sebagai referensi, Anda bisa membaca artikel tentang cara membuat script untuk edit data dan penghapusan data yang pernah saya tulis dalam blog ini.