Rabu, 26 Juni 2019

Merubah Konsep Pemrograman Basis Data (Mysqsl dan Mysqli Extension) ke Model PDO Extension

Pada praktikum sebelumnya, saya sudah membuat dan memperbaiki aplikasi basisdata 2 tier, apabila anda pembaca baru, anda dapat melihat script CRUD saya disini. Atau jika anda ingin mempelajari step by step, anda bisa lihat pada artikel saya sebelumnya.

Dan pada artikel ini, saya akan mengubah konsep basis data 2 tier yang sudah di perbaiki tersebut kedalam model PDO Extension.
Oleh karena itu, apabila anda belum mengerti pengertian dari PDO Extension ataupun mekanisme dari PDO ini, anda bisa melihat materi nya disini.

Nah, disini saya akan menjelaskan sedikit, bagaimana cara merombak script mysql ke PDO Extension.
Untuk modul PDO Extension, anda bisa lihat disini

Dan pada kasus saya, untuk mengkoneksi ke database,
berikut perbedaan menggunakan mysqli_connect dan PDO pada kasus yang kelompok saya kerjakan:

Koneksi menggunakan Mysqli_connect


Koneksi menggukan PDO



Perbedaan Menyimpan data ( ex: menambahkan data mahasiswa )

Sebelumnya meggunakan mysqli_query:
insert data menggunakan mysqli_query


Query insert data dengan PDO:
insert data menggunakan PDO



Menampilkan data ( ex: menampilkan data mahasiswa ]

Sebelumnya menggunakan mysqli_query:
Tampil data menggunakan mysqli_query


dan ketika dirubah menjadi PDO:
Tampil data menggunakan PDO


Mengedit data ( ex: mengedit data mahasiswa ]
Menggunakan mysqli_query:
Edit menggunakan mysqli_query


Perbedaan jika menggunakan PDO:
Mengedit data dengan PDO


Menghapus data ( ex: menghapus data mahasiswa ]

Menghapus data menggunakan mysqli_query


Menggunakan PDO:
Menghapus data menggunakan PDO


Mungkin pada kasus saya ada 4 CRUD ( Mhs, Dosen, User dan Program Studi], namun saya rasa contoh yang saya berikan diatas sudah cukup untuk metode pembelajaran, apabila anda ingin melihat kasus saya yang sudah diperbaiki total menggunakan PDO, anda dapat download atau lihat disini.

Keuntungan atau manfaat PDO Sendiri, ialah membantu mencegah SQL injection, PDO secara otomatis akan mengquote inputan user, selain itu PDO bisa digunakan untuk mengakses beberapa database berbeda, yakni kita dapat berpindah ke database lainnya, seperti PostgreSQL tanpa merubah kode yang telah dibuat, PDO juga sudah mendukung database transaction dan bila dibandingan dengan mysql_query, PDO ini lebih cepat.


#ManajemenInformatika
#PoliteknikNegeriLampung
#EkoWinKenali
#MadeSlimacek

Senin, 24 Juni 2019

Pemrograman Basis Data - PDO (PHP Data Object) - Materi Pengantar

Halo, Kembali lagi dengan Matakuliah Pemrograman Basis Data,
Kali ini, saya mendapatkan materi dan pembelajaran baru, yakni PDO atau PHP Data Object.

Saya sendiri masih bingung, pengertian PDO sendiri ialah interface universal yang disediakan PHP untuk berkomunikasi” dengan database server. Istilah “interface universal” menyatakan bahwa PDO tidak terikat dengan aplikasi database tertentu.



PDO (PHP Data Objects) adalah php extension untuk mengakses database, sama seperti mysql_query atau mysql_fetch_array.
Saat ini fungsi seperti mysql_query dan mysql_fetch_array sudah di deprecated dan akan segera dihapus. Oleh karena itu kita perlu segera beralih menggunakan PDO atau MySQLi untuk menyimpan, edit atau hapus data.
PDO bisa dipakai untuk mengakses beberapa database berbeda, sedangkan MySQLi hanya untuk database mysql.
Jika saat ini kita menggunakan database MySQL dan di kemudian hari berganti menggunakan database PostgreSQL maka kita tidak perlu lagi mengubah kode yang sudah dibuat.

PDO bekerja dengan metode yang disebut “data-access abstraction layer”.
Artinya, apapun jenis database server yang digunakan, kode PHP yang ditulis akan tetap sama.
PDO menyediakan “abstraction layer” untuk berkomunikasi dengan database server.
Untuk menggunakan PDO, programer harus mengaksesnya menggunakan object.
PDO tidak menyediakan cara penulisan procedural style seperti mysqli atau mysql extension.
Oleh Karena itu, maka programmer diwajibkan memahami konsep Object Oriented Programming (OOP).


