Categories
Code

Memprogram Database SQLite3 di PHP

SQLite adalah engine database yang paling banyak dipakai, digunakan di setiap smartphone dan di banyak komputer, dibundel dibanyak aplikasi yang digunakan sehari-hari. Meski aplikasi server seperti PHP lebih mengandalkan database server seperti MySQL atau PostgreSQL, SQLite dapat menjadi pilihan tepat untuk aplikasi yang berjalan di server tunggal dan membutuhkan engine database yang ringan.

SQLite3 adalah SQLite versi 3, peningkatan dari versi sebelumnya 2.8. Saat tulisan ini dibuat, rilis terakhir SQLite3 yang dapat dipakai adalah versi 3.29.0

Instalasi Modul dan Klien

Sebelum menggunakan SQLite di PHP, lakukan pemasangan modul sqlite3 dengan perintah berikut:

 $ sudo apt install php-sqlite3

Jika membangun aplikasi PHP di windows, pastikan ekstensi sqlite3 diaktifkan, berikut baris kode di php.ini untuk mengaktifkan ekstensi sqlite3:

...
;extension=sockets
extension=sqlite3
;extension=tidy
...

Instal pula aplikasi klien untuk dapat bekerja menggunakan SQLite, seperti membuat database baru dan mengatur bentuk tabel. Di Linux, aplikasi klien dapat diinstal dengan perintah berikut:

sudo apt install sqlite3

Aplikasi klien untuk sistem operasi lain bisa diunduh melalui: https://www.sqlite.org/download.html.

Alternatif selain aplikasi klien berbasis baris perintah / CLI, aplikasi klien SQLite juga terdapat antarmuka berbasis grafis / GUI, salah satunya adalah SQLite Browser yang dapat diunduh melalui https://sqlitebrowser.org/

Buat Database

Sebelum melakukan pemprograman database SQLite menggunakan PHP, buat database baru dengan perintah sebagai berikut:

$ sqlite3 my.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite> 

Dari perintah di atas, akan dibuat database dengan nama my.db. Pada command prompt sqlite>, masukkan beberapa perintah berikut:

sqlite> .tables
sqlite> .exit

Akses SQLite3 di PHP

Kelas SQLite3 digunakan sebagai interface untuk berinteraksi dengan database SQLite. Berikut contoh menampilkan versi SQLite3 yang digunakan oleh PHP.

<?php
$ver = SQLite3::version();
echo $ver['versionString'] . "\n";

Simpan file di atas dengan nama version.php kemudian jalankan perintah:

$ php version.php 
SQLite3 version 3.29.0

Berikut contoh lain mengakses database SQLite3 yang telah dibuat sebelumnya:

<?php
$db = new SQLite3('my.db');
echo $db->querySingle('SELECT SQLITE_VERSION()') . "\n";

Simpan skrip di atas sebagai file access.php kemudian jalankan:

$ php version.php 
3.29.0

Method exec()

Method exec() Menjalankan query tanpa hasil terhadap suatu database. Fungsi ini dapat digunakan untuk membuat tabel atau memasukkan record ke dalam tabel.

<?php
$db = new SQLite3('my.db');

$sql = "CREATE TABLE `people` (
  `id`	INTEGER PRIMARY KEY AUTOINCREMENT,
  `name`	TEXT,
  `gender`	TEXT,
  `age`	INT,
  `city`	TEXT,
  `created_at`	TEXT
)";
$db->exec($sql);

