Sunday, October 26, 2025

Pertemuan 9 | Form pendaftaran php

 

Naufal Daffa Alfa Zain

5025241066

Pemrograman Web - B

 

Pada pertemuan kali ini saya diminta untuk membuat form pendaftaran siswa menggunakan bahasa pemrograman PHP dan database MySQL.
Tujuannya adalah agar data siswa yang diinput dari form web dapat disimpan, ditampilkan, diedit, dan dihapus melalui koneksi database mysqli. Di sini saya menggunakan  Apache, MariaDB (MySQL server), dan PHP untuk menyimpan database. 

untuk setupnya:

sudo mysql

CREATE DATABASE pendaftaran_siswa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'pert9'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON pendaftaran_siswa.* TO 'pert9'@'localhost';
FLUSH PRIVILEGES;

USE pendaftaran_siswa;

CREATE TABLE calon_siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
alamat TEXT,
jenis_kelamin ENUM('laki-laki','perempuan') NOT NULL,
agama VARCHAR(30),
sekolah_asal VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

exit

 Kemudian tinggal dijalankan phpnya di localhost. Dan seperti ini tampilannya





 

Dan untuk source codenya, dapat dilihat dibawah sini

Config.php

<?php

$server = "localhost";
$user = "pert9";
$password = "password";
$db_name = "pendaftaran_siswa";

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

if(!$db){
die("Error connecting to databse :" . mysqli_connect_error());
}
?>

 form-daftar.php

<!DOCTYPE html>
<html>
<head>
<title>Formulir Pendaftaran Siswa Baru | SMAN 5 Surabaya</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>

 form-edit.php

<?php

include("config.php");

if( !isset($_GET['id']) ){
header('Location: list-siswa.php');
}

$id = $_GET['id'];

$sql = "SELECT * FROM calon_siswa WHERE id=$id";
$query = mysqli_query($db, $sql);
$siswa = mysqli_fetch_assoc($query);

