Membuat CRUD dengan Ionic 3 PHP dan Mysql Part 1 - Mari Belajar Coding

04 Maret 2019

Membuat CRUD dengan Ionic 3 PHP dan Mysql Part 1


Membuat CRUD dengan Ionic 3 PHP dan Mysql

Pada tutorial sebelumnya, kita telah belajar tutorial Membuat Login Ionic Integrasi PHP dan Mysql. Kali ini saya akan sharing  tentang cara membuat crud dengan Ionic PHP dan Mysql. Untuk versi Ionic yang saya gunakan menggunakan versi Ionic 3.

Baca juga Membuat Aplikasi CRUD Sederhana dengan Ionic 4 dan PHP MySQL 

Membuat CRUD dengan Ionic PHP dan Mysql

1. Buat database dan tabel dengan mysql, Contoh tabel yang akan kita gunakan bernama tabel barang.
CREATE TABLE `barang` (
  `id_barang` int(11) NOT NULL AUTO_INCREMENT,
  `nama_barang` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `qty` int(11) DEFAULT NULL,
  `harga` int(11) DEFAULT NULL,
  PRIMARY KEY (`id_barang`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2. Buat rest api sebagai web services untuk pertukaran data antar clien dan server. untuk rest api disini saya menggunakan slim framework sebagai alat bantu. Kamu bisa baca dokumentasi di slimframework.com

Cara instal slimframework menggunakan composer. Buka CMD, kemudian ketikkan kode berikut ini. 
composer require slim/slim "^3.12"

Baca juga Cara Instal dan Menggunakan Composer 

3. Buat koneksi ke database dengan PHP, beri nama config.php
<?php
error_reporting(0);
session_start();
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'ionic');
define("BASE_URL", "http://localhost/blog/crud/");
define("SITE_KEY", 'MariBelajarcoding');
function getDB() 
{ $dbhost=DB_SERVER;
 $dbuser=DB_USERNAME;
 $dbpass=DB_PASSWORD;
 $dbname=DB_DATABASE;
 $dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
 $dbConnection->exec("set names utf8");
 $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 return $dbConnection;
}
/* DATABASE CONFIGURATION END */
/* API key encryption */
function apiToken($session_uid)
{
$key=md5(SITE_KEY.$session_uid);
return hash('sha256', $key);
}
?>

4. Buat file index.php, file ini berguna untuk memanggil fungsi crudnya.
<?php
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Content-Type: application/json');
require 'vendor/autoload.php';
require 'config.php';
$app = new Slim\App();

$app->get('/Data_Barang','Data_Barang');
$app->post('/Input_Barang','Input_Barang');
$app->post('/Get_Barang_Edit','Get_Barang_Edit');
$app->post('/Edit_Barang','Edit_Barang');
$app->post('/Delete_Barang','Delete_Barang');
$app->run();

function Data_Barang($request, $response){
    $data = $request->getParsedBody();
    //$login=$data['login'];
    //$token=$data['token'];   
    //$systemToken=apiToken($login);   
    try {         
        //if($systemToken == $token){
            $Data_Barang = '';
            $db = getDB();            
            $sql = "SELECT * FROM barang";
            $stmt = $db->prepare($sql);
            $stmt->execute();
            $Data_Barang = $stmt->fetchAll(PDO::FETCH_OBJ);           
            $db = null;
            if($Data_Barang)
            echo '{"Data_Barang": ' . json_encode($Data_Barang) . '}';
            else
            echo '{"Data_Barang": ""}';
        //} else{
        //    echo '{"error":{"text":"No access"}}';
        //}       
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

function Input_Barang($request, $response){
    $data = $request->getParsedBody();
    $nama_barang=$data['nama_barang'];
    $qty=$data['qty'];
    $harga=$data['harga'];
    //$login=$data['login'];
    //$token=$data['token'];   
    //$systemToken=apiToken($login);   
    try {         
        //if($systemToken == $token){
            $db = getDB();            
            $sql = "INSERT INTO barang(nama_barang, qty, harga) VALUES(:nama_barang ,:qty, :harga)";
            $stmt = $db->prepare($sql);
            $stmt->bindParam("nama_barang", $nama_barang, PDO::PARAM_STR);
            $stmt->bindParam("qty", $qty, PDO::PARAM_STR);
            $stmt->bindParam("harga", $harga, PDO::PARAM_STR);
            $stmt->execute();        
            $db = null;
            if($stmt)
            echo '{"Input_Barang": "input success"}';
            else
            echo '{"Input_Barang": "input error"}';
        //} else{
        //    echo '{"error":{"text":"No access"}}';
        //}       
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}


function Get_Barang_Edit($request, $response){
    $data = $request->getParsedBody();
    $id_barang=$data['id_barang'];
    //$login=$data['login'];
    //$token=$data['token'];   
    //$systemToken=apiToken($login);   
    try {         
        //if($systemToken == $token){
      $Get_Barang_Edit = '';
            $db = getDB();            
            $sql = "SELECT * FROM barang WHERE id_barang=:id_barang";
            $stmt = $db->prepare($sql);
            $stmt->bindParam("id_barang", $id_barang, PDO::PARAM_STR);
            $stmt->execute();  
            $Get_Barang_Edit = $stmt->fetchAll(PDO::FETCH_OBJ);          
            $db = null;
            if($Get_Barang_Edit)
            echo '{"Get_Barang_Edit": ' . json_encode($Get_Barang_Edit) . '}';
            else
            echo '{"Get_Barang_Edit": ""}';
        //} else{
        //    echo '{"error":{"text":"No access"}}';
        //}       
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

function Edit_Barang($request, $response){
    $data = $request->getParsedBody();
    $id_barang=$data['id_barang'];
    $nama_barang=$data['nama_barang'];
    $qty=$data['qty'];
    $harga=$data['harga'];
    //$login=$data['login'];
    //$token=$data['token'];   
    //$systemToken=apiToken($login);   
    try {         
        //if($systemToken == $token){
            $db = getDB();            
            $sql = "UPDATE barang SET nama_barang=:nama_barang, qty=:qty, harga=:harga WHERE id_barang=:id_barang";
            $stmt = $db->prepare($sql);
            $stmt->bindParam("id_barang", $id_barang, PDO::PARAM_STR);
            $stmt->bindParam("nama_barang", $nama_barang, PDO::PARAM_STR);
            $stmt->bindParam("qty", $qty, PDO::PARAM_STR);
            $stmt->bindParam("harga", $harga, PDO::PARAM_STR);
            $stmt->execute();        
            $db = null;
            if($stmt)
            echo '{"Edit_Barang": "Edit success"}';
            else
            echo '{"Edit_Barang": "Edit error"}';
        //} else{
        //    echo '{"error":{"text":"No access"}}';
        //}       
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

function Delete_Barang($request, $response){
    $data = $request->getParsedBody();
    $id_barang=$data['id_barang'];
    //$login=$data['login'];
    //$token=$data['token'];   
    //$systemToken=apiToken($login);   
    try {         
        //if($systemToken == $token){
            $db = getDB();            
            $sql = "DELETE FROM barang WHERE id_barang=:id_barang";
            $stmt = $db->prepare($sql);
            $stmt->bindParam("id_barang", $id_barang, PDO::PARAM_STR);
            $stmt->execute(); 
            $db = null;
            if($stmt)
            echo '{"Delete_Barang": "Delete success"}';
            else
            echo '{"Delete_Barang": "Delete error"}';
        //} else{
        //    echo '{"error":{"text":"No access"}}';
        //}       
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

5. Agar rest api bisa di akses, buat .htaccess
# Note: see https://httpd.apache.org/docs/current/howto/htaccess.html:
#
# "You should avoid using .htaccess files completely if you have access to
# httpd main server config file. Using .htaccess files slows down your Apache
# http server. Any directive that you can include in a .htaccess file is
# better set in a Directory block, as it will have the same effect with
# better performance."
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

6. Pastikan file yang telah dibuat satu folder dengan library slim frameworknya. Struktur folder di htdocs nanti seperti ini
Membuat CRUD dengan Ionic PHP dan Mysql

Tutorial Membuat CRUD dengan Ionic PHP dan Mysql Part 1 sampai disini. Untuk selanjutnya pada part 2 kita akan melanjutkan cara menampilkan data dari mysql di aplikasi ionic.

Baca juga

Related Posts

Load comments