Bab 8 - Crud Ii
Bab 8 - Crud Ii
(BAGIAN 2)
Pratikan akan mempelajari tentang Implementasi CRUD (Create Read Update Delete). Tujuan
setelah mempelajari BAB ini adalah :
1. Mampu menghubungkan antara Database dengan PHP.
2. Mampu memahami penggunaan CRUD.
3. Mampu membuat Report.
A. Proses Transaction
1. Membuat file transaction-proses.php, yang berada di folder transaction.
<?php
include '../koneksi.php';
if (isset($_POST['simpan'])) {
$nama = $_POST['detail-nama'];
$nomor = $_POST['detail-nomor'];
$alamat = $_POST['detail-alamat'];
$kategori = $_POST['detail-kategori'];
$harga = $_POST['detail-harga'];
$status = $_POST['detail-status'];
$tanggal = date('Y-m-d');
1
Lab. Pemrograman Komputer ITN Malang 2024
} else {
header('location: ../index.php');
}
<head>
<meta charset="UTF-8" />
<link rel="icon" href="../assets/icon.png" />
<link rel="stylesheet" href="../css/admin.css" />
<!-- Boxicons CDN Link -->
<link href="https://unpkg.com/[email protected]/css/boxicons.min.css"
rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-
scale=1.0" />
<title>Catshop Admin | Transaction</title>
</head>
<body>
<div class="sidebar">
<div class="logo-details">
<i class="bx bx-category"></i>
<span class="logo_name">CatShop</span>
</div>
<ul class="nav-links">
<li>
<a href="../admin.php" class="active">
<i class="bx bx-grid-alt"></i>
<span class="links_name">Dashboard</span>
</a>
</li>
<li>
<a href="../categories/categories.php">
<i class="bx bx-box"></i>
<span class="links_name">Categories</span>
</a>
</li>
<li>
<a href="../transaction/transaction.php">
<i class="bx bx-list-ul"></i>
<span class="links_name">Transaction</span>
</a>
</li>
<li>
<a href="../logout.php">
<i class="bx bx-log-out"></i>
<span class="links_name">Log out</span>
</a>
</li>
</ul>
</div>
<section class="home-section">
<nav>
<div class="sidebar-button">
2
Lab. Pemrograman Komputer ITN Malang 2024
<i class="bx bx-menu sidebarBtn"></i>
</div>
<div class="profile-details">
<span class="admin_name">Catshop Admin</span>
</div>
</nav>
<div class="home-content">
<h3>Transaction</h3>
<table class="table-data">
<thead>
<tr>
<th>Tanggal</th>
<th>Nama</th>
<th>Kategori</th>
<th>Harga</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
include '../koneksi.php';
$sql = "SELECT * FROM tb_transaction";
$result = mysqli_query($koneksi, $sql);
if (mysqli_num_rows($result) == 0) {
echo "
<h3 style='text-align: center; color: red;'>Data
Kosong</h3>
";
} else {
while ($data = mysqli_fetch_assoc($result)) {
echo "
<tr>
<td>$data[tanggal]</td>
<td>$data[nama]</td>
<td>$data[jenis]</td>
<td>$data[harga]</td>
<td><p class='success'>$data[status]</p></td>
<td style='display:
none;'>$data[nomorhp]</td>
<td>
<button class='btn_detail' data-
nomorhp='$data[nomorhp]'
onclick='showDetails(\"$data[tanggal]\", \"$data[nama]\", \"$data[jeni
s]\", \"$data[harga]\", \"$data[status]\")'>Detail</button>
</td>
</tr>
";
}
}
?>
</tbody>
</table>
</div>
</section>
<script>
let sidebar = document.querySelector(".sidebar");
3
Lab. Pemrograman Komputer ITN Malang 2024
let sidebarBtn = document.querySelector(".sidebarBtn");
sidebarBtn.onclick = function() {
sidebar.classList.toggle("active");
if (sidebar.classList.contains("active")) {
sidebarBtn.classList.replace("bx-menu", "bx-menu-alt-
right");
} else sidebarBtn.classList.replace("bx-menu-alt-right", "bx-
menu");
};
</body>
</html>
<head>
<link rel="icon" href="assets/icon.png" />
<title>Home</title>
<link rel="stylesheet" href="css/style.css" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com"
crossorigin />
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@400;500;700&family=Roboto:wght@500;700&display=swa
p" rel="stylesheet" />
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/
all.min.css" />
<script
src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
<div class="container">
<header>
<nav>
<div class="logo">
<img src="assets/logo.png" alt="" />
</div>
<input type="checkbox" id="click" />
<label for="click" class="menu-btn">
<i class="fas fa-bars"></i>
</label>
<ul>
4
Lab. Pemrograman Komputer ITN Malang 2024
<li><a href="#">Home</a></li>
<li><a href="#">Categories</a></li>
<li><a href="login.php"
class="btn_login">Login</a></li>
</ul>
</nav>
</header>
<main>
<div class="jumbotron">
<div class="jumbotron-text">
<h1>Find Your New Little Cat, Make a New
Friend</h1>
<p> Teman barumu yang lucu menunggu mu,
ayo temukan mereka sekarang
</p>
<button type="button"
class="btn_getStarted">Get Started</button>
</div>
<div class="jumbotron-img">
<img src="assets/jumbotron.png"
alt="" />
</div>
</div>
<div class="cards-categories">
<h2>Cat Categories</h2>
<div class="card-categories">
<?php
include 'koneksi.php';
$sql = "SELECT * FROM tb_categories";
$result = mysqli_query($koneksi, $sql);
if (mysqli_num_rows($result) == 0) {
echo "
<h3 style='text-align: center;
color: red;'>Data Kosong</h3>
";
}
while ($data =
mysqli_fetch_assoc($result)) {
echo "
<div class='card'>
<div class='card-image'>
<img
src='img_categories/$data[photo]' alt='tidak ada gambar' />
</div>
<div class='card-content'>
<h5>$data[categories]</h5>
<p
class='description'>$data[description]</p>
<p class='price'>
$data[price] </p>
<button
class='btn_belanja' type='submit'
onclick='bukaModal(\"id=$data[id]\")'>Beli</button>
</div>
</div>
";
5
Lab. Pemrograman Komputer ITN Malang 2024
}
?>
</div>
</div>
<!-- Modal -->
<div id="myModal" class="modal-container"
onclick="tutupModal()">
<div class="modal-dialog"
onclick="event.stopPropagation()">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title "
style="color: #ffb72b;">Formulit Pembayaran</h1>
<button type="button"
class="btn-close" aria-label="Close"></button>
</div>
<div class="modal-body">
<form>
<input type="hidden"
name="category_id" id="category_id" value="">
<input type="hidden"
name="category_name" id="category_name" value="">
<input type="hidden"
name="price" id="price" value="">
<div class="form-
group">
<label
class="labelmodal" for="recipient-name" class="col-form-
label">Nama :</label>
<input
class="inputdata" type="text" class="form-control" id="recipient-
name">
</div>
<div class="form-
group">
<label
class="labelmodal" for="handphone" class="col-form-label">No. Hp
:</label>
<input
class="inputdata" type="text" class="form-control" id="handphone">
</div>
<div class="form-
group">
<label
class="labelmodal" for="alamat-text"
class="col-form-label">Alamat:</label>
<textarea
class="inputalamat" class="form-control" id="alamat-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary" onclick="tutupModal()">Keluar</button>
<button type="button"
class="btn btn-yellow" onclick="bukaModal2()">Lanjutkan</button>
</div>
6
Lab. Pemrograman Komputer ITN Malang 2024
</div>
</div>
</div>
<!-- Modal 2 -->
<div id="myModal2" class="modal-container"
onclick="tutupModal2()">
<div class="modal-dialog"
onclick="event.stopPropagation()">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title"
style="color: #ffb72b;">Data Transaksi</h1>
<button type="button"
class="btn-close" aria-label="Close" onclick="tutupModal2()"></button>
</div>
<form
action="transaction/transaction-proses.php" method="post">
<div class="modal-body">
<h4> Kategori</h4>
<div class="form-
group">
<label
class="labelmodal" for="detail-kategori" class="col-form-
label">Kategori
:</label>
<input
class="inputdata" type="text" name="detail-kategori" class="form-
control" id="detail-kategori" readonly>
</div>
<div class="form-
group">
<label
class="labelmodal" for="detail-harga" class="col-form-
label">Harga :</label>
<input
class="inputdata" type="text" name="detail-harga" class="form-control"
id="detail-harga" readonly>
</div>
<h4>Pembeli</h4>
<div class="form-
group">
<label
class="labelmodal" for="detail-nama" class="col-form-label">Nama
:</label>
<input
class="inputdata" name="detail-nama" type="text" class="form-control"
id="detail-nama" readonly>
</div>
<div class="form-
group">
<label
class="labelmodal" for="detail-nomorhp" class="col-form-label">No. Hp
:</label>
<input
class="inputdata" name="detail-nomor" type="text" class="form-control"
id="detail-nomorhp" readonly>
</div>
7
Lab. Pemrograman Komputer ITN Malang 2024
<div class="form-
group">
<label
class="labelmodal" for="detail-alamat" class="col-form-
label">Alamat:</label>
<textarea
class="inputalamat" name="detail-alamat" class="form-control"
id="detail-alamat" readonly></textarea>
</div>
<input type="hidden"
name="detail-status" value="succes">
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary"
onclick="kembaliKeModalPertama()">Kembali</button>
<button name="simpan"
type="submit" class="btn btn-yellow"
onclick="lakukanPembayaran()">Lakukan
Pembayaran</button>
</div>
</form>
</div>
</div>
</div>
</main>
<footer>
<h4>© Lab Pemrograman Komputer 2024</h4>
</footer>
</div>
<script>
var selectedCategoryId;
// Fungsi Modal
function bukaModal(categoryId) {
console.log('categoryId:', categoryId);
selectedCategoryId = categoryId;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200)
{
var categoryData =
JSON.parse(xhr.responseText);
document.getElementById('category_id').value = categoryId;
document.getElementById('category_name').value =
categoryData.categories;
document.getElementById('price').value =
categoryData.price;
document.getElementById("myModal").style.display = "flex";
}
8
Lab. Pemrograman Komputer ITN Malang 2024
};
xhr.open("GET", "get_kategori.php?" + categoryId,
true);
xhr.send();
}
function tutupModal() {
document.getElementById("myModal").style.display =
"none";
}
function tutupModal2() {
document.getElementById("myModal2").style.display =
"none";
}
function bukaModal2() {
tutupModal(); // Tutup modal pertama
document.getElementById("myModal2").style.display =
"flex";
document.getElementById("detail-nama").value = nama;
document.getElementById("detail-nomorhp").value =
nomorhp;
document.getElementById("detail-alamat").value =
alamat;
document.getElementById("detail-kategori").value =
kategori;
document.getElementById("detail-harga").value =
harga;
function kembaliKeModalPertama() {
tutupModal2();
bukaModal();
}
function lakukanPembayaran() {
alert("Pembayaran berhasil!");
tutupModal2();
document.getElementById("recipient-name").value =
"";
document.getElementById("handphone").value = "";
document.getElementById("alamat-text").value = "";
}
9
Lab. Pemrograman Komputer ITN Malang 2024
</script>
</body>
</html>
if (isset($_GET['id'])) {
$categoryId = $_GET['id'];
if ($result) {
$data = mysqli_fetch_assoc($result);
echo json_encode($data);
} else {
echo json_encode(['error' => 'Failed to retrieve category
data.']);
}
} else {
echo json_encode(['error' => 'Category ID not provided.']);
}
?>
B. Pembuatan Report
1. Siapkan Plugin dompdf
Download di link berikut :
https://github.com/dompdf/dompdf/releases/download/v2.0.3/dompdf_2-0-3.zip
2. Ekstrak dan Copy plugin dompdf yang sudah didownload ke dalam folder dari project
catshop anda.
10
Lab. Pemrograman Komputer ITN Malang 2024
3. Buat file baru dengan nama transaction-cetak.php, kemudian tambahkan source code
dibawah ini:
<?php
include('../koneksi.php');
require_once("../dompdf/autoload.inc.php");
use Dompdf\Dompdf;
4. Lakukan cetak data categories, apabila proses report berhasil maka akan menghasilkan
file pdf seperti berikut :
11
Lab. Pemrograman Komputer ITN Malang 2024
C. Tugas Praktikum
1. Buat CRUD pada data selain yang anda buat pada tugas bab sebelumnya.
2. Pada tampilan admin dashboard buat fitur widget, untuk menampilkan jumlah datapada
tabel yang dibuat.
3. Tambahkan fungsi untuk mencetak data dalam bentuk pdf pada salah satu data yang anda
Kelola di dashboard admin sesuai tema masing masing.
4. Silahkan download composer dan install pada laptop / komputer masing masing
https://getcomposer.org/download/
https://www.malasngoding.com/cara-install-composer/
5. Bukti install composer di masukkan ke tugas CRUD bagian2
12
Lab. Pemrograman Komputer ITN Malang 2024