Monday 7 November 2011

14. Modul Kegiatan PHP Studi Kasus: Counter, Polling dan Paging


14. Modul Kegiatan PHP
Studi Kasus: Counter, Polling dan Paging

14.1          Pokok Bahasan
1.      Membuat Counter dengan 2 cara
2.      Membuat Polling dengan 2 cara

14.2          Tujuan Praktikum
1.      Praktikan mampu membuat aplikasi Counter dengan PHP.
2.      Praktikan mampu membuat aplikasi Polling dengan PHP.

14.3          Petunjuk Praktikum
1.      Praktikan diharapkan mempersiapkan diri dengan mempelajari dan memahami teori PHP yang diberikan pada saat perkuliahan teori.
2.      Kegiatan praktikum dilakukan dengan cara mempelajari dasar teori dan melakukan langkah-langkah yang diberikan pada subjudul Dasar Teori dan Kegiatan.
3.      Pada setiap modul, Praktikan wajib mengerjakan jurnal praktikum berupa laporan dengan format yang telah ditentukan dan diserahkan kepada Asisten Laboratorium.

14.4          Dasar Teori dan Kegiatan
1.      Membuat Counter
Mungkin anda pernah mengunjungi sebuah halaman web, dimana disana ditampilkan kita sebagai pengunjung ke berapa paa situs web tersebut. Sekarang kita akan mencoba membuat aplikasi tersebut. Dimana data counter disimpan pada database karena sifatnya yang dinamis. Langkah pertama yang harus dilakukan adalah membuat  Tabel Counter dalam database LatihanDB yang sudah anda buat sebelumnya. Tabel Counter ini hanya berisi satu kolom saja untuk menampung data kunjungan, struktur tabelnya sebagai berikut:
Field
Type
Length
Null
Extra
Key
no
integer
5
Not null



Jika table tersebut sudah dibuat, isikan datanya dengan 0 atau “Nol” karena jika table yang tidak berisi data dianggap data masih kosong sehingga tidak bisa dijumlahkan melalui query. Aapbila file tersebut di eksekusi maka nilainya bertambah satu. Selanjutnya buat file PHP sebagai berikut

Contoh1: Counter Cara Pertama
Modul14-Counter1.php

<?php
mysql_connect("localhost","root","") or die ("Koneksi gagal: ".mysql_error());
mysql_select_db("latihanDB") or die ("Basis data tidak ditemukan: ".mysql_error());
$query="select * from counter";
$run_query=mysql_query($query) or die ("Query1 salah: ".mysql_error());
$data=mysql_fetch_array($run_query);
$n=$data[0];
$n++;
$query="update counter set no=$n";
$run_query=mysql_query($query) or die ("Query2 salah: ".mysql_error());
echo "<h2>Anda Pengunjung ke - $n</h2>";
echo "Data Disimpan Pada Database<br>";
?>


Contoh diatas adalah contoh aplikasi Counter dimana data disimpan secara dinamis pada database. Setiap kali file tersebut dipanggil pada browser, skrip membaca isi dari database lalu melakukan update dengan menambahkan 1 nilai kunjungan. Cara diatas adalah cara yang paling umum digunakan jika halaman web menghendaki keadaan yang benar-benar dinamis dimana data selalu berasal dari database. Ada cara lain yang tidak perlu melibatkan database yaitu, data kunjungan disimpan pada sebuah file Text. Contohnya adalah sebagai berikut:

Contoh2: Counter Cara Kedua
Modul14-Counter2.php

<?php
   //counter akan disimpan ke dalam file text
   $nama_berkas = "Modul14-Counter2.txt";
   if (file_exists($nama_berkas)) {
      $berkas   = fopen($nama_berkas, "r");
      $pencacah = (integer) trim(fgets($berkas, 255));
      $pencacah++;
      fclose($berkas);
      }
   else
     $pencacah = 1;
     // Simpan pencacah
     $berkas   = fopen($nama_berkas, "w");
     fputs($berkas, $pencacah);
     fclose($berkas);
  
   // Tulis ke halaman web
     
   echo "<h2>Anda Pengunjung ke - $pencacah</h2>";
   echo "Data Disimpan Pada File Text<br>";
?>


2.      Membuat Polling
Setelah membuat aplikasi Counter diatas, sekarang kita akan membuat aplikasi polling. Polling digunakan untuk jajak pendapat, untuk mengetahui berapa jawaban user untuk setiap pilihan pertanyaan yang kita berikan. Buat file berikut ini:

Contoh3: Polling Cara Pertama
Modul14-Polling1.php

