π― Capaian Pembelajaran
Setelah mempelajari materi ini, mahasiswa mampu:
- Memahami konsep basis data relasional.
- Merancang database akademik sederhana.
- Membuat database menggunakan MySQL.
- Membuat relasi antar tabel.
- Mengimplementasikan CRUD (Create, Read, Update, Delete).
- Membuat aplikasi web frontend dan backend.
- Menampilkan data nilai mahasiswa melalui browser.
- Mengintegrasikan database dengan PHP.
π’ BAB 1. PENDAHULUAN
π Apa itu Basis Data?
Basis data (Database) adalah kumpulan data yang tersimpan secara terstruktur sehingga mudah dikelola, dicari, dan diperbarui.
Dalam dunia pendidikan, basis data digunakan untuk:
- Data mahasiswa
- Data dosen
- Data mata kuliah
- Data nilai
- Data absensi
- Data pembayaran
π Studi Kasus
Kita akan membuat sistem sederhana untuk mengelola nilai mahasiswa.
Database terdiri dari 3 tabel:
| No | Nama Tabel | Fungsi |
|---|---|---|
| 1 | Mahasiswa | Menyimpan data mahasiswa |
| 2 | MataKuliah | Menyimpan data mata kuliah |
| 3 | Nilai | Menyimpan nilai mahasiswa |
πΌοΈ Diagram Sistem

π’ BAB 2. ANALISIS KEBUTUHAN
π Kebutuhan Sistem
Admin dapat:
β Menambah mahasiswa
β Mengubah mahasiswa
β Menghapus mahasiswa
β Menambah mata kuliah
β Menginput nilai
β Menampilkan laporan nilai
π Flowchart Sistem

π’ BAB 3. PERANCANGAN DATABASE
π Tabel Mahasiswa
Struktur Tabel
| Field | Type | Keterangan |
|---|---|---|
| npm | VARCHAR(15) | Primary Key |
| nama | VARCHAR(100) | Nama mahasiswa |
| prodi | VARCHAR(50) | Program studi |
Contoh Data
| npm | nama | prodi |
|---|---|---|
| 221001 | Ahmad | Informatika |
| 221002 | Budi | Sistem Informasi |
π Tabel Mata Kuliah
Struktur
| Field | Type |
|---|---|
| kode_mk | VARCHAR(10) |
| nama_mk | VARCHAR(100) |
| sks | INT |
Contoh
| kode_mk | nama_mk | sks |
|---|---|---|
| IF101 | Basis Data | 3 |
| IF102 | Pemrograman Web | 3 |
π Tabel Nilai
Struktur
| Field | Type |
|---|---|
| id_nilai | INT AUTO_INCREMENT |
| npm | VARCHAR(15) |
| kode_mk | VARCHAR(10) |
| nilai | INT |
π’ BAB 4. IMPLEMENTASI MYSQL

π Membuat Database
CREATE DATABASE db_nilai;
π Menggunakan Database
USE db_nilai;
π Membuat Tabel Mahasiswa
CREATE TABLE mahasiswa(
npm VARCHAR(15) PRIMARY KEY,
nama VARCHAR(100),
prodi VARCHAR(50)
);
π Membuat Tabel Mata Kuliah
CREATE TABLE matakuliah(
kode_mk VARCHAR(10) PRIMARY KEY,
nama_mk VARCHAR(100),
sks INT
);
π Membuat Tabel Nilai
CREATE TABLE nilai(
id_nilai INT AUTO_INCREMENT PRIMARY KEY,
npm VARCHAR(15),
kode_mk VARCHAR(10),
nilai INT,
FOREIGN KEY (npm)
REFERENCES mahasiswa(npm),
FOREIGN KEY (kode_mk)
REFERENCES matakuliah(kode_mk)
);
πΌοΈ Ilustrasi Relasi Database

4
π’ BAB 5. MEMASUKKAN DATA
π Data Mahasiswa
INSERT INTO mahasiswa
VALUES
('221001','Ahmad Gunawan','Informatika'),
('221002','Budi Santoso','Sistem Informasi');
π Data Mata Kuliah
INSERT INTO matakuliah
VALUES
('IF101','Basis Data',3),
('IF102','Pemrograman Web',3);
π Data Nilai
INSERT INTO nilai(npm,kode_mk,nilai)
VALUES
('221001','IF101',90),
('221001','IF102',85),
('221002','IF101',88);
π’ BAB 6. MEMBUAT QUERY LAPORAN NILAI
π Menampilkan Semua Nilai
SELECT *
FROM nilai;
π Menampilkan Nilai Lengkap