Jenis database Server yang di dukung PDO (12) diantaranya:
  1. CUBRID
  2. MS SQL Server
  3. Firebird
  4. IBM
  5. Informix
  6. MySQL
  7. MS SQL Server
  8. Oracle
  9. ODBC and DB2
  10. PostgreSQL
  11. SQLite
  12. 4D
Dengan membuat kode PHP menggunakan PDO, secara tidak langsung juga membuka kemungkinan untuk menggunakan database server selain MySQL, sehingga menjadi lebih fleksibel.



Mengaktifkan PDO Extension

Untuk melihat driver database apa saja yang telah aktif dan bisa langsung digunakan, bisa menggunakan fungsi (lebih tepatnya: static method)
PDO::getAvailableDrivers():

<?php print_r(PDO::getAvailableDrivers()); ?>

Perintah tersebut apabila dijalankan, akan menghasilkan:
Mengecek driver database


Gambar diatas terlihat PDO yang aktif dan yang bisa digunakan adalah mysql, pgsql, dan sqlite.
Untuk mengaktifkan driver untuk database yang lainnya, pergi ke 
[drive]:\xampp\php\php.ini.

Buka dengan notepad / text editor lainnya:
php.ini


Jika ingin mengaktifkan driver untuk database yang lainnya, cari perintah menggunakan CTRL+F "pdo"
Lalu hapus semicolon atau titik koma dari awal baris nama driver yang ingin digunakan.
Disini saya mengaktifkan pdo_odbc, jangan lupa di save, lalu PENTING untuk merestart XAMPP Control Panel.

Lalu cek lagi menggunakan perintah:
 <?php
print_r(PDO::getAvailableDrivers()); ?>

Perhatikan Hasilnya:
Mengaktifkan driver untuk database odbo



Menampilkan Pesan Kesalahan (error) pada PDO

Karena PDO menggunakan object, penanganan kesalahan akan lebih baik jika menggunakan blok TRY…CATCH, atau dikenal dengan “exceptions”.

Untuk menampilkan pesan kesalahan dengan exceptions pada PDO, terdapat 3 pilihan metode. Metode ini menggunakan method PDO::setAttribute(PDO::ATTR_ERRMODE):
  1. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
    Jika kita tidak mengubah setingan error, pilihan inilah yang digunakan. Untuk mengecek error, kita bisa menggunakan method PDO::errorCode()dan PDO::errorInfo().
  2. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    Digunakan untuk menampilkan error berupa warning PHP, kemudian PHP akan melanjutkan proses eksekusi program. Pilihan ini cocok untuk proses debugging.
  3. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    Digunakan untuk menampilkan error dengan exceptions. Pilihan inilah yang sering digunakan untuk menampilkan error dengan TRY…CATCH.

Dengan menggunakan penanganan kesalahan (exceptions), berikut adalah modifikasi kode PHP untuk koneksi PDO dengan MySQL:
Koneksi menggunakan PDO


Diatas adalah contoh koneksi yang berhasil, sekarang kita coba sengaja lakukan kesalahan dengan menginput username yang tidak ada pada database, dan lihat apa yang terjadi:
Sengaja di salahkan, dan perhatikan pesan kesalahannya


Didalam block TRY…CATCH inilah nantinya akan menjalankan query-query MySQL seperti menampilkan data, maupun menginput data baru ke dalam tabel MySQL, Cukup sederhana dan mudah bukan?


Untuk artikel ini saya rasa cukup,
Pada artikel selanjutnya, saya akan membuat Makalah tentang Konsep basis data menggunakan PDO Extension dengan studi kasus pada artikel sebelumnya (Perbaikan PHP 2 Tier).

Jadi singkatnya, saya akan merubah query-query yang ada pada script tersebut menjadi query PDO.

Oleh karena itu, anda bisa mendownload project saya disini atau mempelajari pada artikel sebelumnya terlebih dahulu, karena modul kemarin dengan sekarang sangat berkaitan.


#ManajemenInformatika
#PoliteknikNegeriLampung
#EkoWinKenali
#MadeSlimacek

Pemrograman Basis Data - Perbaikan Aplikasi Basis Data 2 TIER Part 2

Halo, disini saya akan melanjutkan artikel saya yang sebelumnya, yaitu Perbaikan Aplikasi Basis data 2 TIER, pada artikel sebelumnya, saya sudah membuat validasi login serta index admin.
Dan pada artikel ini, saya akan melanjutkan untuk membuat submenu yang isinya CRUD Semua meliputi: User, Dosen, Mahasiswa, Program Studi/Jurusan.

