Banner - Cara Membuat Website PHP Sederhana dengan koneksi API

Cara Membuat Website PHP Sederhana dengan koneksi API

Belajar membuat website PHP tidak lagi sebatas menampilkan halaman statis atau mengolah data dari database sendiri. Saat ini, banyak website memanfaatkan API untuk mengambil informasi dari layanan lain, seperti data cuaca, kurs mata uang, peta, hingga sistem pembayaran, sehingga aplikasi yang dibuat menjadi lebih dinamis dan interaktif.

Dengan menghubungkan website PHP ke API, Anda dapat menampilkan data secara real-time tanpa harus menyimpan semuanya di server sendiri. Konsep ini juga menjadi dasar pengembangan banyak aplikasi web modern yang saling terintegrasi melalui layanan berbasis REST API.

Dalam artikel ini, kita akan mempelajari cara membuat website PHP sederhana dengan koneksi API, mulai dari persiapan proyek, proses mengambil data dari API, hingga menampilkan hasilnya di halaman web dengan mudah sehingga cocok dipraktikkan oleh pemula.

Persiapan Sebelum Membuat Website PHP

Sebelum mulai membuat website PHP, ada beberapa komponen yang perlu disiapkan terlebih dahulu. Komponen ini akan digunakan untuk menjalankan aplikasi, menyimpan data, serta melakukan pengujian koneksi API.

Pada panduan ini, Anda dapat menggunakan lingkungan lokal seperti XAMPP atau Laragon. Namun, jika ingin langsung mengakses website melalui internet, Anda juga bisa menggunakan layanan hosting yang sudah mendukung PHP dan MySQL.

Berikut beberapa kebutuhan yang perlu disiapkan:

Promo Hosting Murah Rumahweb

  • PHP 8.x atau versi terbaru
  • Database MySQL/MariaDB
  • Web server (Apache atau Nginx)
  • Text editor seperti Visual Studio Code
  • Browser untuk pengujian aplikasi
  • Hosting (opsional) jika ingin langsung online

Setelah seluruh kebutuhan di atas tersedia, kita dapat mulai membuat website PHP sederhana yang nantinya akan terhubung dengan API.

Mengenal API Secara Singkat

API (Application Programming Interface) adalah mekanisme yang memungkinkan dua aplikasi saling bertukar data tanpa harus mengakses database secara langsung. Dengan API, sebuah aplikasi dapat meminta data dari aplikasi lain melalui alamat atau endpoint tertentu, kemudian menerima respons dalam format yang mudah diproses, seperti JSON.

Sebagai contoh, ketika Anda membuka aplikasi cuaca di smartphone, data cuaca tersebut biasanya tidak disimpan di aplikasi itu sendiri. Aplikasi hanya meminta data ke server penyedia cuaca melalui API, lalu menampilkan hasilnya kepada pengguna.

Membuat Web PHP untuk Biodata

Pada tutorial ini, kita akan membuat API sederhana menggunakan PHP. API tersebut akan mengambil data biodata dari database, kemudian mengubahnya menjadi format JSON sehingga dapat digunakan oleh website atau aplikasi lain.

Anda dapat menjalankannya terlebih dahulu di localhost menggunakan XAMPP atau Laragon agar proses pengembangan dan pengujian menjadi lebih mudah. Secara umum, aplikasi yang akan kita buat memiliki skema seperti berikut.

Membuat Website PHP + API
Arsitektur PHP & API

Gambar diatas merupakan flow dari program PHP dan API yang akan kita buat.

Step 1. Buat script index.php

Script ini akan menampilan form penginputan data seperti nama, alamat dan lain-lain.

<!DOCTYPE html>
<html>
<head>
    <title>Biodata</title>
</head>
<body>
<center>
<form action="simpan.php" method="post">

    <input
        type="text"
        name="nama"
        placeholder="Nama"
        required
    ><br><br>

    <input
        type="date"
        name="tanggal_lahir"
        required
    ><br><br>

    <textarea
        name="alamat"
        placeholder="Alamat"
    ></textarea><br><br>

    <input
        type="text"
        name="moto"
        placeholder="moto"
    ><br><br>

    <button type="submit">
        Simpan
    </button>

</form>
</center>
</body>
</html>

Step 2. Buat script simpan.php

Script ini akan menjadi handler dalam memproses inputan pada form index yang akan disimpan pada database.

<?php

require_once 'config.php';

try {

    $nama = trim($_POST['nama'] ?? '');
    $tanggalLahir = trim($_POST['tanggal_lahir'] ?? '');
    $alamat = trim($_POST['alamat'] ?? '');
    $moto = trim($_POST['moto'] ?? '');

    if (empty($nama) || empty($tanggalLahir)) {
        die("Nama dan tanggal lahir wajib diisi");
    }

    $sql = "
        INSERT INTO biodata (nama, tanggal_lahir, alamat, moto)
        VALUES (:nama, :tanggal_lahir, :alamat, :moto)
    ";

    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        'nama' => $nama,
        'tanggal_lahir' => $tanggalLahir,
        'alamat' => $alamat,
        'moto' => $moto
    ]);

    $lastId = $pdo->lastInsertId();

    header("Location: output.php?id=" . $lastId);
    exit;

} catch (Exception $e) {
    die("Error: " . $e->getMessage());
}

