Monday 7 November 2011

13. Modul Kegiatan PHP PHP dan MYSQL


13. Modul Kegiatan PHP
PHP dan MYSQL

13.1          Pokok Bahasan
1.      Koneksi Database melalui skrip PHP
2.      Melakukan Query untuk pemrosesan data

13.2          Tujuan Praktikum
1.      Praktikan mampu memahami cara melakukan koneksi ke Database MySQL melalui PHP.
2.      Praktikan mampu memahami query untuk pemrosesan data.

13.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.

13.4          Dasar Teori dan Kegiatan
1.      Akses Melalui PHP
Isi data dalam suatu Tabel pada sebuah Database MySQL dapat diakses melalui skrip Php. Perintah dasar atau fungsi-fungsi untuk keperluan tersebut yang biasa digunakan adalah:
-          mysql_connect: digunakan untuk membuka koneksi ke database MySQL sintaksnya adalah mysql_connect(host,user,password).
-          mysql_select_db: digunakan untuk memilih database yang akan diakses sintaksnya adalah mysql_select_db(database, nama_koneksi).
-          mysql_query: digunakan untuk mengeksekusi permintaan terhadap sebuah tabel atau sejumlah tabel, sintaksnya: mysql_query(permintaan_query, nama_koneksi).
-          mysql_fetch_array: fungsi ini untuk mengambil record dari database dan memasukkanya kedalam array assosiatif, array numeris atau keduanya. Sintaksnya mysql_fetch_array(permintaan_query).
-          mysql_fetch_row: fungsi ini hampir sama dengan mysql_fetch_array. Yang membedakannya adalah pada mysql_fetch_row array yang dihasilkan hanya array numeris. Sintaksnya mysql_fetch_row(permintaan_query).
-          mysql_close: digunakan untuk menutup koneksi database dengan sintaks mysql_close(nama_koneksi).

Pada modul sebelumnya kita sudah membuat suatu Database menggunakan MySQL yaitu database LatihanDB didalamnya ada tabel Pesanan. Kita akan memanfaatkan database tersebut untuk praktikum saat ini. Jika anda tidak menemukan database LatihanDB, silahkan dibuat lagi baik melalui Konsol ataupun PhpMyAdmin.
mysql> create table Pesanan (
    -> id_pesan SMALLINT AUTO_INCREMENT PRIMARY KEY,
    -> nama VARCHAR(20),
    -> telepon VARCHAR(15),
    -> pesan TEXT);
Contoh1: Koneksi MySQL melalui PHP
Modul13-1-Konek.php

<?php
//buka koneksi ke mysql
$namakoneksi = mysql_connect("localhost","root","") or die ("Koneksi Gagal");

//memilih database LatihanDB
mysql_select_db("latihandb",$namakoneksi);

//perintah query ke tabel pesanan
$query     = "select * from pesanan";
$hasilquery= mysql_query($query,$namakoneksi);

//untuk merapihkan dan mempercantik tampilan
echo "<html>";
echo "<head><title>KONEKSI DATABASE</title></head>";
echo "<body>";
echo "<font size=6>Isi Tabel Pesanan</font><br><br>";
echo "<table border=1>";
echo "<tr>";
echo "<td bgcolor=#adadeh><b>ID</b></td>";
echo "<td bgcolor=#adadeh><b>NAMA</b></td>";
echo "<td bgcolor=#adadeh><b>TELEPON</b></td>";
echo "<td bgcolor=#adadeh><b>PESANAN</b></td>";
echo "</tr>";

//ambil data pada setiap baris
while($baris=mysql_fetch_array($hasilquery))
    {
    echo "<tr>";
    echo "<td bgcolor=#ceceff>$baris[0]</td>";
    echo "<td bgcolor=#ceceff>$baris[1]</td>";
    echo "<td bgcolor=#ceceff>$baris[2]</td>";
    echo "<td bgcolor=#ceceff>$baris[3]</td>";
    echo "</tr>";
    }
echo "</table>";
echo "</body>";
echo "</html>";

//tutup koneksi
mysql_close($namakoneksi);
?>