$db->exec("INSERT INTO people (`name`, `gender`, `age`, `city`, `created_at`) 
    VALUES ('Caydence Dillon','Female',NULL,'Amarillo','3/30/2019 4:37 PM');");
$db->exec("INSERT INTO people (`name`, `gender`, `age`, `city`, `created_at`) 
    VALUES ('Doug Baldwin','Male',52,'Indianapolis','1/24/2019 1:38 PM');");
$db->exec("INSERT INTO people (`name`, `gender`, `age`, `city`, `created_at`) 
    VALUES ('David Janes','Male',62,'Anaheim','2/11/2019 8:07 AM');");

$last_row_id = $db->lastInsertRowID();
echo "The last inserted row ID is $last_row_id \n";

Kode di atas membuat tabel people dan menambahkan 3 baris data ke tabel tersebut. Di bagian terakhir kode, terdapat method lastInsertRowID() untuk mengetahui ID terakhir dari baris yang telah dimasukkan ke dalam tabel. Jalankan kode di atas sebagai berikut:

$ php exec.php
The last inserted row ID is 3

Untuk melihat data yang telah dimasukkan ke dalam database, gunakan konsol sqlite3 berikut:

$ sqlite3 my.db
sqlite> .mode column
sqlite> .headers on
sqlite> select * from people;
id          name             gender      age         city        created_at       
----------  ---------------  ----------  ----------  ----------  -----------------
1           Caydence Dillon  Female                  Amarillo    3/30/2019 4:37 PM
2           Doug Baldwin     Male        52          Indianapol  1/24/2019 1:38 PM
3           David Janes      Male        62          Anaheim     2/11/2019 8:07 AM

Query Data

Dalam bahasa SQL, statement SELECT digunakan untuk mengambil data dalam tabel. Ada dua method yang dapat digunakan untuk query data menggunakan statement SELECT, yaitu method querySingle dan method query.

Method querySingle mengembalikan nilai dari kolom pertama yang dihasilkan query. Sebagai contoh:

<?php
$db = new SQLite3('my.db');

$name = $db->querySingle('SELECT name FROM people WHERE id=2');
echo "Name: $name";

Kode di atas akan menghasilkan nilai dari kolom name yang mempunyai id = 2, output yang dihasilkan:

Name: Doug Baldwin

Parameter kedua method querySingle dapat diset true untuk menghasilkan array dari seluruh baris pertama.

$person = $db->querySingle('SELECT name, gender, age FROM people WHERE id=3', true);
echo "Name: {$person['name']}, Gender: {$person['gender']}, Age: {$person['age']}";

Kode di atas akan menghasilkan output:

Name: Doug Baldwin, Gender: Male, Age: 52

Sedangkan method query() mengembalikan nilai objek dari kelas SQLite3Result. Method ini dapat digunakan untuk mengambil seluruh data yang dihasilkan dari statement SELECT. Sebagai contoh:

$res = $db->query("SELECT id, name, gender, age FROM people");
while ($row = $res->fetchArray()) {
    echo "{$row['id']}. {$row['name']}: {$row['gender']} {$row['age']} \n";
}

Kode di atas akan mengasilkan:

1. Caydence Dillon: Female  
2. Doug Baldwin: Male 52 
3. David Janes: Male 62 

Escape String

Gunakan method escapeString() untuk escape string sebelum eksekusi atau query statement SQL.

<?php
$db = new SQLite3('my.db');

$name  = "O'Reilly";
$escaped_name = SQLite3::escapeString($name);

$db->exec("INSERT INTO people (`name`, `gender`, `age`, `city`, `created_at`).
    VALUES('$escaped_name','Male',41,'Wien','2/1/2019 2:11 PM');");

$person = $db->querySingle("SELECT name, gender, age FROM people WHERE name LIKE '%{$escaped_name}%'", true);
echo "Name: {$person['name']}, Gender: {$person['gender']}, Age: {$person['age']}";

Parameter Binding Pada Statement SQL

Saat aplikasi berhadapan dengan input dari user, statement SQL dibuat menjadi dinamis. Faktor keamanan menjadi hal utama saat berhadapan dengan input yang dimasukkan user. Cara yang disarankan untuk membuat statement SQL secara dinamis adalah dengan menggunakan pengikatan parameter.

Query dengan parameter dibuat dengan method prepare(), digunakan untuk menyiapkan statement SQL. Method ini akan mengembalikan objek dari kelas SQLite3Stmt. Objek statement tersebut mempunyai method bindParam() dan bindValue() yang digunakan untuk mengikat / binding value ke placeholder.

Method bindParam() digunakan untuk mengikat parameter ke variabel statement.

<?php
$db = new SQLite3('my.db');

$stmt = $db->prepare("INSERT INTO people 
    (`name`, `gender`, `age`, `city`, `created_at`)
    VALUES(:name, :gender, :age, :city, :created_at);");
$stmt->bindParam(':name', $name, SQLITE3_TEXT);
$stmt->bindParam(':gender', $gender, SQLITE3_TEXT);
$stmt->bindParam(':age', $age, SQLITE3_INTEGER);
$stmt->bindParam(':city', $city, SQLITE3_TEXT);
$stmt->bindParam(':created_at', $created_at, SQLITE3_TEXT);

$name = 'Abdul Radley';
$gender = 'Male';
$age = 57;
$city = 'Fremont';
$created_at = '9/18/2019 2:56 PM';
$stmt->execute();

$name = 'Daron Reyes';
$gender = 'Male';
$age = 37;
$city = 'Las Vegas';
$created_at = '6/6/2019 3:44 PM';
$stmt->execute();

Method bindValue() digunakan untuk mengikat nilai dari parameter ke variabel statement.

<?php
$db = new SQLite3('my.db');

$stmt = $db->prepare("INSERT INTO people 
    (`name`, `gender`, `age`, `city`, `created_at`)
    VALUES(:name, :gender, :age, :city, :created_at);");

$stmt->bindValue(':name', 'Rick Martin', SQLITE3_TEXT);
$stmt->bindValue(':gender', 'Male', SQLITE3_TEXT);
$stmt->bindValue(':age', 59, SQLITE3_INTEGER);
$stmt->bindValue(':city', 'New Orleans', SQLITE3_TEXT);
$stmt->bindValue(':created_at', '1/11/2019 5:26 PM', SQLITE3_TEXT);
$stmt->execute();

$stmt->bindValue(':name', 'Peter Wilson', SQLITE3_TEXT);
$stmt->bindValue(':gender', 'Male', SQLITE3_TEXT);
$stmt->bindValue(':age', 55, SQLITE3_INTEGER);
$stmt->bindValue(':city', 'Louisville', SQLITE3_TEXT);
$stmt->bindValue(':created_at', '1/19/2019 7:13 AM', SQLITE3_TEXT);
$stmt->execute();

Kode Github

Categories
Code

Laravel Artisan Console, Membuat Aplikasi CLI

Ketika kamu membutuhkan antarmuka command-line (command-line interface / CLI), kamu dapat memanfaatkan fitur Artisan Console. Laravel menyediakan sejumlah perintah Artisan dengan menggunakan memanggil perintah list

php artisan list

Untuk menambahkan perintah Artisan, dapat dibuat dengan perintah make:command. Kita akan membuat sebuah perintah Artisan untuk menampilkan kota seperti pada contoh sebelumnya:

php artisan make:command ViewCities

File perintah Artisan tersebut disimpan di app\Console\ViewCities.php.

<?php
namespace App\Console\Commands;

use Illuminate\Console\Command;

class ViewCities extends Command
{

    protected $signature = 'city:view';

    protected $description = 'View cities';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        //
    }
}

Isikan variabel $signature dengan nama perintah Artisan dan masukkan deskripsinya di variabel $description.

Baris-baris kode yang ada di method handle() akan dieksekusi saat perintah Artisan yang dibuat dijalankan. Berikut contoh kode untuk menampilkan daftar kota:

public function handle()
{
    $this->info("Daftar Kota");

    $cities = \App\City::all();
    foreach ($cities as $city) {
        $this->line("- {$city->name}: {$city->map}");
    }
}

Agar perintah Artisan dapat digunakan, masukkan class tersebut ke dalam variabel $commands yang ada di file app/Console/Kernel.php

protected $commands = [
        ...
        Commands\ViewCities::class
    ];

Panggil perintah artisan tersebut dengan perintah:

  php artisan city:view

Berikut kode lengkap:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class ViewCities extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'city:view';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'View cities';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $this->info("Daftar Kota");

        $cities = \App\City::all();
        foreach ($cities as $city) {
            $this->line("- {$city->name}: {$city->map}");
        }
    }
}
Categories
Code

Eloquent ORM di Laravel, Membuat Model Aplikasi

Laravel menyediakan cara mudah dalam mengakses database yaitu Eloquent ORM (Object Relational Model), sebuah implementasi ActiveRecord ketika bekerja dengan database. Setiap tabel database memiliki hubungan dengan model yang digunakan untuk berinteraksi dengan tabel tersebut.

Pada tulisan sebelumnya, kita sudah memiliki tabel dalam database yang dibuat melalui migration bernama cities dan memasukkan data dummy ke dalam tabel tersebut. Tulisan ini akan melanjutkan pemodelan data yang dihubungkan dengan tabel dan data di dalamnya.

Model aplikasi mengijinkan untuk query data di dalam tabel, serta menambahkan, mengubah atau menghapus data tersebut. Tulisan kali ini akan membahas cara membuat model, bagaimana ketentuan dalam model dan mengambil data (query) yang akan ditampilkan ke laman web.

Membuat Model

Membuat model dapat dilakukan dengan menggunakan perintah Artisan make:model. Model yang akan dibuat bernama City dan dihubungkan ke tabel cities yang terdapat di database.

$ php artisan make:model City

Dalam pembuatan model, migration dapat dibuat secara otomatis dibuat dengan menyertakan opsi --migration atau disingkat -m. Berikut perintah pembuatan model beserta migration:

$ php artisan make:model City --migration
$ php artisan make:model City -m
Model created successfully.
Created Migration: 2019_03_17_005308_create_cities_table

Model yang dibuat dengan perintah Artisan di atas akan disimpan di file app/City.php, berikut isi file model City:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class City extends Model
{
    
}

Ketentuan Pemodelan

Eloquent menganggap bahwa kelas model City secara otomatis terhubung dengan tabel cities, bentuk jamak dari nama kelas tersebut. Begitu pula ketika model User dibuat, maka diasumsikan terdapat tabel users di database yang dihubungkan dengan model tersebut. Keterkaitan model dengan tabel database tersebut dapat didefinisikan secara manual dengan melalui properti $table:

class City extends Model
{
    protected $table = 'tbl_city';    
}

Selain nama tabel, Eloquent juga menganggap bahwa setiap tabel memiliki kolom bernama id sebagai primary key. Gunakan properti $primaryKey jika ingin menggunakan nama kolom lain sebagai primary key tabel:

class City extends Model
{
    ...
    protected $primaryKey = 'city_ID';    
}

Elequent juga memiliki 2 kolom timestamp yang selalu ada di model yaitu created_at dan updated_at. Jika tidak menginginkan keberadaan kolom timestamp ini, set properti $timestamps menjadi false.

class City extends Model
{
    ...
    protected $timestamps = false;
}

Sama seperti pada tulisan sebelumnya membuat migration database, struktur tabel cities ketika dibuat menggunakan schema builder adalah sebagai berikut:

Schema::create('cities', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('map');
    $table->timestamps();
});

Masukkan data dummy dengan menggunakan seeder database, dan query data tersebut pada model dengan query builder. Sebagai contoh memanggil semua data dengan metode all():

App\City::all();

Untuk memastikan model berjalan dengan baik dengan memanggil metode di atas untuk ditampilkan ke dalam view seperti di bawah ini:

...
<h1>Daftar Kota Jabodetabek</h1>
@php $cities = App\City::all(); @endphp
<ul class="list-group">
    @foreach ($cities as $city)
    <li class="list-group-item">
        <a href="{{ $city->map }}" target="_blank">
            {{ $city->name }}
        </a>
    </li>
    @endforeach
</ul>
...

Hubungan antar Tabel

Tabel-tabel di database sering kali berhubungan satu sama lain. Sebagai contoh tabel People yang berisikan data penduduk berhubungan dengan tabel Cities.

Eloquent memudahkan mengelola hubungan antar tabel tersebut dan mendukung berbagai jenis hubungan. Untuk mempermudah pemahaman tentang relasi, sekarang kita buat model seorang penduduk yaitu model Person (bentuk tunggal dari People) yang berelasi dengan model City.

$ php artisan make:model Person -m
Model created successfully.
Created Migration: 2019_03_17_072450_create_people_table

Dari perintah di atas, dibuat secara otomatis migration tabel people, buat struktur tabel sebagai berikut:

Schema::create('people', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->unsignedBigInteger('city_id');
    $table->string('name');
    $table->string('age');
    $table->timestamps();
    $table->foreign('city_id')->references('id')->on('cities');
});

Dari struktur di atas dapat kita lihat bahwa terdapat field city_id sebagai foreign key yang berelasi dengan tabel cities. Jika dimodelkan, hubungan ini termasuk ke dalam tipe one-to-many, di mana City dapat mempunyai banyak data Person. Berikut kode pemodelan yang dilakukan di model City:

class City extends Model
{
    public function people()
    {
        return $this->hasMany('App\Person');
    }
}

Begitu pula di model Person yang mempunyai hubungan terbalik dengan model City di definisikan sebagai berikut:

class Person extends Model
{
    public function city()
    {
        return $this->belongsTo('App\City');
    }
}

Setelah hubungan dipetakan, kita dapat mengakses koleksi data Person dengan mengakses properti people

$people = App\City::find(1)->people;

foreach ($people as $person) {
    //
}

Kode Github

Categories
Code

Perhitungan Konversi Pembayaran Rupiah Menggunakan PayPal dengan PHP Programming

Instan, cepat dan aman, itulah alasan PayPal banyak digunakan sebagai salah satu metode pembayaran oleh website ecommerce, toko online, aplikasi atau jasa freelance. Sayangnya, semua transaksi yang dilakukan di Indonesia harus menggunakan Rupiah dan PayPal tidak mendukung mata uang Rupiah.

Lantas, bisakah PayPal digunakan sebagai metode pembayaran di Indonesia? Tentu saja bisa, mata uang untuk transaksi tetap menggunakan Rupiah, hanya saja ada perhitungan konversi dari Rupiah ke Dolar saat menggunakan metode pembayaran dengan PayPal.

Berikut adalah hal-hal yang harus dipertimbangkan dalam menggunakan PayPal dalam transaksi pembayaran, termasuk perhitungan konversi dari Rupiah ke Dolar, agar tidak rugi saat melakukan transaksi jual/beli:

  • Nilai tukar realtime (realtime exchange rates), untuk mendapatkan nilai tukar mata uang dengan akurat. Kita akan menggunakan API dari openexchangerates.org
  • Konversi mata uang dikenakan biaya 3.5% dari nominal yang dikonversi. Sebenarnya aplikasi yang melakukan konversi mata uang, pembayaran PayPal tetap menggunakan Dolar, hanya saja ketika kita menarik uang dari PayPal ke Bank di Indonesia dikenakan biaya konversi 3.5%. Informasi bisa dilihat di User Agreement PayPal
  • Paypal mengenakan biaya sampai dengan 4.4% dari nominal transaksi ditambah biaya tetap (fixed fee) $0.3. Informasi bisa dilihat dari laman seller fee PayPal

Mendapatkan Nilai Tukar Secara Realtime

Ada banyak penyedia API (Application Programming Interface) untuk mendapatkan nilai tukar atau exchange rates, kali ini kita akan menggunakan API dari openexchangerates.org. Silahkan kunjungi https://openexchangerates.org, kemudian lakukan pendaftaran dan dapatkan APP ID untuk memanggil API nilai tukar dari openexchangerates.org.

Setelah mendapatkan APP ID, berikut adalah kode untuk mendapatkan nilai tukar:

$api_app_id = "insert_app_id_of_openexchangeratesorg_here";
$api_url = "https://openexchangerates.org/api/latest.json?app_id=" . $api_app_id;

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch);

