Skip to content

Ayo Belajar Bikin Aplikasi Polling, Bag. 2

Melanjutkan artikel berseri tentang belajar membuat aplikasi polling yang telah kita bahas sebelumnya, kali ini saya akan mengulas bagaimana struktur dari aplikasi polling yang akan kita buat dan editornya.

Setelah database berhasil dibuat, langkah berikutnya yang harus kita lakukan adalah membuat direktori dengan nama polling pada DOCUMENT_ROOT Apache. Jadi, nantinya aplikasi tersebut bisa diakses melalui URL http://localhost/polling.

Dengan asumsi bahwa lokasi DOCUMENT_ROOT adalah C:\website, maka struktur file selengkapnya adalah sebagai berikut:

C:\website
 --------\polling
 ----------------\index.php                --- tampilan pertanyaan
 ----------------\koneksi.php              --- koneksi database
 ----------------\hasil.php                --- tampilan hasil polling
 ----------------\editor\index.php         --- editor: daftar topik polling
 ----------------\editor\edit_topik.php    --- editor: form untuk menambah/mengedit topik polling
 ----------------\editor\detail_topik.php  --- editor: daftar pilihan jawaban untuk topik tertentu
 ----------------\editor\edit_pilihan.php  --- editor: form untuk menambah/mengedit pilihan jawaban
 ----------------\editor\hapus_topik.php   --- editor: untuk menghapus topik polling
 ----------------\editor\hapus_pilihan.php --- editor: untuk menghapus pilihan jawaban

Koneksi Database

Agar lebih praktis, untuk koneksi database kita buat file tersendiri dengan nama koneksi.php. Jadi semua file yang memerlukan koneksi ke database tinggal meng-include file ini.

File: C:\website\polling\koneksi.php

<?php
$error_message = "";

if (! @mysql_connect("localhost", "root", "123456"))
{
   $error_message = "Koneksi database gagal!";
}

@mysql_select_db("polling");
?>

Bagian Editor

Editor adalah bagian jajak pendapat yang berguna untuk menambah dan mengedit pertanyaan. Bagian ini hanya bisa diakses oleh administrator setelah melalui prosedur login. Hanya saja pada pembahasan ini, agar permasalahannya lebih sederhana, untuk sementara prosedur login diabaikan terlebih dahulu.

Tampilan editor tersebut bisa dilihat pada gambar berikut ini.

editor_polling

Ada beberapa fungsi pokok yang ada di bagian editor ini, yaitu:

  • Menampilkan daftar topik polling (index.php)
  • Menambah/mengedit topik polling (edit_topik.php)
  • Menampilkan daftar pilihan jawaban untuk masing-masing topik polling (detail_topik.php)
  • Menambah/mengedit pilihan jawaban untuk masing-masing topik polling (edit_pilihan.php)
  • Menghapus topik polling (hapus_topik.php)
  • Menghapus pilihan jawaban (hapus_pilihan.php)

File: C:\website\polling\editor\index.php

<?php
include (".../koneksi.php");

$data = @mysql_query ("select * from topik");
?>

<html>
<head>
<title>Daftar Topik Polling</title>
</head>

<body>
<h2>Daftar Topik Polling</h2>

<table border="1" width="500">
   <tr bgcolor="#DDDDDD">
      <th width="10">No.</th>
      <th>Judul Topik</th>
      <th width="150">Tindakan</th>
   </tr>
<?php $i = 0; while ($row = @mysql_fetch_assoc($data)) { $i++; ?>
   <tr>
      <td><?=$i ?></td>
      <td><?=$row['pertanyaan'] ?></td>
      <td align="center"><a href="edit_topik.php?topik_id=<?=$row['topik_id'] ?>">Edit</a> |
        <a href="detail_topik.php?topik_id=<?=$row['topik_id'] ?>">Detail</a> |
        <a href="hapus_topik.php?topik_id=<?=$row['topik_id'] ?>">Hapus</a></td>
   </tr>
<?php } ?>
</table>

<p><a href="edit_topik.php">Tambah Topik</a></p>
</body>
</html>

File: C:\website\polling\editor\edit_topik.php

<?php
include ("../koneksi.php");

if ($_GET && !empty($_GET['topik_id']))
{
   $topik_id = $_GET['topik_id'];
   $data = @mysql_fetch_assoc(@mysql_query ("select * from topik where topik_id=" . $topik_id));
   $pertanyaan = $data['pertanyaan'];
}
else
{
   $topik_id = '';
   $pertanyaan = '';
}

if ($_POST)
{
   if (!empty($_POST['topik_id']))
   {
      $result = mysql_query ("update topik set pertanyaan='" . addslashes($_POST['pertanyaan']) . "' where topik_id=" . $_POST['topik_id']);
   }
   else
   {
      $result = mysql_query ("insert into topik (pertanyaan) values ('" . addslashes($_POST['pertanyaan']) . "')");
   }

   if ($result) header('location:index.php');
}
?>

<html>
<head>
<title>Tambah/Edit Polling</title>
</head>
<body>
<h2>Tambah/Edit Polling</h2>
<form method="post"><input type="hidden" name="topik_id" value="<?php echo $topik_id ?>" />
<table border="1">
   <tr>
      <td>Pertanyaan</td>
      <td><input type="text" name="pertanyaan" size="50" value="<?php echo $pertanyaan ?>"></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
     <td><input type="submit" value="Simpan"></td>
   </tr>
</table>
</form>
<p><a href="index.php">Kembali ke Daftar Topik</a></p>
</body>
</html>

File: C:\website\polling\editor\detail_topik.php

<?php
include (".../koneksi.php");

$topik_id = $_GET['topik_id'];
$topik = @mysql_fetch_assoc(@mysql_query ("select * from topik where topik_id=" . $topik_id));
$pilihan = @mysql_query ("select * from pilihan_jawaban where topik_id=" . $topik_id);
?>

<html>
<head>
<title>Detail Topik Polling</title>
</head>

<body>
<h2>Detail Topik Polling</h2>

<p>Topik : <?php echo $topik['pertanyaan'] ?></p>

<table border="1" width="500">
   <tr bgcolor="#DDDDDD">
      <th width="10">No.</th>
      <th>Pilihan Jawaban</th>
      <th width="100">Tindakan</th>
   </tr>
<?php $i = 0; while ($row = @mysql_fetch_assoc($pilihan)) { $i++; ?>
   <tr>
      <td><?=$i ?></td>
      <td><?=$row['jawaban'] ?></td>
      <td align="center"><a href="edit_pilihan.php?topik_id=<?php echo $topik_id ?>&pilihan_jawaban_id=<?php echo $row['pilihan_jawaban_id'] ?>">Edit</a> |
         <a href="hapus_pilihan.php?topik_id=<?php echo $topik_id ?>&pilihan_jawaban_id=<?php echo $row['pilihan_jawaban_id'] ?>">Hapus</a></td>
   </tr>
<?php } ?>
</table>

<p><a href="index.php">Kembali ke Daftar Topik</a> - <a    href="edit_pilihan.php?topik_id=<?php echo $topik_id ?>">Tambah Pilihan Jawaban</a></p>
</body>
</html>

File: C:\website\polling\editor\edit_pilihan.php

<?php
include ("../koneksi.php");

if ($_GET)
{
   $topik_id = $_GET['topik_id'];
   $topik = @mysql_fetch_assoc(@mysql_query ("select * from topik where topik_id=" . $topik_id));
   if (!empty($_GET['pilihan_jawaban_id']))
   {
      $pilihan_jawaban_id = $_GET['pilihan_jawaban_id'];
      $data = @mysql_fetch_assoc(@mysql_query ("select * from pilihan_jawaban where topik_id=" . $topik_id . " and pilihan_jawaban_id=" . $pilihan_jawaban_id));
      $jawaban = $data['jawaban'];
   }
   else
   {
      $pilihan_jawaban_id = '';
      $jawaban = '';
   }
}

if ($_POST)
{
   if (!empty($_POST['topik_id']) && !empty($_POST['pilihan_jawaban_id']))
   {
      $result = mysql_query ("update pilihan_jawaban set jawaban='" . addslashes($_POST['jawaban']) . "' where topik_id=" . $_POST['topik_id'] . " and pilihan_jawaban_id=" . $pilihan_jawaban_id);
   }
   else
   {
      $result = mysql_query ("insert into pilihan_jawaban (topik_id, jawaban) values (" . $topik_id . ", '" .  addslashes($_POST['jawaban']) . "')");
   }

   if ($result) header('location:detail_topik.php?topik_id=' . $topik_id);
}
?>

<html>
<head>
<title>Form Tambah/Edit Pilihan Jawaban</title>
</head>
<body>
<h2>Tambah/edit Pilihan Jawaban</h2>
<p>Topik : <?php echo $topik['pertanyaan'] ?></p>
<form method="post"><input type="hidden" name="topik_id" value="<?php echo $topik_id ?>" />
<input type="hidden" name="pilihan_jawaban_id" value="<?php echo $pilihan_jawaban_id ?>" />
<table border="1">
   <tr>
      <td>Jawaban</td>
      <td><input type="text" name="jawaban" size="50" value="<?php echo $jawaban ?>"></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
      <td><input type="submit" value="Simpan"></td>
   </tr>
</table>
</form>
<p><a href="detail_topik.php?topik_id=<?php echo $topik_id ?>">Kembali ke Detail Topik</a></p>
</body>
</html>

File: C:\website\polling\editor\hapus_topik.php

<?php
include ("../koneksi.php");

if ($_GET)
{
   $topik_id = $_GET['topik_id'];
   @mysql_query ("delete from pilihan_jawaban where topik_id=" . $topik_id);
   @mysql_query ("delete from topik where topik_id=" . $topik_id);
   header('location:index.php');
}
?>

File: C:\website\polling\editor\hapus_pilihan.php

<?php
include ("../koneksi.php");

if ($_GET)
{
   $topik_id = $_GET['topik_id'];
   $pilihan_jawaban_id = $_GET['pilihan_jawaban_id'];
   @mysql_query ("delete from pilihan_jawaban where pilihan_jawaban_id=" . $pilihan_jawaban_id);
   header('location:detail_topik.php?topik_id=' . $topik_id);
}
?>

(bersambung ke bagian 3)

Tulisan Terkait:

Bagaimana Komentar Anda?

Monggo kalau Anda mau mengomentari tulisan di atas! Bertanya atau mengkritik juga boleh, tapi jangan terlalu menyakitkan :).

  • dona | August 27th, 2010 jam 9:28 am

    mau tanya pak.
    perintah yag saya gunakan sudah sesuai dengan yang anda terangkan, tapi kok tidak bisa mengisi data basenya ya pak?
    mohon pencerahnnya..
    terima kasih sebelumnya

Tinggalkan Pesan