Pembuatan Database Nilai Mahasiswa (3 Tabel) Menjadi Aplikasi Web Lengkap (Frontend dan Backend)

🎯 Capaian Pembelajaran

Setelah mempelajari materi ini, mahasiswa mampu:

  1. Memahami konsep basis data relasional.
  2. Merancang database akademik sederhana.
  3. Membuat database menggunakan MySQL.
  4. Membuat relasi antar tabel.
  5. Mengimplementasikan CRUD (Create, Read, Update, Delete).
  6. Membuat aplikasi web frontend dan backend.
  7. Menampilkan data nilai mahasiswa melalui browser.
  8. 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:

NoNama TabelFungsi
1MahasiswaMenyimpan data mahasiswa
2MataKuliahMenyimpan data mata kuliah
3NilaiMenyimpan 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

FieldTypeKeterangan
npmVARCHAR(15)Primary Key
namaVARCHAR(100)Nama mahasiswa
prodiVARCHAR(50)Program studi

Contoh Data

npmnamaprodi
221001AhmadInformatika
221002BudiSistem Informasi

πŸ“Œ Tabel Mata Kuliah

Struktur

FieldType
kode_mkVARCHAR(10)
nama_mkVARCHAR(100)
sksINT

Contoh

kode_mknama_mksks
IF101Basis Data3
IF102Pemrograman Web3

πŸ“Œ Tabel Nilai

Struktur

FieldType
id_nilaiINT AUTO_INCREMENT
npmVARCHAR(15)
kode_mkVARCHAR(10)
nilaiINT

🟒 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

NPMNamaMata KuliahNilai
221001AhmadBasis Data90
221001AhmadPemrograman Web85
221002BudiBasis Data88

🟒 BAB 7. MEMBUAT WEB APPLICATION

πŸ“Œ Teknologi yang Digunakan

KomponenTeknologi
Web ServerApache
DatabaseMySQL
BackendPHP
FrontendHTML
CSSBootstrap
EditorVS Code
Paket ServerXAMPP

πŸ–ΌοΈ 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.php
  • matakuliah.php
  • nilai.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>