Hasil dari pemanggilan API openexchangerates.org dalam bentuk JSON disimpan ke variabel $output, berikut adalah isi dari variabel tersebut:

{
  ...
  "base": "USD",
  "rates": {
    "AED": 3.673181,
    "AFN": 71.540544,
    ...
    "IDR": 14044.474311
    ...
  }
}

Menghitung Nilai Konversi

Variabel $output yang didapatkan dari hasil pemanggilan API dalam bentuk string yang berisikan data JSON. Selanjutnya aplikasi mengubah data tersebut ke dalam object PHP dengan men-decode data tersebut:

$exchange = json_decode($output);

Dari proses decode JSON tersebut, untuk mendapatkan nilai tukar Rupiah diambil dari variabel $exchange->rates->IDR.

Seperti telah disebutkan di atas bahwa ada biaya 3.5% dari nominal yang dikonversi. Untuk menghitung nilai tukar ditambah dengan biaya konversi adalah sebagai berikut:

$rate = (1 / $exchange->rates->IDR) + ((1 / $exchange->rates->IDR) * 0.035);

Menghitung Harga, Biaya dan Nilai Total Transaksi

Tetapkan harga ke dalam variabel $price, kemudian lakukan perhitungan harga dalam USD, biaya PayPal sampai dengan 4.4% + $0.3 dan total dari transaksi.

