Belajar PHP
PHP (PHP: Hypertext Preprocessor) adalah bahasa pemrograman server-side yang powerful dan mudah dipelajari. Mari mulai perjalanan programming kalian dari dasar sampai mahir!
school Pendahuluan
Kalian mau ngoding tapi masih belum ngerti konsepnya? Tenang aja! Kali ini saya akan ajarin kalian cara ngoding dengan bahasa pemrograman PHP dari dasar sampai bisa buat aplikasi web sederhana.
- Mudah dipelajari untuk pemula
- Banyak digunakan di industri (WordPress, Facebook, Wikipedia)
- Gratis dan open source
- Dokumentasi lengkap dan komunitas besar
- Perfect untuk web development
construction Persiapan Tools & Environment
Sebelum mulai coding, kita perlu menyiapkan tools yang diperlukan untuk development PHP:
Tool | Fungsi | Platform | Status |
---|---|---|---|
Visual Studio Code | Code Editor dengan PHP extensions | Windows, macOS, Linux | Recommended |
XAMPP | Local server (Apache + MySQL + PHP) | Windows, macOS, Linux | Required |
Browser Modern | Testing aplikasi web | Any | Required |
download Instalasi XAMPP Step-by-Step
XAMPP adalah package lengkap yang berisi Apache web server, MySQL database, dan PHP interpreter. Ikuti langkah-langkah berikut untuk instalasi:
Download XAMPP
Kunjungi website resmi XAMPP dan download versi terbaru untuk sistem operasi kalian. Pilih versi dengan PHP 8.x untuk fitur terbaru.
Jalankan Installer
Buka file installer yang sudah di-download. Di Windows, run as Administrator untuk menghindari masalah permission.
- Pilih drive instalasi (default: C:\xampp)
- Pilih komponen: Apache, MySQL, PHP, phpMyAdmin
- Tunggu proses instalasi selesai
Verifikasi Instalasi
Setelah instalasi selesai, buka XAMPP Control Panel dan cek apakah semua service bisa dijalankan.
dns Setup & Menjalankan Server
Setelah XAMPP berhasil diinstall, saatnya menjalankan server Apache untuk development:

Status Services:
Untuk development PHP, kalian cukup menjalankan Apache saja. MySQL diperlukan jika akan menggunakan database.
C:\xampp\
├── htdocs\ # Folder web files (PENTING!)
├── php\ # PHP interpreter
├── apache\ # Apache web server
├── mysql\ # MySQL database
└── xampp-control.exe # Control panel
htdocs adalah folder di mana kalian akan menyimpan semua file PHP dan website.
- Start Apache di XAMPP Control Panel
- Buka browser dan kunjungi:
http://localhost
- Jika muncul halaman XAMPP dashboard, berarti server sudah berjalan! 🎉
- Port 80 sudah digunakan: Matikan Skype atau IIS
- Apache tidak bisa start: Run XAMPP sebagai Administrator
- Firewall blocking: Allow XAMPP melalui Windows Firewall
code PHP Syntax Dasar
PHP (PHP: Hypertext Preprocessor) adalah bahasa server-side yang embedded dalam HTML. Mari pelajari syntax dasarnya:
<?php
// PHP code di sini
echo "Hello World!";
?>
Penting: PHP code harus ditulis di antara tag <?php
dan ?>
File PHP Pertama
Buat file baru dengan nama hello.php
di folder C:\xampp\htdocs\
:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Belajar PHP</title>
</head>
<body>
<h1>Selamat Datang di PHP!</h1>
<!-- HTML biasa -->
<p>Kalimat ini dibuat dengan HTML</p>
<?php
// PHP code
echo "<p>Kalimat ini dibuat dengan PHP</p>";
echo "<p>Waktu sekarang: " . date("Y-m-d H:i:s") . "</p>";
?>
<!-- HTML lagi -->
<p>PHP dan HTML bisa dicampur dalam satu file</p>
</body>
</html>

