2. Membuat Kalkulator

PHP: Membuat Kalkulator Biasa dan Scientific Sederhana

Pada pertemuan sebelumnya kita telah mempelajari tentang cara membuat form di PHP dan bagaimana cara memprosesnya. Kita juga telah mencoba contoh-contoh sederhana dari beberapa jenis isian form HTML.

Untuk lebih memantapkan pemahaman dan menguatkan gambaran umum tentang bagaimana mengelola data dari Form, pada pertemuan kali ini insyaallah kita akan mempelajari bagaimana cara membuat kalkulator dengan PHP.

Kita akan mencoba untuk membuat dua buah kalkulator:

  • Kalkulator sederhana
  • Kalkulator Scientific (yang juga sederhana)

Persiapan

Agar bisa mengikuti tutorial ini dengan baik, saya anggap anda telah:

Kenapa? Karena di dalam tutorial ini akan melibatkan hal-hal dasar seperti macam-macam tipe data PHPmacam-macam operatorlogika percabangan dan juga variabel casting.

Buat File PHP

Langsung saja, sebelum memulai ngoding, kita buat dulu 2 buah file php sebagai berikut:

kalkulator/
├── biasa.php
└── scientific.php

Masing-masing dari 2 file tersebut akan kita gunakan untuk menampilkan form, sekaligus juga menampilkan hasilnya.

Membuat Form Kalkulator Sederhana

Kita akan mulai dari membuat form untuk tipe kalkulator pertama. Kalkulator pertama ini hanya berupa dari dua buah inputan bertipe data number, dan satu inputan berupa dropdown (select) yang berisi operator aritmatika.

Langsung saja, buka file biasa.php lalu isi sebagai berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kalkulator Biasa | Jago Ngoding</title>
</head>
<body>
    <h1>Kalkulator Biasa</h1>
    <form>
        <input type="number" name="a" placeholder="Bilangan a">

        <select name="operator">
            <option selected disabled>Pilih Operator</option>
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select>

        <input type="number" name="b" placeholder="Bilangan b">

        <div style="margin-top: 1rem">
            <button type="button" onclick="location.href = '?clear'">Clear</button>
            <button type="submit">Hitung</button>
        </div>
    </form>
</body>
</html>

Kode program di atas akan menghasilkan sebuah form sederhana seperti ini:

Proses Kalkulator Sederhana

Seperti yang telah kita bahas pada pertemuan sebelumnya, bahwa jika atribut action dan method pada tag <form> tidak didefinisikan, itu artinya secara bawaan ia akan menggunakan method GET, dan akan menjadikan “diri sendiri” sebagai action.

Di bawah tag <form>, silakan tambahkan kode program berikut:

<?php
if ($_GET): ?>
<pre><?php echo print_r($_GET) ?></pre>
<?php
endif; ?>

Coba isi setiap input dari form yang telah kita buat, lalu klik tombol Hitung.

Kita akan mendapatkan output kira-kira seperti ini:

Mempertahankan value form sebelumnya

Jika kita perhatikan, setelah kita klik tombol Hitung, maka kita akan mendapatkan output berupa isi dari variabel $_GET. Akan tetapi, kita saksikan bahwa 3 input yang sudah kita isi, ia kembali kosong seperti tidak pernah ada data sebelumnya.

Pada step ini, kita akan coba untuk mempertahankan nilai dari inputan sebelumnya.

Ubah ketiga input dari form kalkulator menjadi seperti ini:

<input type="number" name="a" placeholder="Bilangan a" value="<?php echo @$_GET['a'] ?>">

<select name="operator">
    <option <?php echo !@$_GET['operator'] ? 'selected' : '' ?> disabled>Pilih Operator</option>
    <option <?php echo @$_GET['operator'] === '+' ? 'selected' : '' ?> value="+">+</option>
    <option <?php echo @$_GET['operator'] === '-' ? 'selected' : '' ?> value="-">-</option>
    <option <?php echo @$_GET['operator'] === '*' ? 'selected' : '' ?> value="*">*</option>
    <option <?php echo @$_GET['operator'] === '/' ? 'selected' : '' ?> value="/">/</option>
</select>

<input type="number" name="b" placeholder="Bilangan b" value="<?php echo @$_GET['b'] ?>">

Penjelasan:

  • Kita menambahkan attribut value untuk 2 tag <input>. Atribut tersebut akan mendefinisikan nilai dari input yang bersangkutan
  • Kita menambahkan atribut selected pada tag <option> yang terpilih untuk menandakan mana <option> yang aktif. Itu dikarenakan tag <select> tidak mendukung atribut value
  • Kita menggunakan tanda @ sebelum variabel $_GET agar jika key yang kita panggil tidak tersedia, ia otomatis bernilai null dan tidak terjadi error.
  • Kita menggunakan percabangan ternary untuk mempersingkat kode program.