$price = 50000;
$price_usd = round($price * $rate, 2);
$paypal_fee = round(($price_usd * 0.044) + 0.3, 2);
$total = $price_usd + $paypal_fee;

Untuk mengetahui nilai dari perhitungan di atas, kita tampilkan hasil perhitungan di atas dengan kode berikut:

echo "Price: Rp. {$price}\n";
echo "1 USD: Rp. {$exchange->rates->IDR}\n";
echo "\n";
echo "Price USD: $ {$price_usd}\n"; 
echo "Paypal Fee: $ {$paypal_fee}\n";
echo "Total: $ {$total}\n";

Kode Lengkap

Dari semua proses yang telah dilalui, berikut adalah kode lengkap menghitung nilai konversi harga dari Rupiah ke Dollar jika menggunakan PayPal sebagai metode pembayaran:

<?php
$api_app_id = "insert_app_id_of_openexchangeratesorg_here";
$api_url = "https://openexchangerates.org/api/latest.json?app_id=" . $api_app_id;

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch);

$exchange = json_decode($output);
$rate = (1 / $exchange->rates->IDR) + ((1 / $exchange->rates->IDR) * 0.035);

$price = 15000;
$price_usd = round($price * $rate, 2);
$paypal_fee = round(($price_usd * 0.044) + 0.3, 2);
$total = $price_usd + $paypal_fee;