if( mysqli_num_rows($query) < 1 ){
die("data tidak ditemukan...");
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Formulir Edit Siswa | SMAN 5 Surabaya</title>
</head>

<body>
<header>
<h3>Formulir Edit Siswa</h3>
</header>

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

<fieldset>

<input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />

<p>
<label for="nama">Nama: </label>
<input type="text" name="nama" placeholder="nama lengkap" value="<?php echo $siswa['nama'] ?>" />
</p>
<p>
<label for="alamat">Alamat: </label>
<textarea name="alamat"><?php echo $siswa['alamat'] ?></textarea>
</p>
<p>
<label for="jenis_kelamin">Jenis Kelamin: </label>
<?php $jk = $siswa['jenis_kelamin']; ?>
<label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>
<label><input type="radio" name="jenis_kelamin" value="perempuan" <?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>
</p>
<p>
<label for="agama">Agama: </label>
<?php $agama = $siswa['agama']; ?>
<select name="agama">
<option <?php echo ($agama == 'Islam') ? "selected": "" ?>>Islam</option>
<option <?php echo ($agama == 'Kristen') ? "selected": "" ?>>Kristen</option>
<option <?php echo ($agama == 'Hindu') ? "selected": "" ?>>Hindu</option>
<option <?php echo ($agama == 'Budha') ? "selected": "" ?>>Budha</option>
<option <?php echo ($agama == 'Atheis') ? "selected": "" ?>>Atheis</option>
</select>
</p>
<p>
<label for="sekolah_asal">Sekolah Asal: </label>
<input type="text" name="sekolah_asal" placeholder="nama sekolah" value="<?php echo $siswa['sekolah_asal'] ?>" />
</p>
<p>
<input type="submit" value="Simpan" name="simpan" />
</p>

</fieldset>


</form>

</body>
</html>

 hapus.php

<?php

include("config.php");

if( isset($_GET['id']) ){
$id = $_GET['id'];
$sql = "DELETE FROM calon_siswa WHERE id=$id";
$query = mysqli_query($db, $sql);
if( $query ){
header('Location: list-siswa.php');
} else {
die("gagal menghapus...");
}

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

?>

 index.php

<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMAN 5 Surabaya</title>
</head>

<body>
<header>
<h3>Pendaftaran Siswa Baru</h3>
<h1>SMAN 5 Surabaya</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>

<?php if(isset($_GET['status'])): ?>
<p>
<?php
if($_GET['status'] == 'sukses'){
echo "Pendaftaran siswa baru berhasil!";
} else {
echo "Pendaftaran gagal!";
}
?>
</p>
<?php endif; ?>


</body>
</html>

 list-siswa.php

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

<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMAN 5 Surabaya</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>

 proses-edit.php

<?php

include("config.php");
if(isset($_POST['simpan'])){
$id = $_POST['id'];
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$jk = $_POST['jenis_kelamin'];
$agama = $_POST['agama'];
$sekolah = $_POST['sekolah_asal'];

$sql = "UPDATE calon_siswa SET nama='$nama', alamat='$alamat', jenis_kelamin='$jk', agama='$agama', sekolah_asal='$sekolah' WHERE id=$id";
$query = mysqli_query($db, $sql);

if( $query ) {
header('Location: list-siswa.php');
} else{
die("Gagal menyimpan perubahan");
}

} else {
die("Not Permitted");
}

?>

 proses-pendaftaran.php

<?php

include("config.php");

if(isset($_POST['daftar'])){

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

if( $query ) {
header('Location: index.php?status=sukses');
} else {
header('Location: index.php?status=gagal');
}

} else {
die("Not permitted");
}

?>

 

 

 

Monday, October 13, 2025

Evaluasi Tengah Semester | PBO

 Naufal Daffa Alfa Zain

5025241066

PBO A


Sistem Vending Coffee Machine adalah aplikasi yang mensimulasikan mesin penjual otomatis untuk minuman kopi. Pengguna dapat memilih jenis kopi, ukuran gelas, menambahkan gula atau susu, melakukan pembayaran, dan menerima kopi yang telah disiapkan oleh mesin.

Sistem ini mengelola stok bahan (kopi, gula, susu, air), memproses pembayaran, serta memberikan laporan transaksi dan status mesin.

Alur kerja Vending Coffee Machine
  • Mesin aktif → menampilkan menu pilihan kopi.
  • Pengguna memilih jenis dan ukuran kopi.
  • Pengguna menambah gula/susu (opsional).
  • Mesin menampilkan total harga.
  • Pengguna melakukan pembayaran.
  • Mesin memverifikasi pembayaran → jika cukup → membuat kopi.
  • Kopi disajikan → sistem mengurangi stok.
  • Transaksi disimpan ke log.
  • Jika stok habis → admin diingatkan untuk refill

Ketentuan
    
1. Tentukan fitur yang ada pada mesin
  • Tampilkan menu
  • Pemilihan jenis kopi (5 jenis)
  • Pemilihan size cup (3 cup)
  • Verifikasi pembayaran
  • Melihat stock Ingredient
  • Mengurangi stock Ingredient
  • Menyimpan transaksi ke log
  • Menambah stock Ingredient
2. Gambarkan rancangan kelas dan rancangan objek vending coffee machine



        Class Main
        Tanggung Jawab: 
                Menginisialisasi dan menjalankan mesin kopi  

        Class CoffeeMachine
        Atribut:
                SUGAR_SHOT_GRAMS: int (5) - jumlah gram per shot gula
                MILK_SHOT_ML: int (30) - jumlah ml per shot susu
                LOW_STOCK_THRESHOLD: int (50) - batas peringatan stok rendah
                scanner: Scanner - untuk membaca input pengguna
                stock: Ingredient.Stock - manajemen stok bahan
                transactions: List<Transaction> - daftar transaksi yang sudah dilakukan
                active: boolean - status mesin (hidup/mati)

        Class Coffee
        Atribut:
                displayName: String - nama tampilan kopi
                basePrice: int - harga dasar kopi
                recipe: Ingredient.Usage - resep bahan yang dibutuhkan
                displayName: String - nama ukuran (Small/Medium/Large)
                priceMultiplier: double - pengali harga (1.0, 1.15, 1.3)

        Class Ingredient
        Atribut:
                coffeeGram: int - jumlah bubuk kopi (gram)
                sugarGram: int - jumlah gula (gram)
                milkMl: int - jumlah susu (ml)
                waterMl: int - jumlah air (ml)
                cups: int - jumlah gelas

         Class Transaction
         Atribut:
                DateTimeFormatter - format tanggal/waktu untuk tampilan
                time: LocalDateTime - waktu transaksi

3. Output simulasi




4. Implementasikan dalam bentuk aplikasi simulasi vending coffe machine 


5.Buatlah Video Presentasi yang menjelaskan pekerjaanmu kemudian upload di Youtube
    
    Youtube

6.Buat Dokumentasi pengerjaan di blog, kemudian isi google form  Link Pengumpulan ETS

     blogspot



















Pertemuan 13 | Abstract Class

 Nama     : Naufal Daffa Alfa Zain  Nrp         : 5025241066  Kelas      : Pemrograman Web A2 Pada pertemuan ke‑13 kami mendapat dua tugas. ...