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:
- 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.
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:
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
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:
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:
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=1Selain 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.