echo "Price: Rp. {$price}\n";
echo "1 USD: Rp. {$exchange->rates->IDR}\n";
echo "\n";
echo "Price USD: $ {$price_usd}\n"; 
echo "Paypal Fee: $ {$paypal_fee}\n";
echo "Total: $ {$total}\n";

Simpan kode tersebut dalam file calculation.php, kemudian eksekusi seperti di bawah ini:


Tulisan ini adalah update dari tulisan yang telah diterbitkan sebelumnya dari https://steemit.com/programming/@saunghanan/perhitungan-konversi-untuk-pembayaran-rupiah-menggunakan-paypal-dengan-php-programming

Categories
Programming

Membuat Image Thumbnail di PHP, Menangani dan Memanipulasi Gambar dengan Intervention Image

Di saat mengembangkan aplikasi, ada kalanya kamu dihadapkan pada kasus membuat thumbnail gambar, terlebih aplikasi tersebut mendukung gallery foto. PHP mendukung fungsi-fungsi untuk pemprosesan gambar di antaranya GD atau ImageMagick. Pada tulisan ini, kita akan mencoba menangani dan memanipulasi gambar lebih mudah dan ekspresif dengan menggunakan pustaka bernama Intervention Image.

Intervention Image menyediakan cara yang lebih mudah dan ekspresif untuk membuat, mengedit, dan menyusun gambar. Pustaka ini menggunakan fungsi-fungsi pemprosesan gambar yang ada di PHP, saat ini hanya mendukung GD dan ImageMagick.