Contoh diatas adalah contoh melakukan koneksi dan menampilkan data yang ada dalam sebuah tabel yaitu Tabel Pesanan dari database LatihanDB. Langkahnya adalah pertama membuat koneksi ke MySQL, selanjutnya memilih database, melakukan query untuk mengambil data apa saja yang akan ditampilkan, lalu membuat Caption dan Header dari tabel, dan data yang diambil berdasarkan query tadi dibuat menjadi array lalu dilakukan perulangan dengan While untuk mengambil data per record dan menampilkannya perbaris. Setelah semua data ditampilkan berdasarkan Query yang diberikan, proses berlanjut untuk menutup koneksi dengan MySQL. Sebaiknya membuat koneksi dilakukan di awal baris, apabila tidak ada lagi data yang di ambil dari database, bisa sesegera mungkin menutup koneksi, tapi biasanya koneksi ditutup setelah semua tag HTML selesai di interpretasi.

2.      Manipulasi Data
PHP digunakan tidak hanya untuk menampilkan data tapi dapat digunakan untuk melakukan manipulasi terhadap data-data yang tersimpan dalam database, misalnya operasi penambahan data melalui halaman web, penghapusan data, pengeditan data, termasuk juga menampilkan data dengan kondisi khusus atau bersyarat, misalnya hanya menampilkan data tertentu saja.
Pada praktikum ini kita akan membuat satu contoh persoalan menggunakan database yang sudah kita buat sebelumnya. Rubah file Modul13-1-konek.php yang sudah dibuat sebelumnya menjadi skrip berikut:

Contoh2: View Data
Modul13-2-View.php

<?php
//buka koneksi ke mysql
$namakoneksi = mysql_connect("localhost","root","") or die ("Koneksi Gagal");
//memilih database LatihanDB
mysql_select_db("LatihanDB",$namakoneksi);
//perintah query ke tabel pesanan
$query     = "select * from pesanan";
$hasilquery= mysql_query($query,$namakoneksi);
//untuk merapihkan dan mempercantik tampilan
echo "<html>";
echo "<head><title>VIEW</title></head>";
echo "<body>";
echo "<h2>Isi Tabel Pesanan</font></h2>";
echo "<table border=1>";
echo "<tr>";
echo "<td bgcolor=#adadeh><b>ID</b></td>";
echo "<td bgcolor=#adadeh><b>NAMA</b></td>";
echo "<td bgcolor=#adadeh><b>TELEPON</b></td>";
echo "<td bgcolor=#adadeh><b>PESANAN</b></td>";
echo "<td bgcolor=#adadeh align=center><b><a href=Modul13-2-Tambah.php>TAMBAH</a></b></td>";
echo "</tr>";
//ambil data pada setiap baris
while($baris=mysql_fetch_array($hasilquery))
    {
    echo "<tr>";
    echo "<td bgcolor=#ceceff>".$baris[0]."</td>";
    echo "<td bgcolor=#ceceff>".$baris[1]."</td>";
    echo "<td bgcolor=#ceceff>".$baris[2]."</td>";
    echo "<td bgcolor=#ceceff>".$baris[3]."</td>";
    echo "<td bgcolor=#ceceff>
<b><a href='Modul13-2-Hapus.php?id=".$baris[0]."'>HAPUS</a></b> &nbsp;
<b><a href='Modul13-2-Edit.php?id=".$baris[0]."'>EDIT</a></b>
          </td>";
    echo "</tr>";
    }
echo "</table>";
echo "</body>";
echo "</html>";
//tutup koneksi
mysql_close($namakoneksi);
?>

Contoh diatas adalah skrip untuk menampilkan data yang dilengkapi tiga buah link yaitu: Link ke form penambahan data, link untuk menghapus data dan link untuk mengupdate data. Link Hapus dan Edit diletakkan di antara pengulangan While dikarenakan variabel id_pesan (dalam bentuk array dalam pengulangan menjadi  $baris[0]) akan dijadikan acuan untuk membangkitkan data baru di halaman yang ditujunya. Selanjutnya kita akan membuat file berisi Form untuk melakukan penambahan data sebagai berikut:

Contoh3: Form Tambah Data
Modul13-2-Tambah.php

