DEV Community

Cover image for REST API with PHP and SQLite // Case Study Android Note App
Ayatullah Ma'arif
Ayatullah Ma'arif

Posted on

REST API with PHP and SQLite // Case Study Android Note App

Hola!

Dalam tutorial kali ini, kita akan membuat Database yang dapat dihubungkan dengan project Android Studio. Studi kasus saya kali ini adalah aplikasi note.

PHP

Langkah pertama adalah pembuatan folder project, folder tersebut harus diletakkan di htdocs xampp C:\xampp\htdocs folder saya kali ini saya namai NOTEmplate. Lalu buatlah file php, disini saya namai dengan index.php

Di file index.php, buatlah variabel untuk menginisiasi nama file database, lalu dengan PDO kita dapat mengeksekusi pembuatan file database tersebut. Untuk evaluasi error kita dapat menggunakan try & catch, didalam try kita juga akan sekalian menginisiasi pembuatan tabel dengan bahasa SQLite dan PHP

$file_db = "notemplate.db";

try{
    $pdo = new PDO("sqlite:$file_db");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    //tabel akun
    $sql_create = "CREATE TABLE IF NOT EXISTS 'akun'(
        'id_akun' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        'username' TEXT NOT NULL,
        'password' TEXT NOT NULL)";
    $pdo->exec($sql_create);

    //tabel konten
    $sql_create = "CREATE TABLE IF NOT EXISTS 'konten'(
        'id_konten' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        'judul' TEXT NOT NULL,
        'konten' TEXT NOT NULL,
        'created_at' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP)";
    $pdo->exec($sql_create);
}
catch(Throwable $th){
    throw new  PDOException($e->getMessage(),(int)$e->getCode());
}

Enter fullscreen mode Exit fullscreen mode

Disini saya membuat 2 tabel, tabel akun dan konten. Tiap tabel akan membutuhkan method agar dapat beroperasi.

Method yang saya buat disini adalah :
GET untuk mendapatkan data dari server
POST untuk menginput data baru
DELETE untuk menghapus data

Additional : Apabila yang berhubungan dengan aplikasi adalah mesin maka harus ditambahkan header('Content-Type: application/json'); Secara default aplikasi menggunakan json, namun apabila yang berhubungan adalah manusia, maka dapat dilewati.

//mehtod tabel akun
if($_SERVER['REQUEST_METHOD'] === 'GET'){
    $query = 'SELECT * FROM akun ORDER BY id_akun ASC';
    $stmt = $pdo->prepare($query);
    $stmt->execute();
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($data);
}
else if($_SERVER['REQUEST_METHOD'] === 'POST'){
    if($_POST['username']!="" && $_POST['password']!="" ){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $query = "INSERT INTO akun (username, password) VALUES (?,?)";
        $stmt = $pdo->prepare($query);
        $res = $stmt->execute([$username, $password]);
        if($res){
            $data = ['username'=>$username, 'password'=>$password];
            echo json_encode($data);
        }else{
            echo json_encode(['error'=>$stmt->errorCode()]);
        }
    }
}
else if($_SERVER['REQUEST_METHOD'] === 'DELETE'){
    if($_GET['id_akun'] != ''){
        $id_akun = $_GET['id_akun'];
        $query = "DELETE FROM akun WHERE id_akun = ?";
        $stmt = $pdo->prepare($query);
        $res = $stmt->execute([$id_akun]);
        if($res){
            $data = ['id_akun'=>$id_akun];
            echo json_encode($data);
        }else{
            echo json_encode(['error'=>$stmt->errorCode()]);
        }
    }
}



// Method tabel konten

    if($_SERVER['REQUEST_METHOD'] === 'GET'){
        $query = 'SELECT * FROM konten ORDER BY created_at DESC';
        $stmt = $pdo->prepare($query);
        $stmt->execute();
        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($data);
    }
    else if($_SERVER['REQUEST_METHOD'] === 'POST'){
        if($_POST['konten']!="" && $_POST['konten']!="" ){
            $judul = $_POST['judul'];
            $konten = $_POST['konten'];
            $query = "INSERT INTO konten (judul, konten) VALUES (?,?)";
            $stmt = $pdo->prepare($query);
            $res = $stmt->execute([$judul, $konten]);
            if($res){
                $data = ['jodul'=>$judul, 'konten'=>$konten];
                echo json_encode($data);
            }else{
                echo json_encode(['error'=>$stmt->errorCode()]);
            }
        }
    }
    else if($_SERVER['REQUEST_METHOD'] === 'DELETE'){
        if($_GET['id_konten'] != ''){
            $id_konten = $_GET['id_konten'];
            $query = "DELETE FROM konten WHERE id_konten = ?";
            $stmt = $pdo->prepare($query);
            $res = $stmt->execute([$id_konten]);
            if($res){
                $data = ['id_konten'=>$id_konten];
                echo json_encode($data);
            }else{
                echo json_encode(['error'=>$stmt->errorCode()]);
            }
        }
    }
Enter fullscreen mode Exit fullscreen mode

POSTMAN

Untuk mengoperasikan method method diatas kita tidak bisa menggunakan browser biasa, kita perlu menggunakan aplikasi khusus yaitu Postman . Sebelum kita masuk ke postman, kita aktifkan dulu apache di dalam Xampp.

Activate Apache on Xampp

Buka postman, dan buat tab baru. Dalam url kita isikan localhost/(folder dalam htdocs)/(nama folder php)/ itu untuk default, jika anda memodifikasi port, maka masukkan juga portnya. localhost:(port)/.../... untuk url saya disini localhost/NOTEmplate/index.php.

GET => pilih GET di sebelah kiri url, lalu send.

Method GET

Bisa dilihat dibagian bawah, output menghasilkan 2 bracket kosong, untuk dua tabel.

File database seharusnya terbuat setelah anda menekan send, file dapat dilihat di folder htdocs, penamaannya juga seharusnya sesuai dengan inisiasi variabel file_db di index.php yang sudah kita buat.

Database File

POST => pilih POST di sebelah kiri url, lalu kita harus mengisikan kolom dan valuenya terlebih dahulu, caranya dengan memilih Body(ada dibawah url) lalu form-data(ada dibawah body).

Method POST

Bisa dilihat dibagian bawah, hasil nya sudah masuk. Kita bisa melihat seluruh isi tabel dengan get.

Method GET

Jika anda ingin mengisikan salah satu tabel saja, sebenarnya bisa, tetapi akan ada warning, namun itu tidak masalah data akan tetap masuk.

Method POST

Method GET

DELETE => pilih DELETE di sebelah kiri url, lalu kita harus mengisikan id dari data yang akan di hapus, caranya dengan memilih Params(ada dibawah url). Isikan nama id dari tabel mana yang akan dihapus, disini saya akan menghapus dari tabel konten, lalu isikan id dari data mana yang akan dihapus, disini saya akan menghapus konten dengan id 2.

Method DELETE

Akan ada warning, karena kita tidak mengisikan kolom id_akun, namun tidak masalah. Data akan tetap terhapus. Jika ingin melihat data yang tersisa bisa menggunakan method get.

Method GET

Anda juga dapat mengecek menggunakan sqliteonline.com, dengan cara upload file database(yang ada di folder htdocs xampp), gunakan command SELECTuntuk melihat data.

Check on sqliteonline

THANKS

Terima kasih atas perhatiannya, feel free to ask on comment. Good luck ☺;

Top comments (0)