Berikut adalah perintah untuk instalasi menggunakan Composer:

$ php composer.phar require intervention/image

Alternatif lain, kamu bisa download kodenya dari Github: https://github.com/Intervention/image.


Persyaratan Sistem

Sebelum menggunakan Intervention Image, pastikan kamu memenuhi syarat sebagai berikut:

  • PHP >= 5.4
  • Fileinfo Extension
  • Pustaka PHP GD (>=2.0) atau ekstensi PHP Imagick (>=6.5.7)
Categories
Code

Membuat Data Dummy di Laravel dengan Seeder

UPDATE 12 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8

Ketika mengembangkan aplikasi, kita butuh data dummy di masukkan ke database untuk melakukan pengujian bahwa proses aplikasi yang sedang dibangun telah berjalan dengan baik. Laravel menyertakan metode sederhana dalam melakukan hal tersebut dengan fitur Database Seeding.

Kita ambil contoh dari skema database yang telah dibuat pada tulisan sebelumnya, kita akan memasukkan data kota pada tabel cities.

Menulis Seeder

Untuk menghasilkan sebuah seeder, gunakan perintah Artisan make:seeder berikut:

php artisan make:seeder CityTableSeeder

Kelas seeder CityTableSeeder yang dihasilkan akan disimpan di direktori database/seeds. Di dalam kelas seeder terdapat metode run() yang di dalamnya dapat dimasukkan proses menambahkan data ke tabel. Buka file database/seeds/CityTableSeeder dan masukkan proses menambahkan data berikut:

