*/

Rabu, 23 Agustus 2017

Pengertian dan Cara Mengunakan INNER, RIGHT, DAN LEFT JOIN DALAM MYSQL

Pada kali ini saya akan menjelaskan tentang Inner Join,Right Join,dan Left Join dan cara mengunakannya dalam mysql.

Pertama-tama
1.Buat database,dengan nama yang anda inginkan

2.Buat minimal 2 tabel

3.Insert tabel

4.Buka sql lalu,ketik seperti dibawah ini
  • Inner Join berguna untuk menggabungkan tabel dan harus membutuhkan satu kolom unik yang ada di primary key atau froign key.

  • Right Join berguna menampilkan semua data pada tabel kedua (kanan), namum NULL pada tabel pertama kiri.
  • Left Join berguna untuk menampilkan semua data pada tabel pertama(kiri), namun NULL pada tabel kedua (kanan).
Sekian dari saya semoga bermanfaat






Jumat, 11 Agustus 2017

Instal Laravel 5.4 dan Routing Dasar Laravel

Kali ini saya akan menjelaskan tentang cara Instal Laravel dengan mengunakan composer
Pertama-tama siapkan
Composer :https://getcomposer.org/download/
Xampp : https://www.apachefriends.org/index.html


  • Setelah itu buka CMD masuk kedirectory Xampp/htdoc
  • Lakukan Comand ini,untuk mendownload framework laravel.
  • Tunggu Hingga selesai.
  • Buka http://localhost:8000/ digoogle
      Routing Dasar Laravel
  • Buka sublime open folder laravelnya
  • Bikin file baru diView dengan nama Ard.blade.php
  • Lalu buka file web.php difolder Routes
  • Buka http://localhost:8000/test dengan google 
  • Maka hasil URL tersebut seperti ini


Jumat, 04 Agustus 2017

Membuat Codeigniter RestApi dan JWT

Membuat Rest API dengan Codeigniter + JWT