<?php
echo "<html>";
echo "<head>";
echo "<title>TAMBAH DATA</title>";
echo "</head>";
echo "<body>";
echo "<h2>Tambah Data Pesanan</h2>";
echo "<form method=post action=Modul13-2-Proses.php>";
echo "<table border=1>";
echo "<tr>";
echo "<td bgcolor=#adadeh><b>Nama :</b></td>";
echo "<td bgcolor=#ceceff><input type=text name=nama /></td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=#adadeh><b>Telepon :</b></td>";
echo "<td bgcolor=#ceceff><input type=text name=telpon /></td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=#adadeh valign=top><b>Pesanan:</b></td>";
echo "<td bgcolor=#ceceff>";
echo "<textarea name=pesanan cols=25 rows=10></textarea>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=#adadeh><b>
      <a href=Modul13-2-view.php>View</a></b></td>";
echo "<td bgcolor=#ceceff>";
echo "<input type=submit name=simpan value=Simpan />&nbsp;";
echo "<input type=reset name=reset value=Reset />";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</form>";
echo "</body>";
echo "</html>";
?>


Isian pada Form tambah data diatas akan dikirimkan ke file Modul13-2-Proses.php menggunakan metode Post. Data yang dikirimkan adalah nama, telpon, pesanan, dan simpan. Simpan akan digunakan untuk pemilihan proses dihalaman Modul13-2-Proses.php. Selanjutnya kita akan membuat file Modul13-2-Proses.php, didalamnya ada pemilihan proses Simpan dan Rubah. Eksekusi akan dilakukan berdasarkan nilai yang dikirim dari input type=submit, pada form tambah data diatas, maka yang terbangkitkan adalah  proses Simpan. Sedangkan untuk proses rubah akan dibahas belakangan.


Contoh4: Proses Tambah dan Edit
Modul13-2-Proses.php

<?php
if ($_POST[simpan]) {
   extract($_POST);
   if (empty($nama) || empty($telpon) || empty($pesanan)) {
      echo "<html><head><title>AKSI TAMBAH</title></head><body>";   
      echo "<h2>Data Belum Lengkap</h2>";
      echo "Tekan Back Pada Toolbars";
      echo "</body></html>";
      }
   else {
      $t_nama=strip_tags($nama);
      $t_telpon=strip_tags($telpon);
      $t_pesanan=nl2br(strip_tags($pesanan));
      mysql_connect("localhost","root","") or die ("<h3>Koneksi Gagal:</h3> ".mysql_error());
      mysql_select_db("latihanDB") or die ("<h3>Database Tidak Ditemukan:</h3> ".mysql_error());
      $query="INSERT into pesanan VALUES('','$t_nama','$t_telpon','$t_pesanan')";
      $run_query=mysql_query($query) or die ("<h3>Query Salah:</h3> ".mysql_error());
      echo "<html><head><title>AKSI TAMBAH</title></head><body>";
      echo "<h2>Data Tersimpan</h2>";
      echo "Nama    : $t_nama<br>";
      echo "Telpon  : $t_telpon<br>";
      echo "Pesanan : $t_pesanan<br>";
      echo "Berhasil Disimpan, <b><a href=Modul13-2-view.php>klik disini</a></b> untuk lihat data<br>";
      echo "</body></html>";
      }
}
if ($_POST[rubah]) {
   extract($_POST);
   if (empty($nama) || empty($telpon) || empty($pesanan)) {
      echo "<html><head><title>AKSI TAMBAH</title></head><body>";   
      echo "<h2>Data Belum Lengkap</h2>";
      echo "Tekan Back Pada Toolbars";
      echo "</body></html>";
      }
   else {
      $t_nama=strip_tags($nama);
      $t_telpon=strip_tags($telpon);
      $t_pesanan=nl2br(strip_tags($pesanan));
      mysql_connect("localhost","root","") or die ("<h3>Koneksi Gagal:</h3> ".mysql_error());
      mysql_select_db("praktikum") or die ("<h3>Database Tidak Ditemukan:</h3> ".mysql_error());
      $query="UPDATE pesanan SET nama='$t_nama',telepon='$t_telpon',pesan='$t_pesanan' WHERE id_pesan='$id'";
      $run_query=mysql_query($query) or die ("<h3>Query Salah:</h3> ".mysql_error());
      echo "<html><head><title>AKSI TAMBAH</title></head><body>";
      echo "<h2>Data Tersimpan</h2>";
      echo "Nama    : $t_nama<br>";
      echo "Telpon  : $t_telpon<br>";
      echo "Pesanan : $t_pesanan<br>";
      echo "Berhasil Disimpan, <b><a href=Modul13-2-view.php>klik disini</a></b> untuk lihat data<br>";
      echo "</body></html>";
      }
}
?>