<html>
<head>
<title>POLLING 1</title>
</head>
<body>
<form method="get" action="Modul14-Polling1.php">
<b>Bagaimana Bodi Pacar Anda?</b><br/>
<input type="radio" name="pilihan" value="pil1" /> Bagus Sekali<br/>
<input type="radio" name="pilihan" value="pil2" /> Bagus <br/>
<input type="radio" name="pilihan" value="pil3" /> Lumayan <br/>
<input type="radio" name="pilihan" value="pil4" /> Jelek <br/>
<input type="radio" name="pilihan" value="pil5" /> Jelek Sekali<br/>
<input type="submit" name="pilih" value="Pilih" />
<input type="submit" name="lihat" value="Lihat" />
</form><br>
<?php
if ($_GET[pilih]) {
   extract($_GET);
   mysql_connect("localhost","root","") or die ("Konesi Gagal: ".mysql_error());
   mysql_select_db("latihanDB") or die ("Basisdata Tidak Ditemukan: ".mysql_error());
   $query="select $pilihan from polling";
   $run_query=mysql_query($query) or die ("Query1 Salah: ".mysql_error());
   $data=mysql_fetch_array($run_query);
   $n=$data[0];
   $n++;
   $query="update polling set $pilihan=$n";
   $run_query=mysql_query($query) or die ("Query2 Salah: ".mysql_error());
   }

if ($_GET[lihat]) {
   mysql_connect("localhost","root","") or die ("Konesi Gagal: ".mysql_error());
   mysql_select_db("latihanDB") or die ("Basisdata Tidak Ditemukan: ".mysql_error());
   $query="select * from polling";
   $run_query=mysql_query($query) or die ("Query3 Salah: ".mysql_error());
   $data=mysql_fetch_array($run_query);
   echo "
     <b>Hasil Polling</b></br>
     Bagus Sekali $data[0]<br/>
     Bagus        $data[1]<br/>
     Lumayan      $data[2]<br/>
     Jelek        $data[3]<br/>
     Jelek Sekali $data[4]<br/>";
   }
?>
</body>
</html>


Contoh diatas adalah aplikasi polling dimana data hasil pilihan ditampilkan dalam bentuk angka saja, berikutnya kita akan memodifikasi file tersebut sehingga data diperlihatkan dalam bentuk Batang dan persentase.

Contoh4: Polling Cara Kedua
Modul14-Polling2.php

<html>
<head>
<title>POLLING 2</title>
</head>
<body>
<form method="get" action="Modul14-Polling2.php">
<b>Bagaimana Wajah Pacar Anda?</b><br/>
<input type="radio" name="pilihan" value="pil1" /> Bagus Sekali<br/>
<input type="radio" name="pilihan" value="pil2" /> Bagus <br/>
<input type="radio" name="pilihan" value="pil3" /> Lumayan <br/>
<input type="radio" name="pilihan" value="pil4" /> Jelek <br/>
<input type="radio" name="pilihan" value="pil5" /> Jelek Sekali<br/>
<input type="submit" name="pilih" value="Pilih" />
<input type="submit" name="lihat" value="Lihat" />
</form><br>

<?php
if ($_GET[pilih]) {
   extract($_GET);
   mysql_connect("localhost","root","") or die ("Konesi Gagal: ".mysql_error());
   mysql_select_db("latihanDB") or die ("Basisdata Tidak Ditemukan: ".mysql_error());
   $query="select $pilihan from polling";
   $run_query=mysql_query($query) or die ("Query1 Salah: ".mysql_error());
   $data=mysql_fetch_array($run_query);
   $n=$data[0];
   $n++;
   $query="update polling set $pilihan=$n";
   $run_query=mysql_query($query) or die ("Query2 Salah: ".mysql_error());
   }

if ($_GET[lihat]) {
   mysql_connect("localhost","root","") or die ("Konesi Gagal: ".mysql_error());
   mysql_select_db("latihanDB") or die ("Basisdata Tidak Ditemukan: ".mysql_error());
   $query="select * from polling";
   $run_query=mysql_query($query) or die ("Query3 Salah: ".mysql_error());
   $data=mysql_fetch_array($run_query);

   $total=$data[0]+$data[1]+$data[2]+$data[3]+$data[4];
   $n1= intval($data[0] / $total * 100);
   $n2= intval($data[1] / $total * 100);
   $n3= intval($data[2] / $total * 100);
   $n4= intval($data[3] / $total * 100);
   $n5= intval($data[4] / $total * 100);
  
   $max=max($data[0], $data[1], $data[2], $data[3], $data[4]);
   $w1= intval($data[0] / $max * 300);
   $w2= intval($data[1] / $max * 300);
   $w3= intval($data[2] / $max * 300);
   $w4= intval($data[3] / $max * 300);
   $w5= intval($data[4] / $max * 300);

   echo "
     <b>Hasil Polling</b></br>
     Bagus Sekali : $data[0] ($n1 %)<br/>
     <table bgcolor=blue height=10 width=$w1><tr><td></td></tr></table>    

     Bagus Sekali : $data[1] ($n2 %)<br/>
     <table bgcolor=blue height=10 width=$w2><tr><td></td></tr></table>

     Bagus Sekali : $data[2] ($n3 %)<br/>
     <table bgcolor=blue height=10 width=$w3><tr><td></td></tr></table>

     Bagus Sekali : $data[3] ($n4 %)<br/>
     <table bgcolor=blue height=10 width=$w4><tr><td></td></tr></table>
    
     Bagus Sekali : $data[4] ($n5 %)<br/>
     <table bgcolor=blue height=10 width=$w5><tr><td></td></tr></table>";
   }