Step 3. Buat script api.php

Ini adalah bagian penting ketika Anda ingin membuat data webnya memiliki endpoint API agar dapat digunakan oleh pihak eksternal tanpa mereka perlu akses database asli secara langsung.

<?php

require_once 'config.php';

header('Content-Type: application/json; charset=utf-8');

try {

    $id = $_GET['id'] ?? null;
    $nama = trim($_GET['nama'] ?? '');
    $tanggalLahir = trim($_GET['tanggal_lahir'] ?? '');

    $sql = '';
    $params = [];

    if (!empty($id)) {

        $sql = "
            SELECT *
            FROM biodata
            WHERE id = :id
        ";

        $params['id'] = (int)$id;

    } elseif (!empty($nama)) {

        $sql = "
            SELECT *
            FROM biodata
            WHERE nama LIKE :nama
        ";

        $params['nama'] = "%{$nama}%";

    } elseif (!empty($tanggalLahir)) {

        $sql = "
            SELECT *
            FROM biodata
            WHERE tanggal_lahir = :tanggal_lahir
        ";

        $params['tanggal_lahir'] = $tanggalLahir;

    } else {

        http_response_code(400);

        echo json_encode([
            'success' => false,
            'message' => 'Parameter tidak valid. Gunakan salah satu: id, nama, atau tanggal_lahir.'
        ], JSON_PRETTY_PRINT);

        exit;
    }

    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);

    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (empty($data)) {

        http_response_code(404);

        echo json_encode([
            'success' => false,
            'message' => 'Data tidak ditemukan'
        ], JSON_PRETTY_PRINT);

        exit;
    }

    echo json_encode([
        'success' => true,
        'total' => count($data),
        'data' => $data
    ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {

    http_response_code(500);

    echo json_encode([
        'success' => false,
        'message' => 'Internal Server Error',
        'error' => $e->getMessage()
    ], JSON_PRETTY_PRINT);
}

Step 4. Buat script output.php

Script ini akan menampilkan hasil inputan form yang tersimpan di database secara langsung di browser.

<?php

require_once 'config.php';

$id = $_GET['id'] ?? 0;

if (!$id) {
    die("ID tidak ditemukan");
}

$sql = "SELECT * FROM biodata WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => $id]);

$data = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$data) {
    die("Data tidak ditemukan");
}

?>

<!DOCTYPE html>
<html>
<head>
    <title>Output Biodata</title>
</head>
<body>

<h2>Data Berhasil Disimpan</h2>

<table border="1" cellpadding="8">
    <tr>
        <td>Nama</td>
        <td><?= htmlspecialchars($data['nama']) ?></td>
    </tr>
    <tr>
        <td>Tanggal Lahir</td>
        <td><?= htmlspecialchars($data['tanggal_lahir']) ?></td>
    </tr>
    <tr>
        <td>Alamat</td>
        <td><?= htmlspecialchars($data['alamat']) ?></td>
    </tr>
    <tr>
        <td>Moto</td>
        <td><?= htmlspecialchars($data['moto']) ?></td>
    </tr>
</table>

<br>

<a href="index.php">Kembali</a>

</body>
</html>

Step 5. Buat script config.php

Anda memerlukan file ini sebagai koneksi database.

<?php

$host = 'localhost';
$dbname = 'nama-db';
$username = 'user-db';
$password = 'password-db';

try {
    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8mb4",
        $username,
        $password
    );

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

    die('Koneksi database gagal: ' . $e->getMessage());
}

Step 6. Query database

Silahkan buat database kemudian buat table menggunakan query dibawah:

CREATE TABLE `biodata` (
  `id` int(11) NOT NULL,
  `nama` varchar(100) NOT NULL,
  `tanggal_lahir` date NOT NULL,
  `alamat` text DEFAULT NULL,
  `moto` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

Percobaan Input Data dan Koneksi API

Kami akan memulai dengan menginputkan data seperti contoh gambar dibawah:

Percobaan Input Data dan Koneksi API

Silahkan disesuaikan dengan percobaan Anda sendiri, kemudian klik tombol simpan. Jika berhasil, Anda akan melihat hasil dengan contoh gambar dibawah:

Silahkan disesuaikan dengan percobaan Anda sendiri, kemudian klik tombol simpan. Jika berhasil, Anda akan melihat hasil dengan contoh gambar dibawah:

Pada gambar diatas, terdapat parameter id=4 yang merupakan data dari inputan Anda ke database. Parameter tersebut akan digunakan sebagai koneksi API.

Testing Koneksi API

Setelah menambahkan data, silahkan akses menggunakan endpoint: localhost/biodata/api.php?id=4

Testing Koneksi API

Jika menggunakan nama domain, maka ganti localhost dengan nama domain Anda sendiri.

Setelah memastikan web utama Anda sudah berhasil memberikan respon, maka pihak eksternal dapat menggunakan datanya dengan bebas hanya untuk melihat.

Testing koneksi API eksternal

Contoh script eksternal ketika ingin melakukan koneksi API ke website Anda dan untuk menampilkan data dari id=4 :

<?php
$url = "https://namadomain-anda/biodata/api.php?id=4";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if (curl_errno($ch)) {
    die("Error: " . curl_error($ch));
}

curl_close($ch);
$data = json_decode($response, true);

if ($data['success'] === true) {
    $biodata = $data['data'][0];
    echo "<table border='1' cellpadding='8'>";
    echo "<tr><td>ID</td><td>{$biodata['id']}</td></tr>";
    echo "<tr><td>Nama</td><td>{$biodata['nama']}</td></tr>";
    echo "<tr><td>Tanggal Lahir</td><td>{$biodata['tanggal_lahir']}</td></tr>";
    echo "<tr><td>Alamat</td><td>{$biodata['alamat']}</td></tr>";
    echo "<tr><td>Moto</td><td>{$biodata['moto']}</td></tr>";
    echo "<tr><td>Created At</td><td>{$biodata['created_at']}</td></tr>";
    echo "</table>";

} else {
    echo "Data tidak ditemukan.";
}

?>

Apabila koneksi API berhasil, maka datanya akan tampil di website eksternal seperti gambar dibawah:

Apabila koneksi API berhasil, maka datanya akan tampil di website eksternal seperti gambar dibawah:

Pemberian query string id pada endpoint API, sangat penting agar data yang dipanggil dan ditampilkan merupakan hasil yang sesuai.

Jika pemanggilan endpoint api tidak lengkap, maka akan muncul pesan seperti gambar dibawah:

Pemberian id pada endpoint API sangat penting agar data yang dihasilkan benar. Jika tidak pemanggilan api tidak lengkap, maka akan muncul pesan seperti gambar dibawah:

Selain itu, apabila id atau nama/tanggal_lahir tidak tersimpan di database, maka akan mendapatkan respon:

{
    "success": false,
    "message": "Data tidak ditemukan"
}

Dengan menyediakan akses API, data web Anda akan dengan mudah di sebarkan dan digunakan oleh pihak ketiga tanpa perlu konfigurasi khusus. Hal ini tentu akan sangat bermanfaat jika tujuan web Anda adalah layanan SaaS (atau Software as a Service).

Troubleshooting

Selama proses membuat website PHP dan menghubungkannya dengan API, Anda mungkin menemui beberapa kendala. Berikut beberapa masalah yang paling sering terjadi beserta solusi yang dapat dicoba.

1. Data tidak berhasil disimpan ke database

Apabila data tidak masuk ke database setelah tombol Simpan diklik, pastikan konfigurasi koneksi pada file config.php sudah benar. Selain itu, periksa kembali nama database, username, password, serta nama tabel yang digunakan pada query SQL.

2. API tidak menampilkan data JSON

Jika endpoint API hanya menampilkan halaman kosong atau pesan error, pastikan parameter yang dikirim sudah benar, misalnya:

http://localhost/biodata/api.php?id=1

Selain itu, cek apakah data dengan ID tersebut memang sudah tersedia di database.

3. Muncul error koneksi database

Error seperti Access denied, Unknown database, atau Connection failed biasanya disebabkan oleh konfigurasi database yang tidak sesuai. Periksa kembali nilai hostname, username, password, dan database pada file config.php.

4. PHP cURL gagal mengambil data API

Apabila script cURL tidak menghasilkan output, pastikan URL endpoint dapat diakses melalui browser terlebih dahulu. Jika menggunakan HTTPS, pastikan sertifikat SSL valid atau sesuaikan konfigurasi cURL apabila masih menggunakan sertifikat self-signed.

5. Data JSON berhasil diambil tetapi tidak tampil di halaman

Masalah ini biasanya disebabkan oleh proses decoding JSON yang gagal atau penamaan key yang tidak sesuai. Pastikan struktur data yang diterima dari API sama dengan key yang dipanggil pada script PHP.

Penutup

Belajar membuat website PHP tidak hanya sebatas menampilkan halaman web atau menyimpan data ke database. Dengan menambahkan koneksi API, website yang Anda bangun dapat saling bertukar data dengan aplikasi lain sehingga lebih fleksibel untuk dikembangkan menjadi sistem yang lebih modern.

Pada tutorial ini, kita telah mempelajari cara membuat website PHP sederhana untuk mengolah data biodata, menyimpan data ke MySQL, membuat endpoint API, hingga mengambil data tersebut menggunakan PHP cURL dari aplikasi eksternal. Konsep sederhana ini merupakan fondasi penting sebelum mempelajari REST API, integrasi layanan pihak ketiga, maupun pengembangan aplikasi berbasis framework seperti Laravel.

Itu dia artikel kami tentang bagaimana Cara membuat website PHP sederhana dengan koneksi API, semoga dapat membantu.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Fredric Lesomar

I am an ameteur programer and cybersecurity enthusiast. Love much, mother Python language, machine learning and You!