public function run() {
    $cities = [
        ['name' => 'Jakarta', 'map' => 'https://goo.gl/maps/ugdFU'],
        ['name' => 'Bogor', 'map' => 'https://goo.gl/maps/ExzYT'],
        ['name' => 'Depok', 'map' => 'https://goo.gl/maps/30JxC'],
        ['name' => 'Tangerang', 'map' => 'https://goo.gl/maps/Yn0yZ'],
        ['name' => 'Bekasi', 'map' => 'https://goo.gl/maps/T17QQ']
    ];

    DB::table('cities')->insert($cities);
}

Proses penambahan data di atas menggunakan query builder yang disediakan Laravel.

Menjalankan Seeder

Laravel menyertakan kelas DatabaseSeeder yang dijalankan dengan perintah Artisan db:seed. Masukkan Kelas seeder yang ingin dijalankan dengan memanggil metode call(). Berikut isi metode run() yang berisikan kelas-kelas seeder yang dipanggil:

public function run()
{
    $this->call(CityTableSeeder::class);
}

Berikut perintah untuk menjalankan seeder:

php artisan db:seed

Selain menjalan seed yang dipanggil dari kelas DatabaseSeeder, kelas seeder tersendiri dapat dipanggil langsung dari perintah Artisan db:seed dengan menyertakan opsi –class:

php artisan db:seed --class=CityTableSeeder

Kode Github

Categories
Code

Memulai Laravel PHP, Membuat Aplikasi Daftar Kota

UPDATE 6 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8. Klik di sini untuk mengetahui sistem yang dibutuhkan oleh Laravel 5.8.

Aplikasi akan memunculkan halaman web yang berisikan daftar kota sekitar Jakarta yang dikenal dengan Jabodetabek. Setiap item kota terdapat link yang mengarah ke lokasi peta kota tersebut. Langkah pembuatan aplikasi mulai dari instalasi Laravel, membuat routing dan view, sampai dengan hasil akhir dijalankan di web browser.

Instalasi Laravel

Laravel (http://laravel.com) menggunakan Composer (https://getcomposer.org) untuk instalasi dan pengelolaan dependency, pastikan Composer telah terinstal di komputer. Jika belum, instalasi dapat dilakukan melalui terminal (pada sistem operasi berbasis *nix):

curl -sS https://getcomposer.org/installer | php

Jika kamu menggunakan Windows, installer Composer dapat diunduh melalui https://getcomposer.org/Composer-Setup.exe. Informasi unduh Composer dapat dilihat langsung dari https://getcomposer.org/download/.

Categories
Programming

Built-in Web Server untuk Development PHP

Sebelum aplikasi PHP kamu berjalan di server dan diakses secara publik, ada fase di mana kamu harus mencoba kode-kode yang telah dibuat pada saat pengembangan (development) aplikasi. Sejak rilis PHP 5.4, PHP menyediakan fitur Built-in Web Server. Dengan fitur ini memungkinan pemprogram mencoba kode-kode tanpa harus memasang full-featured web server seperti Apache pada saat fase pengembangan sedang berlangsung.