Belajar PHP

code
<? PHP ?>

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!

8+
Topik Bahasan
25+
Contoh Kode
100%
Praktis

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.

💡 Kenapa Belajar PHP?
  • 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
code

VS Code

Free code editor dengan PHP support

download Download
dns

XAMPP

Local development server

download Download
⚠️ Perhatian: Pastikan kalian download versi XAMPP yang sesuai dengan sistem operasi kalian (Windows, macOS, atau Linux).

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:

1

Download XAMPP

Kunjungi website resmi XAMPP dan download versi terbaru untuk sistem operasi kalian. Pilih versi dengan PHP 8.x untuk fitur terbaru.

💡 Tips: Download selalu dari website resmi untuk menghindari malware.
2

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
3

Verifikasi Instalasi

Setelah instalasi selesai, buka XAMPP Control Panel dan cek apakah semua service bisa dijalankan.

✅ Berhasil jika: Apache dan MySQL bisa di-start tanpa error

dns Setup & Menjalankan Server

Setelah XAMPP berhasil diinstall, saatnya menjalankan server Apache untuk development:

XAMPP Control Panel
XAMPP Control Panel - Interface untuk mengelola services

Status Services:

check_circle Apache: Running check_circle MySQL: Running cancel FileZilla: Stopped

Untuk development PHP, kalian cukup menjalankan Apache saja. MySQL diperlukan jika akan menggunakan database.

folder Struktur Direktori XAMPP
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.

science Quick Test - Apakah Server Berjalan?
  1. Start Apache di XAMPP Control Panel
  2. Buka browser dan kunjungi: http://localhost
  3. Jika muncul halaman XAMPP dashboard, berarti server sudah berjalan! 🎉
❗ Troubleshooting:
  • 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:

label PHP Opening & Closing Tags
<?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>
PHP Output Example
Output di browser - Hasil dari file PHP pertama
assignment Cara Test File PHP
  1. Simpan file sebagai hello.php di C:\xampp\htdocs\
  2. Pastikan Apache sudah running di XAMPP
  3. Buka browser dan kunjungi: http://localhost/hello.php
  4. Lihat hasilnya! PHP code akan diproses di server
📝 Penting untuk Diingat:
  • 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 $:

edit Deklarasi Variabel
<?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>";
?>
Output:
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
📋 Aturan Penamaan Variabel:
  • 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:

fork_right Kondisi (If Statement)
<?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;
?>
alt_route Switch Statement
<?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)

For Loop
<?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>";
}
?>
While Loop
<?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++;
}
?>
refresh Foreach Loop (untuk Array)
<?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>";
?>
code Latihan: Sistem Penilaian Sederhana
<?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:

play_circle Function Dasar
<?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
?>
settings Function Lanjutan
<?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:

config.php
<?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));
}
?>
index.php
<?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';
?>
📋 Perbedaan Include vs Require:
  • 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:

1

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
);
link Koneksi Database
<?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

add Create (Insert Data)
<?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();
?>
visibility Read (Select Data)
<?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();
?>
✅ Best Practices Database:
  • 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
assignment Project Mini: Sistem Registrasi Sederhana
<!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