untuk itu, masih pada folder admin pada kasus tersebut,
Saya membuat 5-6 file php untuk setiap Tabel tersebut

  1. User (Add (dosen, mahasiswa)), Delete, Read, Sidebar submenu)
  2. Dosen [ Add, Edit, Delete, Modal Untuk Edit, Sidebar Submenu]
  3. Mahasiswa [ Add, Edit, Delete, Modal Untuk Edit, Sidebar Submenu]
  4. Program Studi / Jurusan [ Add, Delete, Edit, Modal untuk edit, Sidebar Submenu]

Untuk itu, mungkin saya hanya memberi contoh satu tabel saja, karena berikutnya hanya mengikuti, namun hanya berbeda query saja.

Pada User, saya membuat file: user.php, dt_user.php, user_add_dosen.php, user_add_mahasiswa.php, dan user_delete.php


Saya mulai dari yang user.php
di dalam script ini, saya menambahkan Sidebar nya kembali, lalu mengaktifkan Submenu User:
Mengaktfikan submenu User


Dan pada Content, saya menggunakan include dt_user.php
dan pada dt_user disanalah query untuk menampilkan/ read data User:
Jika tidak terlihat pada gambar, anda bisa lihat full script disini.
Read Data User


Read telah selesai, Untuk itu, sekarang kembali ke User.php
Tambahkan Modal untuk menambahkan YUser Dosen dan Mahasiswa
berikut scriptnya (user.php)


Jika sudah, buat query pada Add dan Delete user tersebut:
Add Dosen


Add Mahasiswa


Delete User



Untuk Demo seperti akan seperti ini:

Add User Dosen


Add User Mahasiswa


Delete User


Pada User ini, tidak saya buatkan Update / Edit, karena menurut saya, lebih dari segi keamanan, agar lebih efesien saja, namun untuk cara tidak jauh berbeda, hanya menambahkan Modal untuk Edit, lalu menambahkan query edit saja:

Untuk itu saya hanya menjelaskan 1 Tabel saja, Berikut Script Full nya (Github) jika anda terjadi error pada saat mengikuti tutorial ini.

Untuk artikel ini saya rasa cukup, saya ucapkan terimakasih banyak.


#ManajemenInformatika
#PoliteknikNegeriLampung









Pemrograman Basis Data - Perbaikan Aplikasi Basis Data 2 TIER

Pada materi sebelumnya, saya dan kelompok saya telah diberi arahan dari bpk dosen Eko Win Kenali S.Kom., M.Cs. untuk membenahi ataupun merevisi scirpt yang telah kelompok kami buat, diantaranya:

  1. Status Online
  2. Jika login sebagai user, user tersebut diberi peringatan jika ia sedang online + last login.
  3. Seleksi menginsert data
  4. Perbaiki session
Untuk tambahan, mungkin disini saya merombak tabel dari database serta merubah sedikit gaya penulisan PHP dari panduan BPP, jadi boleh dikatakan, saya mengembangkannya.

Dan lanjut untuk kasus sebelumnya, anda bisa lihat disini, dan berikut aplikasi 2 TIER yang telah kelompok kami revisi:

1. Form Login ( Hanya menggunakan 1 Form Login )
Form Login


Untuk script diatas, anda bisa melihat disini (pastebin).


Dan untuk template, saya menggunakan Material Dasboard Pro untuk form login, dan saya menggunakan AdminLTE untuk Dashboard User nantinya.


Berikut struktur folder project kami:
Struktur Folder


Berikut Database dan relasi antar tabel nya:
Database

Relasi antar tabel


2. Koneksi ke database
saya menggunakan variabel $konek, jadi selanjutnya saya akan menggunakan variabel $konek tersebut sampai akhir kasus ini.

Koneksi Database


3. Pada Form Login/index.php terdapat text box Username dan password, nah pada Form Action nya, kita arahkan ke script untuk validasi login:
form action


Pastikan label/textbox telah diberi name serta pada tombol Login, diberi type="submit":
memberi name pada label untuk diberikan ke POST


Jika sudah, save, dan sekarang beralih ke vl_user.php, karena terlalu panjang serta susah di screen shot, saya berikan link ke pastebin saja, berikut script nya.

Atau lebih mudahnya, disini saya menggunakan seleksi kondisi berdasarkan level, lalu level-level tersebut saya arahkan sesuai dengan jenis user tersebut:
Validasi Login