Logika kalkulator

Setelah kita mengetahui isi dari variabel $_GET dengan menggunakan perintah print_r, kita juga telah mempertahankan nilai masing-masing input ketika tombol Hitung ditekan. Sekarang saatnya kita mulai menulis kode untuk menyelesaikan logika kalkulator.

Logikanya sederhana: kita akan memeriksa masing-masing operator dan akan melakukan operasi yang sesuai dengan operator yang dipilih.

Hapus kode program berikut:

<?php
if ($_GET): ?>
<pre><?php echo print_r($_GET) ?></pre>
<?php
endif; ?>

Lalu ganti seperti ini:

<?php
if ($_GET):
    $a = (double) @$_GET['a'];
    $b = (double) @$_GET['b'];
    $operator = @$_GET['operator'];
    
    switch ($operator) {
        case '+':
            $hasil = $a + $b;
            break;
        case '-':
            $hasil = $a - $b;
            break;
        case '*':
            $hasil = $a * $b;
            break;
        case '/':
            $hasil = $a / $b;
            break;
    }
    ?>
    <div style="margin-top: 1rem">
    Hasil: <strong><?php echo $hasil ?></strong>
    </div>
    <?php
endif; ?>

Setelah itu kalkulator yang telah kita buat sudah bisa dicoba:

Membuat Form Kalkulator Scientific (Sederhana)

Oke, kita telah sukses membuat kalkulator sederhana dengan PHP.

Sekarang kita akan membuat kalkulator scientific, yang juga sederhana.

Langsung saja buka file scientific.php dan buat form HTML-nya sebagai mana berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kalkulator Scientific Sederhana | Jago Ngoding</title>
</head>
<body>
    <h1>Kalkulator Scientific Sederhana</h1>
    <form>
        <input type="text" name="ekspresi" placeholder="Ekspresi aritmatika" value="<?php echo @$_GET['ekspresi'] ?>">

        <div style="margin-top: 1rem">
            <button type="button" onclick="location.href = '?'">Clear</button>
            <button type="submit">Hitung</button>
        </div>
    </form>
</body>
</html>

Setelah kita coba jalankan, kira-kira beginilah tampilan yang kita dapatkan:

Memproses Form Kalkulator Scientific

Lanjut, setelah form beres dibuat. Kita tambahkan aksi ketika tombol Hitung diklik.

Kita akan menggunakan fungsi eval(). Ia adalah sebuah fungsi yang bertugas untuk mengeksekusi perintah program PHP yang disimpan dalam tipe data string.

Dan ia adalah fungsi yang sangat berbahaya, karena fungsi tersebut memungkinkan user untuk mengeksekusi kode program apa pun jika tidak kita beri pengamanan.

Sehingga, fungsi eval() jangan sekali-kali kita pakai di project beneran, ya! Di sini kita hanya bereksperimen saja.

Langsung saja, dibawah tag </form>, tambahkan kode program berikut:

<?php
if ($_GET):
    $ekspresi = @$_GET['ekspresi'];
    $hasil = eval("return {$ekspresi};"); ?>
    <div style="margin-top: 1rem">
        Hasil <strong><?php echo $hasil ?></strong>
    </div>
    <?php
endif; ?>

Jika kita perhatikan kode program di atas, jumlah barisnya jauh lebih sedikit. Karena di sini kita langsung memasukkan apa yang user inputkan ke dalam fungsi eval(). Dan fungsi tersebut akan mengembalikan nilai dari ekspresi yang user masukkan.

Ketika kita coba inputkan ekspresi matematika semisal: 35 + 100 * (9 / 3). Kita bisa langsung mendapatkan hasilnya:

Canggih bukan?

Kode Program Lengkap

Untuk kode program tutorial ini, bisa kalian akses pada link github berikut: https://github.com/jagongoding-com/php-web-dinamis/tree/master/02-kalkulator.

Pembahasan Selanjutnya

Dengan mempraktikkan tutorial ini, kita bisa mendapatkan gambaran yang lebih jelas lagi tentang bagaimana membuat dan menangani sebuah form dalam PHP.

Akan tetapi, masih ada pembahasan yang kurang: yaitu tentang validasi form. Kenapa sebuah form butuh divalidasi? Karena kita tidak tahu apa yang akan user inputkan! User bisa menginputkan data apa pun yang tidak pernah kita bayangkan, bahkan situs kita bisa diretas gara-gara inputan berbahaya dari user.

Lalu bagaimana cara melakukan validasi form di PHP? Insyaallah kita akan ambil pembahasannya pada pertemuan yang akan datang.

Tetap ikuti tutorial ini, ya! Jangan lupa share dan kabarkan ke teman-temanmu. Terima kasih banyak.