- Simpan file sebagai
hello.php
diC:\xampp\htdocs\
- Pastikan Apache sudah running di XAMPP
- Buka browser dan kunjungi:
http://localhost/hello.php
- Lihat hasilnya! PHP code akan diproses di server
- File extension: Harus
.php
bukan.html
- Server required: PHP butuh server (Apache) untuk dijalankan
- Case sensitive: PHP adalah case-sensitive untuk variabel
- Semicolon: Setiap statement PHP diakhiri dengan
;
data_object Variabel & Tipe Data
Variabel adalah container untuk menyimpan data. Di PHP, variabel diawali dengan tanda $
:
<?php
// String
$nama = "Budi Santoso";
$alamat = 'Jakarta Selatan';
// Integer
$umur = 25;
$jumlah = 100;
// Float/Double
$tinggi = 175.5;
$berat = 68.7;
// Boolean
$aktif = true;
$menikah = false;
// Array
$hobi = ["membaca", "coding", "gaming"];
$nilai = array(85, 90, 78, 92);
// Null
$kosong = null;
?>
Tipe Data PHP
Tipe Data | Deskripsi | Contoh | Function Check |
---|---|---|---|
String | Teks/karakter | "Hello World" |
is_string() |
Integer | Bilangan bulat | 42 |
is_int() |
Float | Bilangan desimal | 3.14 |
is_float() |
Boolean | True/False | true |
is_bool() |
Array | Kumpulan data | [1, 2, 3] |
is_array() |
Null | Tidak ada nilai | null |
is_null() |
Contoh Praktis
<?php
// Data mahasiswa
$nama = "Siti Nurhaliza";
$nim = 12345678;
$ipk = 3.85;
$aktif = true;
$mata_kuliah = ["PHP", "JavaScript", "Database", "HTML/CSS"];
// Menampilkan informasi
echo "<h2>Data Mahasiswa</h2>";
echo "<p><strong>Nama:</strong> " . $nama . "</p>";
echo "<p><strong>NIM:</strong> " . $nim . "</p>";
echo "<p><strong>IPK:</strong> " . $ipk . "</p>";
echo "<p><strong>Status:</strong> " . ($aktif ? "Aktif" : "Tidak Aktif") . "</p>";
// Menampilkan array
echo "<h3>Mata Kuliah:</h3><ul>";
foreach ($mata_kuliah as $mk) {
echo "<li>" . $mk . "</li>";
}
echo "</ul>";
// Cek tipe data
echo "<h3>Debug Info:</h3>";
echo "Tipe data nama: " . gettype($nama) . "<br>";
echo "Tipe data umur: " . gettype($nim) . "<br>";
echo "Tipe data IPK: " . gettype($ipk) . "<br>";
?>
Nama: Siti Nurhaliza
NIM: 12345678
IPK: 3.85
Status: Aktif
Mata Kuliah:
• PHP
• JavaScript
• Database
• HTML/CSS
Debug Info:
Tipe data nama: string
Tipe data umur: integer
Tipe data IPK: double
- Harus diawali dengan $:
$nama
✅,nama
❌ - Karakter pertama huruf atau underscore:
$_nama
✅,$1nama
❌ - Case sensitive:
$Nama
≠$nama
- Tidak boleh ada spasi:
$nama_lengkap
✅,$nama lengkap
❌
account_tree Control Structures
Control structures memungkinkan program untuk membuat keputusan dan mengulang kode. Mari pelajari kondisi dan perulangan di PHP:
<?php
$nilai = 85;
// If sederhana
if ($nilai >= 80) {
echo "Nilai Anda: A (Sangat Baik)";
}
// If-else
if ($nilai >= 80) {
echo "Lulus dengan baik";
} else {
echo "Perlu belajar lebih giat";
}
// If-elseif-else
if ($nilai >= 90) {
$grade = "A+";
} elseif ($nilai >= 80) {
$grade = "A";
} elseif ($nilai >= 70) {
$grade = "B";
} elseif ($nilai >= 60) {
$grade = "C";
} else {
$grade = "D";
}
echo "Grade Anda: " . $grade;
?>
<?php
$hari = date('N'); // 1=Senin, 7=Minggu
switch ($hari) {
case 1:
$nama_hari = "Senin";
$motivasi = "Semangat memulai minggu baru!";
break;
case 2:
$nama_hari = "Selasa";
$motivasi = "Terus berjuang!";
break;
case 3:
$nama_hari = "Rabu";
$motivasi = "Pertengahan minggu, jangan menyerah!";
break;
case 4:
$nama_hari = "Kamis";
$motivasi = "Hampir weekend!";
break;
case 5:
$nama_hari = "Jumat";
$motivasi = "Last push sebelum weekend!";
break;
case 6:
case 7:
$nama_hari = ($hari == 6) ? "Sabtu" : "Minggu";
$motivasi = "Waktunya istirahat dan refreshing!";
break;
default:
$nama_hari = "Unknown";
$motivasi = "Hari yang aneh...";
}
echo "<h3>Hari ini: {$nama_hari}</h3>";
echo "<p>{$motivasi}</p>";
?>
Perulangan (Loops)
<?php
// For loop dasar
for ($i = 1; $i <= 5; $i++) {
echo "Angka: " . $i . "<br>";
}
// Membuat tabel perkalian
echo "<h4>Tabel Perkalian 5:</h4>";
for ($i = 1; $i <= 10; $i++) {
$hasil = 5 * $i;
echo "5 x {$i} = {$hasil}<br>";
}
?>
<?php
$counter = 1;
// While loop
while ($counter <= 5) {
echo "Counter: " . $counter . "<br>";
$counter++;
}
// Mencari bilangan genap
$num = 2;
echo "<h4>5 Bilangan Genap:</h4>";
$count = 0;
while ($count < 5) {
echo $num . " ";
$num += 2;
$count++;
}
?>
<?php
// Array sederhana
$buah = ["Apel", "Jeruk", "Mangga", "Pisang"];
echo "<h4>Daftar Buah:</h4><ul>";
foreach ($buah as $item) {
echo "<li>" . $item . "</li>";
}
echo "</ul>";
// Array dengan key dan value
$mahasiswa = [
"nama" => "Andi Susanto",
"nim" => "12345678",
"jurusan" => "Informatika",
"semester" => 5
];
echo "<h4>Data Mahasiswa:</h4><dl>";
foreach ($mahasiswa as $key => $value) {
echo "<dt>" . ucfirst($key) . ":</dt>";
echo "<dd>" . $value . "</dd>";
}
echo "</dl>";
?>
<?php
$nilai_mahasiswa = [
["nama" => "Budi", "nilai" => 85],
["nama" => "Siti", "nilai" => 92],
["nama" => "Andi", "nilai" => 76],
["nama" => "Rina", "nilai" => 88],
["nama" => "Doni", "nilai" => 65]
];
echo "<h3>Hasil Evaluasi Mahasiswa</h3>";
echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
echo "<tr><th>Nama</th><th>Nilai</th><th>Grade</th><th>Status</th></tr>";
foreach ($nilai_mahasiswa as $mhs) {
// Tentukan grade
if ($mhs["nilai"] >= 90) {
$grade = "A";
} elseif ($mhs["nilai"] >= 80) {
$grade = "B";
} elseif ($mhs["nilai"] >= 70) {
$grade = "C";
} else {
$grade = "D";
}
// Tentukan status
$status = ($mhs["nilai"] >= 70) ? "LULUS" : "TIDAK LULUS";
$warna = ($status == "LULUS") ? "green" : "red";
echo "<tr>";
echo "<td>" . $mhs["nama"] . "</td>";
echo "<td>" . $mhs["nilai"] . "</td>";
echo "<td>" . $grade . "</td>";
echo "<td style='color: {$warna}; font-weight: bold;'>" . $status . "</td>";
echo "</tr>";
}
echo "</table>";
?>
functions Functions & Include
Functions memungkinkan kita untuk mengorganisir kode yang dapat digunakan kembali. Mari pelajari cara membuat dan menggunakan function di PHP:
<?php
// Function sederhana tanpa parameter
function sayHello() {
echo "Hello, World!";
}
// Function dengan parameter
function greetUser($nama) {
echo "Halo, " . $nama . "! Selamat datang.";
}
// Function dengan return value
function hitungLuas($panjang, $lebar) {
$luas = $panjang * $lebar;
return $luas;
}
// Function dengan default parameter
function buatProfile($nama, $umur = 20, $kota = "Jakarta") {
return "Nama: {$nama}, Umur: {$umur}, Kota: {$kota}";
}
// Memanggil functions
sayHello(); // Output: Hello, World!
echo "<br>";
greetUser("Budi"); // Output: Halo, Budi! Selamat datang.
echo "<br>";
$luas = hitungLuas(10, 5);
echo "Luas persegi panjang: " . $luas . " m²";
echo "<br>";
echo buatProfile("Siti", 25, "Bandung");
echo "<br>";
echo buatProfile("Andi"); // Menggunakan default values
?>
<?php
// Function dengan multiple return values
function hitungBangunDatar($panjang, $lebar) {
$luas = $panjang * $lebar;
$keliling = 2 * ($panjang + $lebar);
return [
"luas" => $luas,
"keliling" => $keliling,
"panjang" => $panjang,
"lebar" => $lebar
];
}
// Function untuk validasi
function validasiEmail($email) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
return true;
}
return false;
}
// Function rekursif (memanggil dirinya sendiri)
function faktorial($n) {
if ($n <= 1) {
return 1;
}
return $n * faktorial($n - 1);
}
// Contoh penggunaan
$hasil = hitungBangunDatar(8, 6);
echo "<h4>Hasil Perhitungan Persegi Panjang:</h4>";
echo "Panjang: " . $hasil["panjang"] . " cm<br>";
echo "Lebar: " . $hasil["lebar"] . " cm<br>";
echo "Luas: " . $hasil["luas"] . " cm²<br>";
echo "Keliling: " . $hasil["keliling"] . " cm<br><br>";
// Test validasi email
$emails = ["test@email.com", "invalid-email", "user@domain.co.id"];
foreach ($emails as $email) {
$status = validasiEmail($email) ? "✅ Valid" : "❌ Invalid";
echo $email . " → " . $status . "<br>";
}
echo "<br>Faktorial 5 = " . faktorial(5);
?>
Include & Require
Include dan require memungkinkan kita untuk memisahkan kode ke file terpisah dan menggunakannya kembali:
<?php
// File konfigurasi
$site_name = "Belajar PHP";
$version = "1.0";
$admin_email = "admin@example.com";
// Database config
$db_host = "localhost";
$db_name = "belajar_php";
$db_user = "root";
$db_pass = "";
// Fungsi helper
function formatTanggal($date) {
return date("d/m/Y", strtotime($date));
}
?>
<?php
// Menggunakan include
include 'config.php';
echo "<h1>" . $site_name . "</h1>";
echo "<p>Version: " . $version . "</p>";
echo "<p>Contact: " . $admin_email . "</p>";
// Menggunakan fungsi dari file lain
echo "<p>Tanggal: " . formatTanggal("2024-01-15") . "</p>";
// Include file HTML
include 'header.html';
include 'content.php';
include 'footer.html';
?>
- include: Jika file tidak ditemukan, hanya warning. Script tetap jalan.
- require: Jika file tidak ditemukan, error fatal. Script berhenti.
- include_once/require_once: Hanya include sekali, mencegah duplikasi.
database Database Connection Dasar
Salah satu kekuatan PHP adalah kemampuannya berinteraksi dengan database. Mari pelajari cara koneksi ke MySQL menggunakan MySQLi:
Setup Database
Buka phpMyAdmin di http://localhost/phpmyadmin
dan buat database baru:
CREATE DATABASE belajar_php;
USE belajar_php;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
umur INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
<?php
// Database connection
$host = "localhost";
$username = "root";
$password = "";
$database = "belajar_php";
// Membuat koneksi
$conn = new mysqli($host, $username, $password, $database);
// Cek koneksi
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
echo "Koneksi database berhasil!";
// Jangan lupa tutup koneksi
$conn->close();
?>
CRUD Operations
<?php
// Koneksi database (sama seperti di atas)
$conn = new mysqli("localhost", "root", "", "belajar_php");
// Insert data
$nama = "Budi Santoso";
$email = "budi@email.com";
$umur = 25;
$sql = "INSERT INTO users (nama, email, umur) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssi", $nama, $email, $umur);
if ($stmt->execute()) {
echo "Data berhasil ditambahkan! ID: " . $conn->insert_id;
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
<?php
$conn = new mysqli("localhost", "root", "", "belajar_php");
// Select all data
$sql = "SELECT id, nama, email, umur, created_at FROM users ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<h3>Daftar Users:</h3>";
echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
echo "<tr><th>ID</th><th>Nama</th><th>Email</th><th>Umur</th><th>Tanggal</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row["id"] . "</td>";
echo "<td>" . $row["nama"] . "</td>";
echo "<td>" . $row["email"] . "</td>";
echo "<td>" . $row["umur"] . "</td>";
echo "<td>" . date("d/m/Y", strtotime($row["created_at"])) . "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "Tidak ada data ditemukan.";
}
$conn->close();
?>
- Gunakan Prepared Statements: Mencegah SQL Injection
- Validasi Input: Selalu validasi data sebelum insert
- Tutup Koneksi: Gunakan
$conn->close()
- Handle Errors: Selalu cek error dan handle dengan baik
- Gunakan Transactions: Untuk operasi yang complex
<!DOCTYPE html>
<html>
<head>
<title>Registrasi User</title>
</head>
<body>
<h2>Form Registrasi</h2>
<form method="POST" action="">
<p>
<label>Nama: </label>
<input type="text" name="nama" required>
</p>
<p>
<label>Email: </label>
<input type="email" name="email" required>
</p>
<p>
<label>Umur: </label>
<input type="number" name="umur" min="1" max="120" required>
</p>
<p>
<input type="submit" name="submit" value="Daftar">
</p>
</form>
<?php
if (isset($_POST['submit'])) {
$conn = new mysqli("localhost", "root", "", "belajar_php");
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
$nama = $_POST['nama'];
$email = $_POST['email'];
$umur = $_POST['umur'];
// Cek apakah email sudah ada
$check_sql = "SELECT id FROM users WHERE email = ?";
$check_stmt = $conn->prepare($check_sql);
$check_stmt->bind_param("s", $email);
$check_stmt->execute();
$check_result = $check_stmt->get_result();
if ($check_result->num_rows > 0) {
echo "<p style='color: red;'>Email sudah terdaftar!</p>";
} else {
// Insert user baru
$insert_sql = "INSERT INTO users (nama, email, umur) VALUES (?, ?, ?)";
$insert_stmt = $conn->prepare($insert_sql);
$insert_stmt->bind_param("ssi", $nama, $email, $umur);
if ($insert_stmt->execute()) {
echo "<p style='color: green;'>Registrasi berhasil! Selamat datang, " . htmlspecialchars($nama) . "</p>";
} else {
echo "<p style='color: red;'>Terjadi kesalahan: " . $insert_stmt->error . "</p>";
}
$insert_stmt->close();
}
$check_stmt->close();
$conn->close();
}
?>
</body>
</html>
Simpan sebagai: registrasi.php
di folder htdocs,
lalu akses via http://localhost/registrasi.php