If empty($nama) digunakan untuk melakukan pengecekkan apakah data yang diisi sudah terisi semua. Extract adalah fungsi PHP yang digunakan untuk memisahkan nilai yang dikirimkan menjadi array. Strip_tags digunakan untuk menghilangkan kode-kode HTML dan PHP yang dimasukkan oleh pemakai melalui keyboard dalam form, nl2br adalah fungsi untuk menyisipkan <br> di depan setiap karakter newline (\n). Selanjutnya akan dibuat form Edit, form ini berfungsi untuk menangkap data yang akan di edit berdasarkan pesan_id.

Contoh5: Form Edit
Modul13-2-Edit.php

<?php
extract($_GET);
$t_id=$id; 
mysql_connect("localhost","root","") or die ("<h3>Koneksi Gagal:</h3> ".mysql_error());
mysql_select_db("praktikum") or die ("<h3>Database Tidak Ditemukan:</h3> ".mysql_error());
$sql="SELECT * FROM pesanan WHERE id_pesan='$t_id'";
$query=mysql_query($sql);
echo "<html>";
echo "<head>";
echo "<title>EDIT DATA</title>";
echo "</head>";
echo "<body>";
echo "<h2>Edit Data Pesanan</h2>";
echo "<form method=post action=Modul13-2-Proses.php>";
while ($baris=mysql_fetch_array($query))
  {
  echo "<table border=1>";
  echo "<tr>";
  echo "<td bgcolor=#adadeh><b>Nama :</b></td>";
  echo "<td bgcolor=#ceceff><input type=text name=nama value=".$baris[nama]."></td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td bgcolor=#adadeh><b>Telepon :</b></td>";
  echo "<td bgcolor=#ceceff><input type=text name=telpon value=".$baris[telepon]."></td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td bgcolor=#adadeh valign=top><b>Pesanan:</b></td>";
  echo "<td bgcolor=#ceceff>";
  echo "<textarea name=pesanan cols=25 rows=10>".$baris[pesan]."</textarea>";
  echo "</td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td bgcolor=#adadeh><b><a href=Modul13-2-view.php>View</a></b></td>";
  echo "<td bgcolor=#ceceff>";
  echo "<input type=submit name=rubah value=Rubah /><input type=hidden name=id value=".$t_id.">";
  echo "</td>";
  echo "</tr>";
  echo "</table>";
  }
echo "</form>";
echo "</body>";
echo "</html>";
?>


Contoh6: Proses Hapus
Modul13-2-Hapus.php

<?php
extract($_GET);
$t_id=$id;
  mysql_connect("localhost","root","") or die ("<h3>Koneksi Gagal:</h3> ".mysql_error());
  mysql_select_db("latihanDB") or die ("<h3>Database Tidak Ditemukan:</h3> ".mysql_error());
  $query="DELETE FROM pesanan WHERE id_pesan='$t_id'";
  $run_query=mysql_query($query) or die ("<h3>Query Salah:</h3> ".mysql_error());
    echo "<html><head><title>AKSI HAPUS</title></head><body>";
    echo "<h2>Data Terhapus</h2>";
    echo "<b><a href=Modul13-2-view.php>klik disini</a></b> untuk lihat data<br>";
    echo "</body></html>";
?>


13.5          Jurnal Praktikum
Buatlah suatu Database dengan nama ”NPM_Anda”, dan buat satu Tabel dengan nama ”Nama_Anda”. Contohnya:  database 057006016, tabel Heni. Tabel tersebut berisi minimal 5 buah field, fieldnya anda tentukan sendiri, bebas! Setelah itu buat tiga file PHP dengan nama ”NPM_Form”, contoh 057006016_Form.php yang berisi link ke view data dan sebuah form dengan metode POST dilengkapi HTML Input Elemen yang digunakan untuk menginput data dengan action diarahkan ke file ”NPM_Proses” contoh 057006016_Proses.php berisi skrip untuk proses input data ke Database dan Tabel yang dibuat tadi. Lalu buat file ”NPM_View” contoh 057006016_View.php untuk melihat data pada tabel yang dibuat. Nilai bonus jika dilengkapi dengan script untuk melakukan validasi data baik pada sisi client ataupun pada server. Jurnal Praktikum dikumpulkan dalam bentuk:
a.       Laporan yang berisi Source Code dan Print Screen tampilan tugas anda pada browser. 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: