Pemrograman PHP pada Web

PHP pada dasarnya dapat menyisipkan perintah atau keyword html didalam filenya. PHP biasanya digunakan untuk backend pada proses web oleh sebab itu pada pertemuan ini kita akan belajar terkait PHP dalam pemrograman web.

METHOD GET & POST

Dalam PHP, metode GET dan POST digunakan untuk mengirim data dari klien ke server melalui formulir HTML. Berikut adalah penjelasan singkat tentang keduanya:

METHOD GET

Penggunaan: Data dikirim melalui URL sebagai query string.
Keamanan: Kurang aman karena data terlihat di URL.
Ukuran Data: Terbatas, biasanya hingga 2048 karakter.

index.html

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<body>

<form method="GET" action="process_form.php">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

process_form.php

1
2
3
4
5
6
7
8
9
10
11
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
// Collect and sanitize form data
$name = htmlspecialchars($_GET['name']);
$email = htmlspecialchars($_GET['email']);

// Display the collected data
echo "Name: " . $name . "<br>";
echo "Email: " . $email;
}
?>

Data akan dikirim sebagai process_form.php?nama=nilai&email=nilai.

METHOD POST

Penggunaan: Data dikirim melalui body HTTP request.
Keamanan: Lebih aman dibandingkan GET karena data tidak terlihat di URL.
Ukuran Data: Tidak terbatas, cocok untuk mengirim data besar.

index.html

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<body>

<form method="POST" action="process_form.php">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

process_form.php

1
2
3
4
5
6
7
8
9
10
11
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Collect and sanitize form data
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);

// Display the collected data
echo "Name: " . $name . "<br>";
echo "Email: " . $email;
}
?>

Kapan Menggunakan GET atau POST?

GET: Cocok untuk permintaan yang tidak mengubah data di server, seperti pencarian.
POST: Cocok untuk permintaan yang mengubah data di server, seperti formulir pendaftaran

DATABASE CONNECTION IN PHP

Karena PHP biasa digunakan untuk backend pada sebuah web, maka PHP mendukung untuk langsung berkomunikasi atau berkoneksi dengan database. Database yang kita gunakan adalah MySQL. Untuk menghubungkan PHP dengan database MySQL, Anda bisa menggunakan MySQLi atau PDO. Berikut adalah contoh cara membuat koneksi database menggunakan MySQLi:

MENGGUNAKAN MySQLi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "nama_database";

// Membuat koneksi
$conn = new mysqli($servername, $username, $password, $dbname);

// Cek koneksi
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
echo "Koneksi berhasil";
?>

Dalam contoh ini, kita menggunakan mysqli_connect untuk menghubungkan ke database. Pastikan untuk mengganti nama_database dengan nama database Anda.

MENGGUNAKAN PDO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "nama_database";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// Set PDO error mode ke exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Koneksi berhasil";
} catch(PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
}
?>

Dalam contoh ini, kita menggunakan PDO untuk menghubungkan ke database. PDO mendukung banyak jenis database selain MySQL, seperti PostgreSQL dan SQLite.

APLIKASI CRUD SEDERHANA

PHP sering dijodohkan dengan MySQL untuk membangun aplikasi web. MySQL berperan sebagai tempat menyimpan data (basis data) sedangkan PHP adalah program yang mengelola data tersebut.

Sebenarnya PHP tidak hanya bisa dijodohkan dengan MySQL saja. PHP juga bisa dijodohkan dengan SQLite, PostgreSQL, MongoDB, Ms. Access, dsb.

Pada kesempatan ini, kita akan belajar menggunakan PHP dan MySQL untuk membuat aplikasi sederhana.

Bagaimana PHP dan MySQL dihubungkan? PHP dan MySQL dapat saling berhubungan melalui perantara API (Application Programming Interface).

PHP dan MySQL

Ada tiga jenis API MySQL yang disediakan di PHP:

  • mysql API ini sudah tidak didukung/dikembangkan lagi (kadaluarsa).
  • mysqli (mysql improvement) peningkatan dari API mysql
  • PDO (PHP Data Object)

API yang pertama sudah tidak didukung lagi sejak PHP versi 5.5.x dan digantikan dengan mysqli yang lebih canggih. Karena mysqli dapat digunakan secara OOP dan prosedural.

Sedangkan API PDO digunakan untuk menghubungkan PHP dengan vendor database yang lainnya. Jadi tidak hanya untuk MySQL saja.

Pada tutorial ini, kita akan belajar cara menghubungkan PHP dan MySQL menggunakan API mysqli secara prosedural.

Menyiapkan Database

Pertama, mari kita membuat database bernama pendaftaran_siswa.

1
CREATE DATABASE `pendaftaran_siswa`;

Setelah itu, buatlah tabel di dalam database tersebut dengan nama calon_siswa.

1
2
3
4
5
6
7
8
9
CREATE TABLE `pendaftaran_siswa`.`calon_siswa` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nama` VARCHAR(64) NOT NULL ,
`alamat` VARCHAR(255) NOT NULL ,
`jenis_kelamin` VARCHAR(16) NOT NULL ,
`agama` VARCHAR(16) NOT NULL ,
`sekolah_asal` VARCHAR(64) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;

Kemudian kita coba isi dengan sebuah data, klik Insert.

1
INSERT INTO `calon_siswa` (`id`, `nama`, `alamat`, `jenis_kelamin`, `agama`, `sekolah_asal`) VALUES (NULL, 'Lia', 'Jl. Mangga No. 3, Mataram', 'perempuan', 'islam', 'SMPN 32 Ampenan');

Membuat Proyek Baru

Setelah itu buat proyek/direktori baru di direktori htdocs atau /var/www/html.

mkdir /var/www/html/pendaftaran-siswa

Buat file-file PHP yang diperlukan

touch /var/www/html/pendaftaran-siswa/{config.php,index.php,list-siswa.php,form-daftar.php,proses-pendaftaran.php,form-edit.php,proses-edit.php,hapus.php}

Maka akan terbuat delapan file PHP kosong.

Keterangan:

  • config.php — untuk menyimpan konfigurasi database;
  • index.php — halaman utama;
  • list-siswa.php — halaman untuk menampilkan data siswa;
  • form-daftar.php — halaman formulir pendaftaran;
  • proses-pendaftaran.php — skrip yang memproses pendaftaran;
  • form-edit.php — form untuk edit data siswa;
  • proses-edit.php — skrip untuk memproses edit/update;
  • hapus.php — skrip untuk menghapus data dari database;

Cara Membuat Koneksi ke Database MySQL

Buka file config.php, silakan isi dengan kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$server = "localhost";
$user = "root";
$password = "kopi";
$nama_database = "pendaftaran_siswa";

$db = mysqli_connect($server, $user, $password, $nama_database);

if( !$db ){
die("Gagal terhubung dengan database: " . mysqli_connect_error());
}

?>

Untuk menghubungkan PHP dengan MySQL, kita menggunakan fungsi mysqli_connect() dengan parameter alamat server, user, password, dan nama database.

Silakan isi password sesuai dengan yang dibuat di server-nya. Jika tidak menggunakan password, maka dikosongkan saja.

1
$password = "";

Jika koneksi gagal, variabel $db akan bernilai false.

Karena itu, kita bisa mengeceknya dengan ekspresi if.

1
2
3
if( !$db ){
die("Gagal terhubung dengan database: " . mysqli_connect_error());
}

Membuat Halaman Indeks

Rencananya kita akan menaruh dua link di halaman indeks. Link pertama untuk menuju ke formulir pendaftaran dan link yang kedua untuk menuju ke halaman data siswa yang sudah mendaftar.

Sekarang, silakan isi file index.php dengan kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Pendaftaran Siswa Baru</h3>
<h1>SMK Coding</h1>
</header>

<h4>Menu</h4>
<nav>
<ul>
<li><a href="form-daftar.php">Daftar Baru</a></li>
<li><a href="list-siswa.php">Pendaftar</a></li>
</ul>
</nav>

</body>
</html>

Cara Menampilkan Data Tabel MySQL

Silakan buka list-siswa.php dan isi dengan kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php include("config.php"); ?>

<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Siswa yang sudah mendaftar</h3>
</header>

<nav>
<a href="form-daftar.php">[+] Tambah Baru</a>
</nav>

<br>

<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Alamat</th>
<th>Jenis Kelamin</th>
<th>Agama</th>
<th>Sekolah Asal</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>

<?php
$sql = "SELECT * FROM calon_siswa";
$query = mysqli_query($db, $sql);

while($siswa = mysqli_fetch_array($query)){
echo "<tr>";

echo "<td>".$siswa['id']."</td>";
echo "<td>".$siswa['nama']."</td>";
echo "<td>".$siswa['alamat']."</td>";
echo "<td>".$siswa['jenis_kelamin']."</td>";
echo "<td>".$siswa['agama']."</td>";
echo "<td>".$siswa['sekolah_asal']."</td>";

echo "<td>";
echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";
echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";
echo "</td>";

echo "</tr>";
}
?>

</tbody>
</table>

<p>Total: <?php echo mysqli_num_rows($query) ?></p>

</body>
</html>

Pertama kita membutuhkan koneksi ke database, maka kita harus mengimpor file config.php agar variabel $db dapat dibaca.

1
<?php include("config.php"); ?>

Setelah itu, kita melakukan query untuk mengambil data siswa pada tabel calon_siswa.

1
2
$sql = "SELECT * FROM calon_siswa";
$query = mysqli_query($db, $sql);

Hasil dari query tersebut, kemudian kita ubah menjadi array dengan fungsi mysqli_fetch_array() dan hasilnya disimpan dalam variabel $siswa.

1
$siswa = mysqli_fetch_array($query)

Perulangan while akan mengulang selama masih ada isi dalam tabel. Kemudian, selama perulangan…kita tampilkan datanya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while($siswa = mysqli_fetch_array($query)){
echo "<tr>";

echo "<td>".$siswa['id']."</td>";
echo "<td>".$siswa['nama']."</td>";
echo "<td>".$siswa['alamat']."</td>";
echo "<td>".$siswa['jenis_kelamin']."</td>";
echo "<td>".$siswa['agama']."</td>";
echo "<td>".$siswa['sekolah_asal']."</td>";

echo "<td>";
echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";
echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";
echo "</td>";

echo "</tr>";
}

Perhatikan array $siswa, indeksnya sesuai dengan nama kolom pada database dan bersifat case sensitive.

Terakhir, kita menampilkan total data yang ada di dalam tabel dengan fungsi mysqli_num_rows().

1
echo mysqli_num_rows($query);

Cara Menambahkan Data ke Tabel MySQL

Ada dua file yang kita butuhkan untuk menambahkan data ke MySQL.

  • form-daftar.php halaman untuk form input;
  • proses-pendaftaran.php skrip untuk memproses data yang diinputkan.

Sebenarnya bisa saja dibuat dalam satu file, tapi biar lebih mudah dipahami…kita buat terpisah saja.

Silakan buka file form-daftar.php dan isi dengan kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html>
<head>
<title>Formulir Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Formulir Pendaftaran Siswa Baru</h3>
</header>

<form action="proses-pendaftaran.php" method="POST">

<fieldset>

<p>
<label for="nama">Nama: </label>
<input type="text" name="nama" placeholder="nama lengkap" />
</p>
<p>
<label for="alamat">Alamat: </label>
<textarea name="alamat"></textarea>
</p>
<p>
<label for="jenis_kelamin">Jenis Kelamin: </label>
<label><input type="radio" name="jenis_kelamin" value="laki-laki"> Laki-laki</label>
<label><input type="radio" name="jenis_kelamin" value="perempuan"> Perempuan</label>
</p>
<p>
<label for="agama">Agama: </label>
<select name="agama">
<option>Islam</option>
<option>Kristen</option>
<option>Hindu</option>
<option>Budha</option>
<option>Atheis</option>
</select>
</p>
<p>
<label for="sekolah_asal">Sekolah Asal: </label>
<input type="text" name="sekolah_asal" placeholder="nama sekolah" />
</p>
<p>
<input type="submit" value="Daftar" name="daftar" />
</p>

</fieldset>

</form>

</body>
</html>

Perhatikan pada tag pembuka

, di sana kita menggunakan atribut action dan method.

1
<form action="proses-pendaftaran.php" method="POST">

Atribut action digunakan untuk menentukan skrip mana yang akan memproses data inputan. Sedangkan atribut method untuk menentukan metode pengiriman datanya.

Perhatikan juga pada input-nya, di sana ada atribut name. Atribut ini untuk menentukan kunci indeks dari array $_POST dan $_GET.

Form pendaftaran siswa baru

Selanjutnya silakan isi file proses-pendaftaran.php dengan kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

include("config.php");

// cek apakah tombol daftar sudah diklik atau blum?
if(isset($_POST['daftar'])){

// ambil data dari formulir
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$jk = $_POST['jenis_kelamin'];
$agama = $_POST['agama'];
$sekolah = $_POST['sekolah_asal'];

// buat query
$sql = "INSERT INTO calon_siswa (nama, alamat, jenis_kelamin, agama, sekolah_asal) VALUE ('$nama', '$alamat', '$jk', '$agama', '$sekolah')";
$query = mysqli_query($db, $sql);

// apakah query simpan berhasil?
if( $query ) {
// kalau berhasil alihkan ke halaman index.php dengan status=sukses
header('Location: index.php?status=sukses');
} else {
// kalau gagal alihkan ke halaman indek.php dengan status=gagal
header('Location: index.php?status=gagal');
}


} else {
die("Akses dilarang...");
}

?>

Pertama kita ambil data yang dikirim dari formulir, semuanya tersimpan pada variabel $_POST. Karena tadi kita menggunakan method POST pada form.

Setelah itu, kita buat query penyimpanan.

Lalu melakukan pengecekan, apakah query-nya berhasil atau gagal.

Untuk menampilkan pesan berhasil dan gagal pada halaman index.php, silakan tambahkan kode berikut di bawah tag