<?php
include "koneksi.php";
$sql = "
SELECT
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm=m.npm
JOIN matakuliah mk
ON n.kode_mk=mk.kode_mk
";
$data = mysqli_query($conn,$sql);
while($row = mysqli_fetch_assoc($data))
{
echo $row['npm']." - ";
echo $row['nama']." - ";
echo $row['nama_mk']." - ";
echo $row['nilai']."<br>";
}
?>
π Menampilkan Nilai Lengkap dalam bentuk tabel

<?php
include "koneksi.php";
$sql = "
SELECT
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm=m.npm
JOIN matakuliah mk
ON n.kode_mk=mk.kode_mk
";
$data = mysqli_query($conn,$sql);
?>
<!DOCTYPE html>
<html>
<head>
<title>Laporan Nilai Mahasiswa</title>
</head>
<body>
<h2>Laporan Nilai Mahasiswa</h2>
<table border="1" cellpadding="5">
<tr>
<th>NPM</th>
<th>Nama</th>
<th>Mata Kuliah</th>
<th>Nilai</th>
</tr>
<?php
while($row = mysqli_fetch_assoc($data))
{
?>
<tr>
<td><?php echo $row['npm']; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['nama_mk']; ?></td>
<td><?php echo $row['nilai']; ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
π Hasil Query
| NPM | Nama | Mata Kuliah | Nilai |
|---|---|---|---|
| 221001 | Ahmad | Basis Data | 90 |
| 221001 | Ahmad | Pemrograman Web | 85 |
| 221002 | Budi | Basis Data | 88 |
π’ BAB 7. MEMBUAT WEB APPLICATION
π Teknologi yang Digunakan
| Komponen | Teknologi |
|---|---|
| Web Server | Apache |
| Database | MySQL |
| Backend | PHP |
| Frontend | HTML |
| CSS | Bootstrap |
| Editor | VS Code |
| Paket Server | XAMPP |
πΌοΈ Arsitektur Sistem

π’ BAB 8. MEMBUAT KONEKSI DATABASE
π koneksi.php
<?php
$host="localhost";
$user="root";
$pass="";
$db="db_nilai";
$conn=mysqli_connect(
$host,
$user,
$pass,
$db
);
?>
π’ BAB 9. MEMBUAT HALAMAN INPUT MAHASISWA

π form_mahasiswa.php
<form action="simpan_mahasiswa.php"
method="POST">
NPM :
<input type="text"
name="npm">
Nama :
<input type="text"
name="nama">
Prodi :
<input type="text"
name="prodi">
<button type="submit">
Simpan
</button>
</form>
π’ BAB 10. PROSES SIMPAN DATA
π simpan_mahasiswa.php
<?php
include "koneksi.php";
$npm=$_POST['npm'];
$nama=$_POST['nama'];
$prodi=$_POST['prodi'];
mysqli_query(
$conn,
"INSERT INTO mahasiswa
VALUES(
'$npm',
'$nama',
'$prodi'
)"
);
header("Location:data_mahasiswa.php");
?>
π’ BAB 11. MENAMPILKAN DATA MAHASISWA

π data_mahasiswa.php
<?php
include "koneksi.php";
$data=mysqli_query(
$conn,
"SELECT * FROM mahasiswa"
);
?>
<table border="1">
<tr>
<th>NPM</th>
<th>Nama</th>
<th>Prodi</th>
</tr>
<?php
while(
$row=mysqli_fetch_array($data)
){
?>
<tr>
<td><?=$row['npm']?></td>
<td><?=$row['nama']?></td>
<td><?=$row['prodi']?></td>
</tr>
<?php
}
?>
</table>
π’ BAB 12. INPUT NILAI MAHASISWA

π Form Nilai
<form action="simpan_nilai.php"
method="POST">
NPM:
<input type="text"
name="npm">
Kode MK:
<input type="text"
name="kode_mk">
Nilai:
<input type="number"
name="nilai">
<button>
Simpan
</button>
</form>
π’ BAB 13. LAPORAN NILAI
π laporan_nilai.php
SELECT
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm=m.npm
JOIN matakuliah mk
ON n.kode_mk=mk.kode_mk
πΌοΈ Contoh Tampilan Dashboard

4
Cara untuk membuat dashboard Sistem Nilai Mahasiswa seperti gambar diatas, menggunakan:
β PHP
β MySQL
β Bootstrap 5
β HTML + CSS
π Struktur Folder
Misalnya:
db_nilai/
β
βββ index.php
βββ koneksi.php
βββ dashboard.php
β
βββ mahasiswa.php
βββ matakuliah.php
βββ nilai.php
βββ laporan_nilai.php
β
βββ assets/
βββ css/
βββ js/
βββ img/
index.php
<?php
include “koneksi.php”;
// Hitung jumlah mahasiswa
$q_mhs = mysqli_query($conn,”SELECT * FROM mahasiswa”);
$total_mhs = mysqli_num_rows($q_mhs);
// Hitung jumlah mata kuliah
$q_mk = mysqli_query($conn,”SELECT * FROM matakuliah”);
$total_mk = mysqli_num_rows($q_mk);
// Hitung jumlah nilai
$q_nilai = mysqli_query($conn,”SELECT * FROM nilai”);
$total_nilai = mysqli_num_rows($q_nilai);
?>
<!DOCTYPE html>
<html lang=”id”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<title>Dashboard Sistem Nilai Mahasiswa</title>
<link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css” rel=”stylesheet”>
<link href=”https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css” rel=”stylesheet”>
<style>
body{
background:#f4f6f9;
}
.sidebar{
width:250px;
min-height:100vh;
background:#0d1b3e;
}
.sidebar a{
color:white;
text-decoration:none;
display:block;
padding:12px;
border-radius:8px;
margin-bottom:5px;
}
.sidebar a:hover{
background:#1f4fff;
}
.card-menu{
transition:0.3s;
}
.card-menu:hover{
transform:translateY(-5px);
}
</style>
</head>
<body>
<div class=”d-flex”>
<!– SIDEBAR –>
<div class=”sidebar p-3 text-white”>
<h3 class=”text-center”>
<i class=”bi bi-mortarboard-fill”></i><br>
Sistem Nilai
</h3>
<hr>
<a href=”index.php”>
<i class=”bi bi-house-fill”></i>
Dashboard
</a>
<a href=”mahasiswa.php”>
<i class=”bi bi-people-fill”></i>
Data Mahasiswa
</a>
<a href=”matakuliah.php”>
<i class=”bi bi-book-fill”></i>
Data Mata Kuliah
</a>
<a href=”nilai.php”>
<i class=”bi bi-pencil-square”></i>
Input Nilai
</a>
<a href=”laporan_nilai.php”>
<i class=”bi bi-file-earmark-bar-graph-fill”></i>
Laporan Nilai
</a>
</div>
<!– KONTEN –>
<div class=”container-fluid p-4″>
<div class=”bg-white shadow-sm rounded p-3 mb-4″>
<h2>
Dashboard Sistem Nilai Mahasiswa
</h2>
<p class=”text-muted”>
Selamat datang di aplikasi Pemrograman Basis Data
</p>
</div>
<!– STATISTIK –>
<div class=”row”>
<div class=”col-md-4 mb-3″>
<div class=”card shadow border-0″>
<div class=”card-body”>
<h5>
<i class=”bi bi-people-fill text-primary”></i>
Total Mahasiswa
</h5>
<h1>
<?php echo $total_mhs; ?>
</h1>
</div>
</div>
</div>
<div class=”col-md-4 mb-3″>
<div class=”card shadow border-0″>
<div class=”card-body”>
<h5>
<i class=”bi bi-book-fill text-success”></i>
Total Mata Kuliah
</h5>
<h1>
<?php echo $total_mk; ?>
</h1>
</div>
</div>
</div>
<div class=”col-md-4 mb-3″>
<div class=”card shadow border-0″>
<div class=”card-body”>
<h5>
<i class=”bi bi-clipboard-data-fill text-danger”></i>
Total Nilai
</h5>
<h1>
<?php echo $total_nilai; ?>
</h1>
</div>
</div>
</div>
</div>
<!– MENU –>
<div class=”row mt-3″>
<div class=”col-md-3 mb-3″>
<div class=”card card-menu shadow”>
<div class=”card-body text-center”>
<i class=”bi bi-person-plus-fill fs-1 text-primary”></i>
<h5 class=”mt-3″>
Tambah Mahasiswa
</h5>
<a href=”mahasiswa.php”
class=”btn btn-primary”>
Buka
</a>
</div>
</div>
</div>
<div class=”col-md-3 mb-3″>
<div class=”card card-menu shadow”>
<div class=”card-body text-center”>
<i class=”bi bi-book-half fs-1 text-success”></i>
<h5 class=”mt-3″>
Mata Kuliah
</h5>
<a href=”matakuliah.php”
class=”btn btn-success”>
Buka
</a>
</div>
</div>
</div>
<div class=”col-md-3 mb-3″>
<div class=”card card-menu shadow”>
<div class=”card-body text-center”>
<i class=”bi bi-pencil-square fs-1 text-warning”></i>
<h5 class=”mt-3″>
Input Nilai
</h5>
<a href=”nilai.php”
class=”btn btn-warning”>
Buka
</a>
</div>
</div>
</div>
<div class=”col-md-3 mb-3″>
<div class=”card card-menu shadow”>
<div class=”card-body text-center”>
<i class=”bi bi-bar-chart-fill fs-1 text-danger”></i>
<h5 class=”mt-3″>
Laporan Nilai
</h5>
<a href=”laporan_nilai.php”
class=”btn btn-danger”>
Buka
</a>
</div>
</div>
</div>
</div>
<!– DATA NILAI TERBARU –>
<div class=”card shadow mt-4″>
<div class=”card-header bg-primary text-white”>
Data Nilai Mahasiswa
</div>
<div class=”card-body”>
<table class=”table table-bordered table-striped”>
<tr>
<th>NPM</th>
<th>Nama</th>
<th>Mata Kuliah</th>
<th>Nilai</th>
</tr>
<?php
$sql = mysqli_query($conn,”
SELECT
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm=m.npm
JOIN matakuliah mk
ON n.kode_mk=mk.kode_mk
ORDER BY m.npm ASC
“);
while($row=mysqli_fetch_assoc($sql))
{
?>
<tr>
<td>
<?php echo $row[‘npm’]; ?>
</td>
<td>
<?php echo $row[‘nama’]; ?>
</td>
<td>
<?php echo $row[‘nama_mk’]; ?>
</td>
<td>
<?php echo $row[‘nilai’]; ?>
</td>
</tr>
<?php
}
?>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
Setelah file ini dibuat
Buat file berikut agar menu tidak error:
index.php
koneksi.php
mahasiswa.php
matakuliah.php
nilai.php
laporan_nilai.php
dan simpan dalam folder:
C:\xampp\htdocs\db_nilai\
Lalu akses:
http://localhost/db_nilai
buat mahasiswa.php (CRUD lengkap tambah, edit, hapus)
Untuk membuat aplikasi praktikum Pemrograman Basis Data, CRUD Mahasiswa dibuat dengan 4 file berikut:
mahasiswa.php -> tampil data + form tambah
simpan_mahasiswa.php -> proses simpan
edit_mahasiswa.php -> form edit
hapus_mahasiswa.php -> proses hapus
1. mahasiswa.php
File ini berfungsi:
β Menampilkan data mahasiswa
β Menampilkan form tambah mahasiswa
β Menampilkan tombol Edit dan Hapus
<?php
include "koneksi.php";
?>
<!DOCTYPE html>
<html>
<head>
<title>Data Mahasiswa</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Data Mahasiswa</h2>
<a href="index.php" class="btn btn-secondary mb-3">
Kembali Dashboard
</a>
<div class="card mb-4">
<div class="card-header">
Tambah Mahasiswa
</div>
<div class="card-body">
<form method="POST" action="simpan_mahasiswa.php">
<div class="mb-3">
<label>NPM</label>
<input type="text"
name="npm"
class="form-control"
required>
</div>
<div class="mb-3">
<label>Nama</label>
<input type="text"
name="nama"
class="form-control"
required>
</div>
<div class="mb-3">
<label>Prodi</label>
<input type="text"
name="prodi"
class="form-control"
required>
</div>
<button type="submit"
class="btn btn-primary">
Simpan
</button>
</form>
</div>
</div>
<table class="table table-bordered">
<tr>
<th>No</th>
<th>NPM</th>
<th>Nama</th>
<th>Prodi</th>
<th>Aksi</th>
</tr>
<?php
$no=1;
$data=mysqli_query(
$conn,
"SELECT * FROM mahasiswa"
);
while($row=mysqli_fetch_assoc($data))
{
?>
<tr>
<td><?php echo $no++; ?></td>
<td><?php echo $row['npm']; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['prodi']; ?></td>
<td>
<a href="edit_mahasiswa.php?npm=<?php echo $row['npm']; ?>"
class="btn btn-warning btn-sm">
Edit
</a>
<a href="hapus_mahasiswa.php?npm=<?php echo $row['npm']; ?>"
class="btn btn-danger btn-sm"
onclick="return confirm('Yakin hapus data?')">
Hapus
</a>
</td>
</tr>
<?php
}
?>
</table>
</div>
</body>
</html>
2. simpan_mahasiswa.php
<?php
include "koneksi.php";
$npm = $_POST['npm'];
$nama = $_POST['nama'];
$prodi = $_POST['prodi'];
mysqli_query(
$conn,
"
INSERT INTO mahasiswa
VALUES(
'$npm',
'$nama',
'$prodi'
)
"
);
header("Location: mahasiswa.php");
?>
3. edit_mahasiswa.php
<?php
include "koneksi.php";
$npm=$_GET['npm'];
$data=mysqli_query(
$conn,
"SELECT * FROM mahasiswa
WHERE npm='$npm'"
);
$row=mysqli_fetch_assoc($data);
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Mahasiswa</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Edit Mahasiswa</h2>
<form method="POST"
action="update_mahasiswa.php">
<input type="hidden"
name="npm"
value="<?php echo $row['npm']; ?>">
<div class="mb-3">
<label>Nama</label>
<input type="text"
name="nama"
class="form-control"
value="<?php echo $row['nama']; ?>">
</div>
<div class="mb-3">
<label>Prodi</label>
<input type="text"
name="prodi"
class="form-control"
value="<?php echo $row['prodi']; ?>">
</div>
<button type="submit"
class="btn btn-success">
Update
</button>
<a href="mahasiswa.php"
class="btn btn-secondary">
Kembali
</a>
</form>
</div>
</body>
</html>
4. update_mahasiswa.php
<?php
include "koneksi.php";
$npm = $_POST['npm'];
$nama = $_POST['nama'];
$prodi = $_POST['prodi'];
mysqli_query(
$conn,
"
UPDATE mahasiswa
SET
nama='$nama',
prodi='$prodi'
WHERE npm='$npm'
"
);
header("Location: mahasiswa.php");
?>
5. hapus_mahasiswa.php
<?php
include "koneksi.php";
$npm=$_GET['npm'];
mysqli_query(
$conn,
"
DELETE FROM mahasiswa
WHERE npm='$npm'
"
);
header("Location: mahasiswa.php");
?>
Struktur Folder Akhir
db_nilai
β
βββ koneksi.php
βββ index.php
β
βββ mahasiswa.php
βββ simpan_mahasiswa.php
βββ edit_mahasiswa.php
βββ update_mahasiswa.php
βββ hapus_mahasiswa.php
β
βββ matakuliah.php
βββ nilai.php
βββ laporan_nilai.php
1. matakuliah.php
<?php
include "koneksi.php";
?>
<!DOCTYPE html>
<html>
<head>
<title>Data Mata Kuliah</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Data Mata Kuliah</h2>
<a href="index.php" class="btn btn-secondary mb-3">
Kembali Dashboard
</a>
<div class="card mb-4">
<div class="card-header bg-primary text-white">
Tambah Mata Kuliah
</div>
<div class="card-body">
<form method="POST"
action="simpan_matakuliah.php">
<div class="mb-3">
<label>Kode Mata Kuliah</label>
<input type="text"
name="kode_mk"
class="form-control"
required>
</div>
<div class="mb-3">
<label>Nama Mata Kuliah</label>
<input type="text"
name="nama_mk"
class="form-control"
required>
</div>
<div class="mb-3">
<label>SKS</label>
<input type="number"
name="sks"
class="form-control"
required>
</div>
<button type="submit"
class="btn btn-primary">
Simpan
</button>
</form>
</div>
</div>
<table class="table table-bordered table-striped">
<tr>
<th>No</th>
<th>Kode MK</th>
<th>Nama Mata Kuliah</th>
<th>SKS</th>
<th>Aksi</th>
</tr>
<?php
$no=1;
$data=mysqli_query(
$conn,
"SELECT * FROM matakuliah
ORDER BY kode_mk ASC"
);
while($row=mysqli_fetch_assoc($data))
{
?>
<tr>
<td><?php echo $no++; ?></td>
<td><?php echo $row['kode_mk']; ?></td>
<td><?php echo $row['nama_mk']; ?></td>
<td><?php echo $row['sks']; ?></td>
<td>
<a href="edit_matakuliah.php?kode_mk=<?php echo $row['kode_mk']; ?>"
class="btn btn-warning btn-sm">
Edit
</a>
<a href="hapus_matakuliah.php?kode_mk=<?php echo $row['kode_mk']; ?>"
class="btn btn-danger btn-sm"
onclick="return confirm('Yakin hapus data?')">
Hapus
</a>
</td>
</tr>
<?php
}
?>
</table>
</div>
</body>
</html>
2. simpan_matakuliah.php
<?php
include "koneksi.php";
$kode_mk = $_POST['kode_mk'];
$nama_mk = $_POST['nama_mk'];
$sks = $_POST['sks'];
mysqli_query(
$conn,
"
INSERT INTO matakuliah
VALUES(
'$kode_mk',
'$nama_mk',
'$sks'
)
"
);
header("Location: matakuliah.php");
?>
3. edit_matakuliah.php
<?php
include "koneksi.php";
$kode_mk = $_GET['kode_mk'];
$data = mysqli_query(
$conn,
"
SELECT *
FROM matakuliah
WHERE kode_mk='$kode_mk'
"
);
$row = mysqli_fetch_assoc($data);
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Mata Kuliah</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Edit Mata Kuliah</h2>
<form method="POST"
action="update_matakuliah.php">
<input type="hidden"
name="kode_mk"
value="<?php echo $row['kode_mk']; ?>">
<div class="mb-3">
<label>Nama Mata Kuliah</label>
<input type="text"
name="nama_mk"
class="form-control"
value="<?php echo $row['nama_mk']; ?>">
</div>
<div class="mb-3">
<label>SKS</label>
<input type="number"
name="sks"
class="form-control"
value="<?php echo $row['sks']; ?>">
</div>
<button type="submit"
class="btn btn-success">
Update
</button>
<a href="matakuliah.php"
class="btn btn-secondary">
Kembali
</a>
</form>
</div>
</body>
</html>
4. update_matakuliah.php
<?php
include "koneksi.php";
$kode_mk = $_POST['kode_mk'];
$nama_mk = $_POST['nama_mk'];
$sks = $_POST['sks'];
mysqli_query(
$conn,
"
UPDATE matakuliah
SET
nama_mk='$nama_mk',
sks='$sks'
WHERE kode_mk='$kode_mk'
"
);
header("Location: matakuliah.php");
?>
5. hapus_matakuliah.php
<?php
include "koneksi.php";
$kode_mk = $_GET['kode_mk'];
mysqli_query(
$conn,
"
DELETE FROM matakuliah
WHERE kode_mk='$kode_mk'
"
);
header("Location: matakuliah.php");
?>
Struktur Folder Setelah Ditambah CRUD Mata Kuliah
db_nilai
β
βββ koneksi.php
βββ index.php
β
βββ mahasiswa.php
βββ simpan_mahasiswa.php
βββ edit_mahasiswa.php
βββ update_mahasiswa.php
βββ hapus_mahasiswa.php
β
βββ matakuliah.php
βββ simpan_matakuliah.php
βββ edit_matakuliah.php
βββ update_matakuliah.php
βββ hapus_matakuliah.php
β
βββ nilai.php
βββ laporan_nilai.php
Contoh Data yang Bisa Diuji
INSERT INTO matakuliah
(kode_mk,nama_mk,sks)
VALUES
('IF101','Basis Data',3),
('IF102','Pemrograman Web',3),
('IF103','Algoritma dan Pemrograman',4),
('IF104','Jaringan Komputer',3);
Setelah CRUD Mahasiswa dan Mata Kuliah selesai, langkah berikutnya adalah membuat nilai.php yang lebih menarik dengan dropdown Mahasiswa dan Mata Kuliah, sehingga admin tidak perlu mengetik NPM dan Kode MK secara manual dan risiko salah input menjadi lebih kecil.
Karena tabel nilai memiliki relasi ke tabel mahasiswa dan matakuliah, maka sebaiknya nilai.php menggunakan dropdown (combobox) agar admin tidak perlu mengetik NPM dan Kode MK secara manual.
Struktur tabel:
CREATE TABLE nilai(
id_nilai INT AUTO_INCREMENT PRIMARY KEY,
npm VARCHAR(15),
kode_mk VARCHAR(10),
nilai INT,
FOREIGN KEY (npm)
REFERENCES mahasiswa(npm),
FOREIGN KEY (kode_mk)
REFERENCES matakuliah(kode_mk)
);
1. nilai.php
<?php
include "koneksi.php";
?>
<!DOCTYPE html>
<html>
<head>
<title>Input Nilai Mahasiswa</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Input Nilai Mahasiswa</h2>
<a href="index.php"
class="btn btn-secondary mb-3">
Kembali Dashboard
</a>
<div class="card mb-4">
<div class="card-header bg-primary text-white">
Input Nilai
</div>
<div class="card-body">
<form method="POST"
action="simpan_nilai.php">
<div class="mb-3">
<label>Mahasiswa</label>
<select name="npm"
class="form-control"
required>
<option value="">
Pilih Mahasiswa
</option>
<?php
$mhs=mysqli_query(
$conn,
"SELECT * FROM mahasiswa"
);
while($m=mysqli_fetch_assoc($mhs))
{
?>
<option value="<?php echo $m['npm']; ?>">
<?php
echo $m['npm']." - ".$m['nama'];
?>
</option>
<?php
}
?>
</select>
</div>
<div class="mb-3">
<label>Mata Kuliah</label>
<select name="kode_mk"
class="form-control"
required>
<option value="">
Pilih Mata Kuliah
</option>
<?php
$mk=mysqli_query(
$conn,
"SELECT * FROM matakuliah"
);
while($k=mysqli_fetch_assoc($mk))
{
?>
<option value="<?php echo $k['kode_mk']; ?>">
<?php
echo $k['kode_mk']." - ".$k['nama_mk'];
?>
</option>
<?php
}
?>
</select>
</div>
<div class="mb-3">
<label>Nilai</label>
<input type="number"
name="nilai"
class="form-control"
required>
</div>
<button type="submit"
class="btn btn-primary">
Simpan Nilai
</button>
</form>
</div>
</div>
<table class="table table-bordered table-striped">
<tr>
<th>No</th>
<th>NPM</th>
<th>Nama</th>
<th>Mata Kuliah</th>
<th>Nilai</th>
<th>Aksi</th>
</tr>
<?php
$no=1;
$data=mysqli_query(
$conn,
"
SELECT
n.id_nilai,
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm=m.npm
JOIN matakuliah mk
ON n.kode_mk=mk.kode_mk
ORDER BY n.id_nilai DESC
"
);
while($row=mysqli_fetch_assoc($data))
{
?>
<tr>
<td><?php echo $no++; ?></td>
<td><?php echo $row['npm']; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['nama_mk']; ?></td>
<td><?php echo $row['nilai']; ?></td>
<td>
<a href="edit_nilai.php?id=<?php echo $row['id_nilai']; ?>"
class="btn btn-warning btn-sm">
Edit
</a>
<a href="hapus_nilai.php?id=<?php echo $row['id_nilai']; ?>"
class="btn btn-danger btn-sm"
onclick="return confirm('Yakin hapus data?')">
Hapus
</a>
</td>
</tr>
<?php
}
?>
</table>
</div>
</body>
</html>
2. simpan_nilai.php
<?php
include "koneksi.php";
$npm = $_POST['npm'];
$kode_mk = $_POST['kode_mk'];
$nilai = $_POST['nilai'];
mysqli_query(
$conn,
"
INSERT INTO nilai
(npm,kode_mk,nilai)
VALUES
(
'$npm',
'$kode_mk',
'$nilai'
)
"
);
header("Location: nilai.php");
?>
3. edit_nilai.php
<?php
include "koneksi.php";
$id=$_GET['id'];
$data=mysqli_query(
$conn,
"
SELECT *
FROM nilai
WHERE id_nilai='$id'
"
);
$row=mysqli_fetch_assoc($data);
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Nilai</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2>Edit Nilai</h2>
<form method="POST"
action="update_nilai.php">
<input type="hidden"
name="id_nilai"
value="<?php echo $row['id_nilai']; ?>">
<div class="mb-3">
<label>Nilai</label>
<input type="number"
name="nilai"
class="form-control"
value="<?php echo $row['nilai']; ?>">
</div>
<button type="submit"
class="btn btn-success">
Update
</button>
</form>
</div>
</body>
</html>
4. update_nilai.php
<?php
include "koneksi.php";
$id = $_POST['id_nilai'];
$nilai = $_POST['nilai'];
mysqli_query(
$conn,
"
UPDATE nilai
SET nilai='$nilai'
WHERE id_nilai='$id'
"
);
header("Location: nilai.php");
?>
5. hapus_nilai.php
<?php
include "koneksi.php";
$id=$_GET['id'];
mysqli_query(
$conn,
"
DELETE FROM nilai
WHERE id_nilai='$id'
"
);
header("Location: nilai.php");
?>
Struktur Folder Lengkap
db_nilai
β
βββ koneksi.php
βββ index.php
β
βββ mahasiswa.php
βββ simpan_mahasiswa.php
βββ edit_mahasiswa.php
βββ update_mahasiswa.php
βββ hapus_mahasiswa.php
β
βββ matakuliah.php
βββ simpan_matakuliah.php
βββ edit_matakuliah.php
βββ update_matakuliah.php
βββ hapus_matakuliah.php
β
βββ nilai.php
βββ simpan_nilai.php
βββ edit_nilai.php
βββ update_nilai.php
βββ hapus_nilai.php
β
βββ laporan_nilai.php
Langkah terakhir adalah membuat laporan_nilai.php yang menampilkan hasil JOIN 3 tabel dalam format laporan yang rapi dan siap dicetak. Itu biasanya menjadi bagian paling penting pada praktikum mata kuliah Pemrograman Basis Data karena menunjukkan penggunaan relasi antar tabel dan perintah JOIN.
Karena Anda sudah membuat:
mahasiswa.phpmatakuliah.phpnilai.php
maka file laporan_nilai.php berfungsi untuk menampilkan hasil JOIN 3 tabel:
- mahasiswa
- matakuliah
- nilai
sehingga menjadi laporan yang mudah dibaca.
laporan_nilai.php
<?php
include "koneksi.php";
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laporan Nilai Mahasiswa</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body{
background:#f5f6fa;
}
.judul{
background:#0d6efd;
color:white;
padding:15px;
border-radius:10px;
margin-bottom:20px;
}
</style>
</head>
<body>
<div class="container mt-4">
<div class="judul">
<h2>Laporan Nilai Mahasiswa</h2>
<p>
Hasil Relasi Tabel Mahasiswa, Mata Kuliah dan Nilai
</p>
</div>
<a href="index.php"
class="btn btn-secondary mb-3">
Kembali Dashboard
</a>
<button onclick="window.print()"
class="btn btn-success mb-3">
Cetak Laporan
</button>
<div class="card shadow">
<div class="card-body">
<table class="table table-bordered table-striped">
<thead class="table-primary">
<tr>
<th>No</th>
<th>NPM</th>
<th>Nama Mahasiswa</th>
<th>Mata Kuliah</th>
<th>Nilai</th>
</tr>
</thead>
<tbody>
<?php
$no=1;
$sql=mysqli_query(
$conn,
"
SELECT
m.npm,
m.nama,
mk.nama_mk,
n.nilai
FROM nilai n
JOIN mahasiswa m
ON n.npm = m.npm
JOIN matakuliah mk
ON n.kode_mk = mk.kode_mk
ORDER BY m.nama ASC
"
);
while($row=mysqli_fetch_assoc($sql))
{
?>
<tr>
<td>
<?php echo $no++; ?>
</td>
<td>
<?php echo $row['npm']; ?>
</td>
<td>
<?php echo $row['nama']; ?>
</td>
<td>
<?php echo $row['nama_mk']; ?>
</td>
<td>
<?php echo $row['nilai']; ?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>