PHP: Membuat Custom Form Feedback di Joomla
Terdapat berbagai komponen yang disediakan CMS Joomla untuk membuat form, salah satunya Fabrik, namun terkadang kita juga ingin membuat custom form sendiri dengan alasan tersendiri, form akan dibuat dari artikel yang kemudian action akhir dihandle oleh file php yang kita buat.
Berikut cara gampang membuat custom form feedback di joomla:
1. Create table di mysql
Jalankan perintah query SQL berikut setelah terhubung database mysql, perintah di bawah untuk membuat tabel feedback, tempat penyimpanan dari form feedback kita.
CREATE TABLE `feedback` (
`id` int(11) NOT NULL,
`title` varchar(255),
`description` text,
`email` varchar(255)
)
2. Buat article baru dengan code html sebagai berikut
Perintah dibawah ini adalah perintah html biasa untuk membuat tampilan form, seperti header, input kolom title, description, dan email.
Atribut action pada tag form bisa disesuaikan mengikuti lokasi file php yang kita buat.
<form action="../insertfeedback.php" method="POST">
<h2>Submit your suggestions</h2>
<table>
<tbody>
<tr>
<td>Title</td>
<td>
<input id="title" style="width: 300px" name="title" type="text" />
</td>
</tr>
<tr>
<td>Description</td>
<td>
<textarea
id="description"
style="width: 350px"
name="description"
rows="5"
></textarea>
</td>
</tr>
<tr>
<td>Email</td>
<td>
<input id="email" style="width: 300px" name="email" type="text" />
</td>
</tr>
<tr>
<td colspan="2">
<input name="submit" type="submit" value="Submit" />
</td>
</tr>
</tbody>
</table>
</form>
3. Create file baru dengan nama insertfeedback.php and letakkan di root joomla instance
<?php
ini_set('display_errors', true);
//error_reporting(E_ALL);
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
/*To use Joomla's database class*/
require_once(JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'platform.php');
// untuk joomla lama bisa mengganti file dengan factory.php
//require_once (JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'platform.php');
$db = JFactory::getDBO();
$session = JFactory::getSession();
$title = JRequest::getVar("title");
$description = JRequest::getVar("description");
$email = JRequest::getVar("email");
$sql = "INSERT INTO feedback (title, description, email)
VALUES (" . $db->quote($title) . ", " . $db->quote($description) . ", " . $db->quote($email) . ")";
$db->setQuery($sql);
$db->query();
// print message
echo "Your feedback has been submitted";
// or refers to other page/article
//header('Location: http://www.google.com');
//exit;
Perintah di atas akan menghandle input dari form dan menyimpan ke dalam tabel feedback yang kita buat.
$db = JFactory::getDBO(); // membuat koneksi ke database