Dasar PHP

PHP (PHP: Hypertext Preprocessor) adalah bahasa pemrograman server-side — artinya kode PHP dijalankan di server, bukan di browser. PHP memproses data, berkomunikasi dengan database, dan menghasilkan HTML yang dikirim ke browser.

Bagaimana PHP Bekerja?

Browser → Request → Server (PHP) → Proses → HTML → Browser
  1. Browser mengirim request ke server (misal buka http://belajar.test/index.php)
  2. Server menjalankan kode PHP
  3. PHP menghasilkan HTML
  4. HTML dikirim kembali ke browser
  5. Browser menampilkan halaman
Perbedaan dengan JavaScript
  • JavaScript berjalan di browser (client-side)
  • PHP berjalan di server (server-side)
  • Pengguna tidak bisa melihat kode PHP — yang dilihat hanya HTML hasilnya :::

Sintaks Dasar

File PHP harus berekstensi .php dan kode PHP ditulis di antara tag <?php dan ?>:

<?php
// Ini adalah kode PHP
echo "Halo Dunia!";
?>

PHP juga bisa dicampur dengan HTML:

<!DOCTYPE html>
<html lang="id">
<head>
    <title>Halaman PHP Pertama</title>
</head>
<body>
    <h1><?php echo "Selamat Datang!"; ?></h1>

    <p>Sekarang tanggal: <?php echo date("d F Y"); ?></p>

    <p>Sekarang jam: <?php echo date("H:i:s"); ?></p>
</body>
</html>

Variabel

Variabel PHP dimulai dengan tanda dolar $:

<?php
// String (teks)
$nama = "User";
$kota = 'Jakarta';       // Single atau double quote

// Number (angka)
$umur = 20;
$harga = 15000.50;

// Boolean
$aktif = true;
$banned = false;

// Array
$hobi = ["Coding", "Membaca", "Game"];
$buah = array("Apel", "Jeruk", "Mangga");   // Cara lama

// Menampilkan variabel
echo $nama;                      // User
echo "Nama saya $nama";         // Nama saya User (double quote)
echo 'Nama saya $nama';         // Nama saya $nama (single quote, literal)
echo "Nama saya " . $nama;      // Nama saya User (concatenation dgn titik)
?>

:::warning Single Quote vs Double Quote

  • Double quote "..." — variabel di dalamnya akan diproses
  • Single quote '...' — variabel tidak diproses, dianggap teks biasa
$nama = "User";
echo "Halo $nama";    // Halo User
echo 'Halo $nama';    // Halo $nama

Echo dan Print

<?php
// echo — paling sering dipakai
echo "Halo Dunia!";
echo "<h1>Ini HTML dari PHP</h1>";
echo "<p>Nama: " . $nama . "</p>";

// Shorthand echo (di dalam HTML)
?>
<p>Nama: <?= $nama ?></p>
<!-- <?= ... ?> sama dengan <?php echo ... ?> -->

Tipe Data

<?php
// String
$nama = "User";
echo strlen($nama);         // 3 (panjang string)
echo strtoupper($nama);     // QIS
echo strtolower("HALO");    // halo
echo str_replace("Q", "K", $nama); // Kis

// Integer & Float
$umur = 20;
$harga = 15000.50;
echo round($harga);         // 15001
echo number_format($harga, 0, ',', '.'); // 15.001

// Array
$buah = ["Apel", "Jeruk", "Mangga"];
echo $buah[0];               // Apel
echo count($buah);           // 3
$buah[] = "Durian";          // Tambah item
print_r($buah);              // Tampilkan isi array (untuk debug)

// Associative Array (seperti object di JS)
$mahasiswa = [
    "nama" => "User",
    "umur" => 20,
    "kota" => "Jakarta",
];
echo $mahasiswa["nama"];      // User
echo $mahasiswa["kota"];      // Jakarta
?>

Percabangan (If/Else)

<?php
$nilai = 85;

if ($nilai >= 90) {
    echo "Grade: A";
} elseif ($nilai >= 80) {
    echo "Grade: B";
} elseif ($nilai >= 70) {
    echo "Grade: C";
} else {
    echo "Grade: D";
}
// Output: "Grade: B"

// Ternary operator (singkat)
$status = ($umur >= 17) ? "Dewasa" : "Anak-anak";
echo $status;
?>

If di Dalam HTML

<?php $login = true; ?>

<!DOCTYPE html>
<html>
<body>
    <?php if ($login): ?>
        <h1>Selamat datang, <?= $nama ?>!</h1>
        <a href="logout.php">Logout</a>
    <?php else: ?>
        <h1>Silakan Login</h1>
        <a href="login.php">Login</a>
    <?php endif; ?>
</body>
</html>

Perulangan (Loop)

<?php
// For loop
for ($i = 1; $i <= 5; $i++) {
    echo "<p>Perulangan ke-$i</p>";
}

// While loop
$counter = 1;
while ($counter <= 5) {
    echo "<p>Counter: $counter</p>";
    $counter++;
}

// Foreach (untuk array) — PALING SERING DIPAKAI
$menu = ["Nasi Goreng", "Mie Ayam", "Bakso", "Sate"];
foreach ($menu as $item) {
    echo "<li>$item</li>";
}

// Foreach dengan key
$harga = ["Nasi Goreng" => 15000, "Mie Ayam" => 12000, "Bakso" => 13000];
foreach ($harga as $makanan => $nominal) {
    echo "<tr><td>$makanan</td><td>Rp " . number_format($nominal) . "</td></tr>";
}
?>

Loop di HTML (Membuat Tabel Dinamis)

<?php
$siswa = [
    ["nama" => "Ahmad", "kota" => "Jakarta", "nilai" => 85],
    ["nama" => "Siti", "kota" => "Bandung", "nilai" => 92],
    ["nama" => "Budi", "kota" => "Surabaya", "nilai" => 78],
];
?>

<table border="1">
    <thead>
        <tr>
            <th>No</th>
            <th>Nama</th>
            <th>Kota</th>
            <th>Nilai</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($siswa as $index => $s): ?>
        <tr>
            <td><?= $index + 1 ?></td>
            <td><?= $s["nama"] ?></td>
            <td><?= $s["kota"] ?></td>
            <td><?= $s["nilai"] ?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

Function (Fungsi)

<?php
// Membuat fungsi
function spikirkan($nama) {
    return "Halo, $nama! Selamat datang.";
}

echo spikirkan("User");  // "Halo, User! Selamat datang."

// Fungsi dengan default parameter
function hitungDiskon($harga, $persen = 10) {
    $diskon = $harga * $persen / 100;
    return $harga - $diskon;
}

echo hitungDiskon(100000);       // 90000 (diskon 10%)
echo hitungDiskon(100000, 25);   // 75000 (diskon 25%)

// Fungsi helper format rupiah
function rupiah($angka) {
    return "Rp " . number_format($angka, 0, ',', '.');
}

echo rupiah(1500000);   // "Rp 1.500.000"
?>

Include & Require

Memecah kode ke beberapa file agar rapi:

<!-- header.php -->
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title><?= $title ?? 'Website Saya' ?></title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <nav>
        <a href="index.php">Beranda</a>
        <a href="about.php">Tentang</a>
        <a href="contact.php">Kontak</a>
    </nav>
<!-- footer.php -->
    <footer>
        <p>&copy; 2026 WebUser</p>
    </footer>
</body>
</html>
<!-- index.php -->
<?php $title = "Beranda"; ?>
<?php include 'header.php'; ?>

    <main>
        <h1>Selamat Datang!</h1>
        <p>Ini adalah halaman utama.</p>
    </main>

<?php include 'footer.php'; ?>

:::tip include vs require

  • include — kalau file tidak ditemukan, muncul warning tapi script tetap jalan
  • require — kalau file tidak ditemukan, muncul error dan script berhenti
  • Untuk file penting (seperti koneksi database), gunakan require :::

Latihan: Halaman Dinamis

Buat file menu.php di ~/Herd/belajar/:

<?php
$restoran = "Warung User";
$menu = [
    ["nama" => "Nasi Goreng Spesial", "harga" => 18000, "tersedia" => true],
    ["nama" => "Mie Ayam Bakso", "harga" => 15000, "tersedia" => true],
    ["nama" => "Soto Ayam", "harga" => 13000, "tersedia" => false],
    ["nama" => "Es Teh Manis", "harga" => 5000, "tersedia" => true],
    ["nama" => "Jus Alpukat", "harga" => 10000, "tersedia" => true],
];

function rupiah($angka) {
    return "Rp " . number_format($angka, 0, ',', '.');
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $restoran ?></title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: 'Segoe UI', sans-serif; background: #f0f2f5; padding: 40px 20px; }
        .container { max-width: 600px; margin: 0 auto; }
        h1 { text-align: center; color: #667eea; margin-bottom: 5px; }
        .subtitle { text-align: center; color: #999; margin-bottom: 25px; }
        table { width: 100%; border-collapse: collapse; background: white;
                border-radius: 10px; overflow: hidden;
                box-shadow: 0 2px 10px rgba(0,0,0,0.08); }
        th { background: #667eea; color: white; padding: 12px 15px; text-align: left; }
        td { padding: 12px 15px; border-bottom: 1px solid #eee; }
        tr:last-child td { border-bottom: none; }
        .tersedia { color: #28a745; font-weight: bold; }
        .habis { color: #dc3545; font-weight: bold; }
        .total { text-align: right; margin-top: 15px; color: #666; }
    </style>
</head>
<body>
    <div class="container">
        <h1>🍽️ <?= $restoran ?></h1>
        <p class="subtitle">Menu hari ini — <?= date("l, d F Y") ?></p>

        <table>
            <thead>
                <tr>
                    <th>No</th>
                    <th>Menu</th>
                    <th>Harga</th>
                    <th>Status</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($menu as $i => $item): ?>
                <tr>
                    <td><?= $i + 1 ?></td>
                    <td><?= $item["nama"] ?></td>
                    <td><?= rupiah($item["harga"]) ?></td>
                    <td>
                        <?php if ($item["tersedia"]): ?>
                            <span class="tersedia">✅ Tersedia</span>
                        <?php else: ?>
                            <span class="habis">❌ Habis</span>
                        <?php endif; ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>

        <p class="total">
            Total menu: <?= count($menu) ?> item
        </p>
    </div>
</body>
</html>

Buka http://belajar.test/menu.php di browser!

Selanjutnya

Sekarang kamu sudah paham dasar PHP. Mari lanjut ke Form Handling → — cara PHP menerima dan memproses data yang dikirim dari form HTML.