?>
</body>
</html>


3.      Membuat Paging
Apabila data yang ada pada tabel memiliki record yang banyak, maka tidak mugkin kita menampilkannya secara keseluruhan. Untuk itu diperlukan batasan untuk menampilkan data pada tabel berdasarkan jumlah recordnya. Cara menampilkan data seperti itu dinamakan Paging. Salah satu contoh paging sederhana dapat anda lihat pada listing berikut:

Contoh5: Paging
Modul14-Paging.php

<?php
$host="localhost";
$user="root";
$pass="";
$db="praktikum";
mysql_connect($host,$user,$pass);
mysql_select_db($db);
  echo "<h2>PAGING DATA PESANAN<br></h2>";
  $awal=$_GET['awal'];
  $page=$_GET['page'];
  if(empty($awal)) 
  {
  $awal=0;
  }
  echo "<table>\n";
  echo "<tr bgcolor='#CCFF99'>\n";
  echo "<tr>\n";
  echo "<td colspan=5 align='left'>Halaman : $page</td>\n";
  echo "</tr>\n";
  echo "<td bgcolor='#cccccc'><b>#</td>\n";
  echo "<td bgcolor='#cccccc'><b>ID</td>\n";
  echo "<td bgcolor='#cccccc'><b>Nama</td>\n";
  echo "<td bgcolor='#cccccc'><b>Telepon</td>\n";
  echo "<td bgcolor='#cccccc'><b>Pesanan</td>\n";
  echo "</tr>\n";
  echo "<tr>\n";
  $que  = mysql_query("select * from pesanan order by id_pesan limit $awal,10") or die ("Query1 Salah");
  while ($datakul = mysql_fetch_array($que))
  {
  // isikan elemen array baris ke masing-masing variabel
  $j=$j+1;
    echo "<tr >\n";
    echo "<td >$j</td>\n";
    echo "<td >$datakul[id_pesan]</td>\n";
    echo "<td >$datakul[nama]</td>\n";
    echo "<td > $datakul[telepon]</td>\n";
    echo "<td >$datakul[pesan]</td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
  }
  $cari2="select  *  from pesanan  ";
  $hasil=mysql_query($cari2);
  $jumlah=mysql_num_rows($hasil);
  $i=$jumlah/10;
  $i=ceil($i);
 
  echo "<tr>\n";
  echo "<td border=1 colspan=5 align='left'>";
  echo "Halaman : &nbsp;";
 
  for($j=1;$j<=$i;$j++)
    {
    $awal=(($j-1)*9+$j)-1;
    echo "<a href='Modul14-Paging.php?page=$j&awal=$awal'>$j</a> &nbsp;";
    }
echo "</td></tr>\n";
echo "</table>\n";
?>


14.5          Jurnal Praktikum Terakhir
Buatlah aplikasi-aplikasi yang menurut anda bermanfaat dan layak untuk disimpan pada sebuah situs. Misalkan untuk mengecek IP, mengecek Browser yang digunakan, Validasi data untuk memfilter string-string yang tidak diinginkan seperti F**k, S*x, dan lainnya. Anda bebas menentukan aplikasi apa yang akan anda kumpulkan sebagai tugas terakhir praktikum. Jurnal Praktikum dikumpulkan dalam bentuk:
a.       Laporan yang berisi Source Code dan Print Screen tampilan tugas anda pada browser, beserta penjelasan berupa analisa dari tugas yang anda buat. Laporan wajib menggunakan kertas A4, Format laporan tanyakan ke Asisten!
b.      File Tugas diperlihatkan dan diserahkan pada Asisten Laboratorium.

Tugas dikerjakan sendiri-sendiri, tidak diperkenankan melakukan Copy-Paste-Replace terhadap tugas rekan anda. Apabila ditemukan Plagiat (antar teman sekelas atau antar teman beda kelas), maka semua tugas yang ”Sama” tersebut dianggap batal/ tidak mengumpulkan!

No comments: