Buat folder baru didalam folder htdocs, kemudian buka menggunakan VS Code dan buat struktur file atau direktori seperti gambar berikut ini.
a. Pertama-tama buat database baru dengan nama pemrograman_web, kemudian buat table mahasiswa sebagai berikut.
CREATE TABLE `mahasiswa` (
`id` int(11) NOT NULL,
`nim` varchar(16) NOT NULL,
`nama` varchar(128) NOT NULL,
`jurusan` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
b. Selanjutnya membuat koneksi ke database, buka file config/Database.php dan ketikan kode program Berkut ini.
<?php
class Database {
private $host = "localhost";
private $db_name = "pemrograman_web";
private $username = "root";
private $password = "";
public $conn;
public function getConnection() {
$this->conn = null;
try {
$this->conn = new mysqli($this->host, $this->username, $this->password, $this->db_name);
} catch (Exception $e) {
echo "Connection error: " . $e->getMessage();
}
return $this->conn;
}
}
?>
File Config.php digunakan untuk membuat variable constant yang mana nantinya dapat diakases dari kelas manapun, pada praktikum ini akan membuat variable constant dengan nama BASE_URL yang berisi string base url dari project yang akan dibuat. Tambahkan kode program berikut pada Config.php
<?php
define('BASE_URL', 'http://localhost/web_programming/lab06/');
?>
Alert.php digunakan untuk membuat sebuah function yang berfungsi untuk menampilkan pesan Ketika melakukan operasi terhadap data, fungsi ini memiliki 2 buah argument statement yaitu $msg yang berisi pesan dan $sts yang berisi kode jika status 1 maka pesan berhasil dan jika 0 maka pesan gagal. Berikut kode program fungsi alert.
<?php
function alert($msg, $sts) {
if($sts == 1) {
$tipe = 'success';
} else {
$tipe = 'danger';
}
echo '
<div class="alert alert-'.$tipe.'" role="alert">'.$msg.'
</div>
';
}
Class Mahasiswa digunakan untuk membuat fungsi operasi Create, Read, Update dan Delete data Mahasiswa, berikut ini Langkah-langkah pembuatan class Mahasiswa.
1. Tambahkan session_start() pada baris paling atas kode program
2. Buat class dengan nama Mahasiswa
3. Deklarasikan variabel yang dibutuhkan dan fungsi constructor yang memanggil koneksi database
<?php
session_start();
class Mahasiswa {
private $conn;
private $table_name = "mahasiswa";
public $id;
public $nim;
public $nama;
public $jurusan;
public function __construct($db) {
$this->conn = $db;
}
4. Buat fungsi create yang nantinya digunakan untuk menambahkan data mahasiswa
public function create() {
$query = "INSERT INTO " . $this->table_name . " SET nim=?, nama=?, jurusan=?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("sss", $this->nim, $this->nama, $this->jurusan);
if ($stmt->execute()) {
$_SESSION['flash_message'] = "Data berhasil disimpan!";
header("Location: " . BASE_URL . "index.php?msg=1");
} else {
$_SESSION['flash_message'] = "Data gagal disimpan!";
header("Location: " . BASE_URL . "index.php?msg=0");
}
}
Catatan : $_SESSION[‘flash_message’] berfungsi untuk membuat session yang berisi pesan berhasil atau tidak berhasil sebuah data ditambahkan. Sedangkan header digunakan untuk redirect ke file index.php dengan parameter msg
5. Buat fungsi read untuk menampilkan data mahasiswa, fungsi read memiliki default parameter $id yang berisi string kosong, jika $id == “” maka akan mengeksekusi query untuk menampilkan seluruh data mahasiswa, jika $id !== “” maka akan mengeksekusi query untuk menampilkan data mahasiswa berdasarkan id mahasiswa. Berikut kode program fungsi read.
public function read($id="") {
if ($id == "") {
$query = "SELECT * FROM " . $this->table_name;
} else {
$query = "SELECT * FROM " . $this->table_name . " WHERE id= " . $id;
}
$result = $this->conn->query($query);
return $result;
}
6. Buat fungsi update untuk melakukan perubahan data mahasiswa berdasarkan ID mahasiswa
public function update() {
$query = "UPDATE " . $this->table_name . " SET nim=?, nama=?, jurusan=? WHERE id=?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("ssss", $this->nim, $this->nama, $this->jurusan, $this->id);
if ($stmt->execute()) {
$_SESSION['flash_message'] = "Data berhasil diupdate!";
header("Location: " . BASE_URL . "index.php?msg=1");
} else {
$_SESSION['flash_message'] = "Data gagal diupdate!";
header("Location: " . BASE_URL . "index.php?msg=0");
}
}
7. Buat fungsi delete untuk menghapus data mahasiswa berdasarkan ID
public function delete() {
$query = "DELETE FROM " . $this->table_name . " WHERE id=?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("s", $this->id);
if ($stmt->execute()) {
$_SESSION['flash_message'] = "Data berhasil dihapus!";
header("Location: " . BASE_URL . "index.php?msg=1");
} else {
$_SESSION['flash_message'] = "Data gagal disimpan!";
header("Location: " . BASE_URL . "index.php?msg=0");
}
}
}
?>
Fungsi mahasiswa ini berfungsi sebagai controller yang menghubungkan antara class/model mahasiswa dengan view, buka file function/Mahasiswa.php, kemudian tambahkan kode program berikut
<?php
include_once '../config/Database.php';
include '../config/Config.php';
include_once '../model/Mahasiswa.php';
$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);
if (isset($_GET['action'])) {
if ($_GET['action'] == 'create') {
$mahasiswa->nim = $_POST['nim'];
$mahasiswa->nama = $_POST['nama'];
$mahasiswa->jurusan = $_POST['jurusan'];
$mahasiswa->create();
} elseif ($_GET['action'] == 'delete') {
$mahasiswa->id = $_GET['id'];
$mahasiswa->delete();
} elseif ($_GET['action'] == 'update') {
$mahasiswa->id = $_POST['id'];
$mahasiswa->nim = $_POST['nim'];
$mahasiswa->nama = $_POST['nama'];
$mahasiswa->jurusan = $_POST['jurusan'];
$mahasiswa->update();
}
}
?>
Pertama akan dilakukan pengecekan sebuah parameter action yang dikirimkan melalui method GET, jika ada terdapat parameter action yang dikirimkan maka nilai parameter akan diambil dan digunakan sesuai dengan fungsinya, ada 3 buah isi parameter yang dikirimkan yaitu create, delete dan update.
View ini berfungsi untuk menampilkan data, menampilkan form input dan update data mahasiswa.
File Index.php ini berisi tampilan data-data mahasiswa yang telah berhasil diinputkan kedalam database, berikut ini kode program Index.php
<?php
include 'function/Alert.php';
include_once './config/Database.php';
include_once './model/Mahasiswa.php';
$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);
$result = $mahasiswa->read();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OOP - CRUD</title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-12">
<h4 class="text-center">Data Mahasiswa</h4>
<a class="btn btn-primary btn-sm mb-2" href="create.php">Tambah Mahasiswa</a>
<!-- show alert -->
<?php
if (isset($_SESSION['flash_message']) && isset($_GET['msg'])) {
if ($_GET['msg'] == '1') {
alert($_SESSION['flash_message'], 1);
}else{
alert($_SESSION['flash_message'], 0);
}
}
?>
<table class="table table-stripped table-bordered">
<thead>
<tr>
<th>#</th>
<th>NIM</th>
<th>NAMA</th>
<th>JURUSAN</th>
<th>ACTION</th>
</tr>
</thead>
<tbody>
<?php $no=1; while ($row = $result->fetch_assoc()) { ?>
<tr>
<td><?=$no++?></td>
<td><?=$row['nim']?></td>
<td><?=$row['nama']?></td>
<td><?=$row['jurusan']?></td>
<td>
<a class="btn btn-success btn-sm" href="edit.php?id=<?=$row['id']?>">Edit</a>
<a class="btn btn-danger btn-sm" href="function/Mahasiswa.php?action=delete&&id=<?=$row ['id']?>" onclick="return confirm('Anda yakin ingin menghapus Data <?php echo $row['nama'];?>?');">Hapus</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
<script src="assets/js/bootstrap.bundle.min.js"></script>
</body>
</html>
File ini berisi form input data mahasiswa
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OOP - Create</title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<h1>Create Mahasiswa</h1>
<form action="function/Mahasiswa.php?action=create" method="post">
<div class="form-group">
<label for="nim">NIM</label>
<input type="text" class="form-control" name="nim" required>
</div>
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" name="nama" required>
</div>
<div class="form-group">
<label for="jurusan">Jurusan</label>
<input type="text" class="form-control" name="jurusan" required>
</div>
<button type="submit" class="btn btn-primary mt-2">Create</button>
</form>
</div>
</div>
<script src="assets/js/bootstrap.bundle.min.js"></script>
</body>
</html>
File ini berisi form untuk melakukan perubahan data mahasiswa
<?php
include_once './config/Database.php';
include_once './model/Mahasiswa.php';
$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);
if (isset($_GET['id'])) {
$result = $mahasiswa->read($_GET['id'])->fetch_assoc();
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OOP - Edit</title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-SgOJa3DmI69IUzQ2PVdRZhwQ+dy64/BUtbMJw1MZ8t5HZApcHrRKUc4W0kG879m7" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<h1>Edit Mahasiswa</h1>
<form action="function/Mahasiswa.php?action=update" method="post">
<div class="form-group">
<label for="nim">NIM</label>
<input type="hidden" class="form-control" name="id" value="<?=$result['id'];?>" required>
<input type="text" class="form-control" name="nim" value="<?=$result['nim'];?>" required>
</div>
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" name="nama" value="<?=$result['nama'];?>" required>
</div>
<div class="form-group">
<label for="jurusan">Jurusan</label>
<input type="text" class="form-control" name="jurusan" value="<?=$result['jurusan'];?>" required>
</div>
<button type="submit" class="btn btn-primary mt- 2">Update</button>
</form>
</div>
</div>
<script src="assets/js/bootstrap.bundle.min.js" integrity="sha384-k6d4wzSIapyDyv1kpU366/PK5hCdSbCRGRCMv+eplOQJWyd1fbcAu9OCUj5zNLiq" crossorigin="anonymous"></script>
</body>
</html>
Program CRUD dapat diefisiensi dengan menggabungkan halaman create.php dan edit.php menjadi satu, dengan nama form.php. logika if else digunakan pada form.php, Jadi ketika query yang diminta adalah create maka form.php akan menampilkan kondisi yang sesuai untuk create data, dan sebaliknya. Setelah itu, di index.php ubah bagian-bagian yang mereferensi ke create.php dan edit.php menjadi mereferensi ke form.php. Jika sudah berhasil, file create.php dan edit.php bisa dihapus.
buat form.php dengan isi kode berikut:
<?php
include_once './config/Database.php';
include_once './model/Mahasiswa.php';
$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);
$isEdit = false;
$data = [
'id' => '',
'nim' => '',
'nama' => '',
'jurusan' => ''
];
if (isset($_GET['id'])) {
$result = $mahasiswa->read($_GET['id'])->fetch_assoc();
if ($result) {
$isEdit = true;
$data = $result;
}
}
$formAction = $isEdit ? 'function/Mahasiswa.php?action=update' : 'function/Mahasiswa.php?action=create';
$formTitle = $isEdit ? 'Edit Mahasiswa' : 'Create Mahasiswa';
$submitText = $isEdit ? 'Update' : 'Create';
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= $formTitle ?></title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<h1><?= $formTitle ?></h1>
<form action="<?= $formAction ?>" method="post">
<?php if ($isEdit): ?>
<input type="hidden" name="id" value="<?= $data['id'] ?>">
<?php endif; ?>
<div class="form-group">
<label for="nim">NIM</label>
<input type="text" class="form-control" name="nim" value="<?= $data['nim'] ?>" required>
</div>
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" name="nama" value="<?= $data['nama'] ?>" required>
</div>
<div class="form-group">
<label for="jurusan">Jurusan</label>
<input type="text" class="form-control" name="jurusan" value="<?= $data['jurusan'] ?>" required>
</div>
<button type="submit" class="btn btn-primary mt-2"><?= $submitText ?></button>
</form>
</div>
</div>
<script src="assets/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Tutor Bang
angjay gege
Tes
Welcome to whoever reading this. Feel free to leave a comment and please send an appropriate comment on this page. Thank you :)