Oleh karena itu, saya sudah membuat folder admin, dosen, dan mahasiswa, yang mana
  1. Admin = Mengendalikan Semua CRUD ( User, Program Studi, Dosen dan Mahasiswa )
  2. Dosen [ Hanya Read data dosen dan mahasiswa ]
  3. Mahasiswa [ Hanya read data mahasiswa ]

Untuk itu, disini saya fokuskan ke admin terlebih dahulu:

4. Pada Validasi Login, saya membuat header Location ke admin/index.php
berikut script index.php dari folder admin tersebut.

Dan terlihat, pada script tersebut, saya menggunakan header, footer yang telah saya jadikan file berbeda, jadi tinggal memanggil menggunakan include saja, berikut file tersebut:
bundle_css


Header


Footer


Lalu jangan lupa untuk mengcopy foler asset dari Template nya
Download Template Admin LTE - Dasboard
Download Template Material Dashboard Pro

Asset dari 2 template tersebut


Tambahkan notifikasi telah login pada content
Notifikasi selamat datang


Ohiya, hampir lupa, agar validasi login tersebut berjalan dengan baik, pada setiap file.php nantinya yang ada didalam folder admin, ditambahkan file autentifikasi user, agar tidak sembarang user bisa mengakses direktori admin:
berikut file php nya, lalu pada index.php tinggal memanggil include saja (di pastebin sudah tertera] :
autentifikasi user


Jika sudah, lalu lakukan pengetesan menggunakan web browser:
  1. Login menggunakan Admin > Redirect admin/index.php
  2. Jika username/password tampilkan pesan kesalahan:


Untuk Login, form login, validasi login, serta Dashboard kita sudah selesai, selanjutnya, kita akan membuat submenu itu berjalan dengan baik, CRUD User, Program Studi, Dosen dan Mahasiswa yang akan saya buat pada artikel selanjutnya. Untuk itu saya ucapkan terimakasih.

#ManajemenInformatika
#PoliteknikNegeriLampung

Rabu, 01 Mei 2019

Pemrograman Basis Data - Membangun Aplikasi Basisdata Menggunakan PHP dan DBMS MySQL Arsitektur 2-TIER (Praktik 2)

Pada Praktikum / Artikel Sebelumnya, saya sudah membuat Arsitektur 2 TIER, namun pada praktikum kali ini, Mahasiswa diminta agar aplikasi tersebut dikembangkan menjadi sebuah sistem yang tertutup. Sistem yang dilengkapi dengan fasilitas User Authentication untuk menentukan hak akses pada aplikasi. Dimana User Client yang dapat mengakses aplikasi adalah hanya Mahasiswa dan Dosen yang ada didalam database “AKADEMIK”.

Untuk itu Diperlukan tabel-tabel lainnya yang mendukung, Seperti tabel User, dan lainnya:



Jika membuat fasilitas User Authentication, yang berarti mahasiswa diminta untuk membuat tampilan login serta index home nya, berikut Home/ Index sebelum login:

Jika anda ingin melihat script diatas nya, saya sudah upload ke direktori Github saya, berikut linknya.


Dan Apabila client/user/admin mengklik tombol login, akan diarahkan ke form login:



Dan pengkondisian login.php saya adalah seperti berikut (menggunakan Level):




Jika login Admin, arahkan ke index admin:
Admin meliputi (CURD semua diperbolehkan)

  1. Index


  2. CURD Dosen


  3. CURD Mahasiswa



  4. CURD Program Studi (kemarin)

Jika sudah, logout.
dan Coba login menggunakan User Dosen/Mahasiswa, yang mana fungsi mahasiswa hanya dapat melihat daftar mahasiswa dan mencari nama mahasiswa saja, serta dosen bisa melihat dan mencari data dosen dan data mahasiswa namun tidak memiliki fitur Update,Delete,dan Tambah.

  1. Fitur Dosen







  2. Fitur Mahasiswa



Jika ingin melihat Source code lengkap, silahkan klik disini.

Untuk kali ini saya rasa praktikum kali ini cukup yaa, saya juga sangat berterimakasih kepada Dosen saya bpk Eko Win Kenali, S.Kom., M.Cs. yang selalu mengsupport mahasiswa Polinela agar lebih mahir lagi mengembangkan PHP Native / murni ini.
Setelah melakukan tahapan yang telah dijalankan ini, Mahasiswa mampu merancang bangun aplikasi basisdata menggunakan PHP (standard) dan DBMS MySQL Arsitektur 2-TIER (CLIENT-SERVER/ BASISDATA TERPUSAT) sebagai bekal dasar untuk merancang aplikasi lebih baik lagi, dan harapannya agar sudah menguasai konsep OOP.
Selamat koding, dan jangan lupa tititk koma.