REST (REpresentational State Transfer) merupakan standar arsitektur komunikasi berbasis web yang sering diterapkan dalam pengembangan layanan berbasis web. Umumnya menggunakan HTTP (Hypertext Transfer Protocol) sebagai protocol untuk komunikasi data. REST pertama kali diperkenalkan oleh Roy Fielding pada tahun 2000.
Pada arsitektur REST, REST server menyediakan resources (sumber daya/data) dan REST client mengakses dan menampilkan resource tersebut untuk penggunaan selanjutnya. Setiap resource diidentifikasi oleh URIs (Universal Resource Identifiers) atau global ID. Resource tersebut direpresentasikan dalam bentuk format teks, JSON atau XML. Pada umumnya formatnya menggunakan JSON dan XML.
Web service adalah standar yang digunakan untuk melakukan pertukaran data antar aplikasi atau sistem, karena aplikasi yang melakukan pertukaran data bisa ditulis dengan bahasa pemrograman yang berbeda atau berjalan pada platform yang berbeda. Contoh implementasi dari web service antara lain adalah SOAP dan REST.
Pada kali ini saya akan memberikan sedikit tutorial mengenai “Cara membuat REST API dengan Codeigniter dan JWT (Json Web Token), bahan-bahan yang diperlukan adalah sebagai berikut:
-Framework Codeigniter 3.1.5 Link: (https://codeigniter.com/download).
-ComposerLink: (https://getcomposer.org/download/).
-Library RESTServer Link: (https://github.com/chriskacerguis/codeigniter-restserver).
-Library PHP-JWT Link: (https://github.com/firebase/php-jwt).
Kalau sudah,Extract Codeigniter terbaru , kemudian extract Codeigniter Rest Server, Kemudian Copy File CodeIgniter RestServer kefolder codeigniter,Extract JWT Ke folder codegniter yang kalian buat tadi dan masukkan kedalam Application->Libraries->Jwt.
Ini adalah databasenya
disini saya membuat database dengan nama 'ard',ada 5 tabel yaitu,user_adit,transaksi_adit,produk_adit,detail_transaksi_adit,dan acl.

Kemudia jika sudah membuat database,kita ubah nama database pada folder database.php pada folder Aplication->Config

-Selanjutnya buat file dengan nama Restdata.php didalam folder Controllers.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require_once APPPATH . 'libraries/REST_Controller.php';
require APPPATH . '/libraries/jwt/JWT.php';
require APPPATH . '/libraries/jwt/BeforeValidException.php';
require APPPATH . '/libraries/jwt/ExpiredException.php';
require APPPATH . '/libraries/jwt/SignatureInvalidException.php';
use \Firebase\JWT\JWT;

class Restdata extends REST_Controller{

  private $secretkey = 'walach';

  public function __construct(){
    parent::__construct();
    $this->load->library('form_validation');
  }


  //method untuk not found 404
  public function notfound($pesan){

    $this->response([
      'status'=>FALSE,
      'message'=>$pesan
    ],REST_Controller::HTTP_NOT_FOUND);

  }

  //method untuk bad request 400
  public function badreq($pesan){
    $this->response([
      'status'=>FALSE,
      'message'=>$pesan
    ],REST_Controller::HTTP_BAD_REQUEST);
  }

  //method untuk melihat token pada user
  public function viewtoken_post(){
    $this->load->model('Login_model');

    $date = new DateTime();

    $username = $this->post('username',TRUE);
    $pass = $this->post('password',TRUE);

    $dataadmin = $this->Login_model->is_valid($username);

    if ($dataadmin) {

      if (password_verify($pass,$dataadmin->password)) {

        $payload['id'] = $dataadmin->id;
        $payload['username'] = $dataadmin->username;
        $payload['iat'] = $date->getTimestamp(); //waktu di buat
        $payload['exp'] = $date->getTimestamp() + 3600; //satu jam

        $output['id_token'] = JWT::encode($payload,$this->secretkey);
        $this->response([
      'status'=>'Success',
      'Message'=>'Token will expired in one hour.',
      'Token'=>$output,
      ],HTTP_OK);
      }else {
        $this->viewtokenfail($username,$pass);
      }
    }else {
      $this->viewtokenfail($username,$pass);
    }
  }

  //method untuk jika view token diatas fail
  public function viewtokenfail($username,$pass){
    $this->response([
      'status'=>'Hihi Gagal.!!',
      'username'=>$username,
      'password'=>$pass,
      'message'=>'Username dan Password yang anda masukan salah'
      ],HTTP_BAD_REQUEST);
  }

//method untuk mengecek token setiap melakukan post, put, etc
  public function cektoken(){
    $this->load->model('Login_model');
    $jwt = $this->input->get_request_header('Authorization');

    try {

      $decode = JWT::decode($jwt,$this->secretkey,array('HS256'));
      //melakukan pengecekan database, jika username tersedia di database maka return true
      if ($this->Login_model->is_valid_num($decode->username)>0) {
        return true;
      }

    } catch (Exception $e) {
      exit('Tokennya Expired Kali </3');
    }
  }
}
-Selanjutnya buat controller difolder Aplication-Controllers dengan nama Akuapi.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require_once APPPATH . 'controllers/Restdata.php';

class AkuApi extends Restdata{

  public function __construct(){
    parent::__construct();
    $this->cektoken();
    }

    function index_get()
    {
      echo 'GET Request NOT Acceptable <br>'.current_url();
    }

    function index_post()
    {
      echo 'POST Request NOT Acceptable<br>'.current_url();
    }

    function index_put()
    {
      echo 'PUT Request Not Acceptable <br>'.current_url();
    }
    function index_delete()
    {
      echo 'DELETE Request Not Acceptable <br>'.current_url();
    }
      function produk_get(){
      $id = $this->uri->segment(3);
      if ($id == '') {
        $pro = $this->db->get('produk_adit')->result();
      } else {
        $this->db->where('id_produk', $id);
        $pro = $this->db->get('produk_adit')->result();
      }
      $this->response($pro, 200);
    }
    function produk_post(){
      $data = ['id_produk'=>$this->post('id'),
               'nama'=>$this->post('nama'),
               'deksripsi'=>$this->post('deskripsi'),
               'hrg'=>$this->post('harga'),
               'gambar'=>$this->post('file')];
      $simpan = $this->db->insert('produk_adit', $data);
      if ($simpan) {
        $this->response([
          'status'=>'Success',
          'Inserted'=>$data],HTTP_OK);
      }
    }
    }

-Selanjutnya buat model dengan nama Login_model.php difolder aplication-models
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login_model extends CI_Model{

  public function __construct()
  {
    parent::__construct();
    $this->load->database();

  }

  public function is_valid($username){
    $this->db->select('*');
    $this->db->from('user_adit');
    $this->db->where('username',$username);
    $query = $this->db->get();
    return $query->row();
  }

  public function is_valid_num($username){
    $this->db->select('*');
    $this->db->from('user_adit');
    $this->db->where('username',$username);
    $query = $this->db->get();
    return $query->num_rows();
  }

}

-Selanjutnya kita coba Api dengan membuat user untuk mengambil token jwt sebelum meng get data dan post data,karena tanpa token kita tidak bisa memangil Api.
-Buka postman lalu ketik:
Localhost/namafolder/index.php/restdata/viewtoken.

-Selanjutnya method post dengan link

-Selanjutnya Get data dengan link Localhost/ard/Codeigniter-develop/index.php/akuapi.php/produk

Sekian tutorial dari saya,semoga bisa bermanfaat untuk kalian.