Belajar PHP - Hai, berjumpa kembali diblog sederhana ini, kali ini kita akan membuat kode barang otomatis berdasarkan jenis barang yang dipilih.
Semisalkan terdapat kode jenis "MKN" dan kemudian kita melakukan penambahan data barang dengan kode jenis tersebut maka akan menghasilkan output "MKN0001".
Dan jika terdapat barang dengan jenis yang sama, maka nomor pada kode akan bertambah satu (+1) menjadi "MKN0002", "MKN0003", dst.
Langsung saja kita buat file-filenya.
Database
Pertama kita buat dulu databasenya, ikuti langkah-langkah berikut:
- Buka phpmyadmin
- Pilih menu SQL
- Lalu pastekan seluruh kode dibawah ini
--
-- Database: `penjualan`
--
CREATE DATABASE `penjualan`;
USE `penjualan`;
-- --------------------------------------------------------
--
-- Struktur dari tabel `tb_barang`
--
CREATE TABLE `tb_barang` (
`kd_barang` varchar(20) NOT NULL PRIMARY KEY,
`nm_barang` varchar(30) NOT NULL,
`kd_jenis` varchar(5) NOT NULL
);
--
-- Dumping data untuk tabel `tb_barang`
--
INSERT INTO `tb_barang` (`kd_barang`, `nm_barang`, `kd_jenis`) VALUES
('MKN0001', 'Ayam Geprek', 'MKN'),
('MNM0001', 'Ale-ale', 'MNM'),
('MNM0002', 'Orson', 'MNM');
-- --------------------------------------------------------
--
-- Struktur dari tabel `tb_jenis`
--
CREATE TABLE `tb_jenis` (
`kd_jenis` varchar(5) NOT NULL PRIMARY KEY,
`jenis` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data untuk tabel `tb_jenis`
--
INSERT INTO `tb_jenis` (`kd_jenis`, `jenis`) VALUES
('MKN', 'Makanan'),
('MNM', 'Minuman');
-- --------------------------------------------------------
index.php
File ini digunakan untuk memanggil file yang dibutuhkan, karena kita akan membuatnya sesederhana mungkin.<?php
try {
$conn = new mysqli('localhost', 'root', '', 'penjualan');
} catch (Exception $e) {
echo $e->getMessage();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Membuat Kode Barang Otomatis</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="container">
<h1>Membuat Kode Barang Otomatis</h1>
<div class="nav">
<ul>
<li>
<a href="?p=data-barang">Data Barang</a>
</li>
<li> | </li>
<li>
<a href="?p=jenis">Jenis</a>
</li>
</ul>
</div>
<div class="content">
<?php
if(isset($_GET['p'])) {
if ($_GET['p'] == 'jenis') {
require_once 'jenis.php';
} else {
require_once 'data-barang.php';
}
}
?>
</div>
</div>
</body>
</html>
Output:
jenis.php
<?php
if (isset($_POST['submit'])) {
$kd_jenis = strtoupper($_POST['kd_jenis']);
$jenis = ucwords($_POST['jenis']);
// cek kode jenis
$sql = "SELECT * FROM tb_jenis WHERE kd_jenis = '$kd_jenis' OR jenis = '$jenis'";
$q = $conn->query($sql);
if ($q->num_rows > 0) {
echo "<script>alert('Jenis sudah ada'); window.location.href='?p=jenis';</script>";
} else {
$sql = "INSERT INTO tb_jenis VALUES ('$kd_jenis', '$jenis')";
$q = $conn->query($sql);
if ($q) {
echo "<script>alert('Jenis ditambahkan'); window.location.href='?p=jenis';</script>";
} else {
echo "<script>alert('Jenis gagal ditambahkan'); window.location.href='?p=jenis';</script>";
}
}
}
$sql = "SELECT * FROM tb_jenis";
$q = $conn->query($sql);
?>
<h3>Jenis</h3>
<div class="form-input">
<form method="POST" action="">
<label>Kode Jenis</label>
<input type="text" name="kd_jenis" placeholder="Contoh. MKN" required>
<label>Jenis</label>
<input type="text" name="jenis" placeholder="Contoh. Makanan" required>
<button class="btn-submit" type="submit" name="submit">Simpan</button>
</form>
</div>
<br/>
<table>
<tr>
<th>#</th>
<th>Kode Jenis</th>
<th>Jenis</th>
</tr>
<?php
$no = 1;
while ($row = $q->fetch_assoc()) :
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $row['kd_jenis']; ?></td>
<td><?= $row['jenis']; ?></td>
</tr>
<?php endwhile; ?>
</table>
Penjelasan:
// cek kode jenis
$sql = "SELECT * FROM tb_jenis WHERE kd_jenis = '$kd_jenis' OR jenis = '$jenis'";
$q = $conn->query($sql);
if ($q->num_rows > 0) {
echo "<script>alert('Jenis sudah ada'); window.location.href='?p=jenis';</script>";
} else {
$sql = "INSERT INTO tb_jenis VALUES ('$kd_jenis', '$jenis')";
$q = $conn->query($sql);
if ($q) {
echo "<script>alert('Jenis ditambahkan'); window.location.href='?p=jenis';</script>";
} else {
echo "<script>alert('Jenis gagal ditambahkan'); window.location.href='?p=jenis';</script>";
}
}
Pada baris kode diatas kita melakukan pengecekan kode jenis dan nama jenis yang ada dalam database.
Jika kode jenis atau nama jenis sudah ada maka akan muncul peringatan, sebaliknya apabila kode jenis dan nama jenis belum ada maka akan lanjut disimpan ke database.
Output:
data-barang.php
<?php
if (isset($_POST['submit'])) {
$nm_barang = ucwords($_POST['nm_barang']);
$kd_jenis = $_POST['jenis'];
// cek kode barang
$sql = "SELECT max(right(kd_barang, 4)) AS kode_barang FROM tb_barang WHERE kd_jenis = '$kd_jenis'";
$q = $conn->query($sql);
if ($q->num_rows > 0) {
foreach ($q as $qq) {
$no = ((int)$qq['kode_barang'])+1;
$kd = sprintf("%04s", $no);
}
} else {
$kd = "0001";
}
$kode = $kd_jenis.$kd;
// simpan data
$sql = "INSERT INTO tb_barang VALUES ('$kode', '$nm_barang', '$kd_jenis')";
$q = $conn->query($sql);
if ($q) {
echo "<script>alert('Data barang ditambahkan'; windows.location.href = '?p=data-barang';</script>";
} else {
echo "<script>alert('Data barang gagal ditambahkan'; windows.location.href = '?p=data-barang';</script>";
}
}
?>
<h3>Data Barang</h3>
<div class="form-input">
<form method="POST" action="">
<label>Nama Barang</label>
<input type="text" name="nm_barang">
<label>Jenis</label>
<select name="jenis">
<?php
$query = $conn->query("SELECT * FROM tb_jenis");
while($row = $query->fetch_assoc()) :
?>
<option value="<?= $row['kd_jenis']; ?>"><?= $row['jenis']; ?></option>
<?php endwhile; ?>
</select>
<button type="submit" name="submit">Simpan</button>
</form>
</div>
<br/>
<table>
<tr>
<th>#</th>
<th>Kode Barang</th>
<th>Nama Barang</th>
<th>Jenis</th>
</tr>
<?php
$sql = "SELECT * FROM tb_barang LEFT JOIN tb_jenis ON tb_barang.kd_jenis = tb_jenis.kd_jenis";
$q = $conn->query($sql);
$no = 1;
while ($data = $q->fetch_assoc()) :
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $data['kd_barang']; ?></td>
<td><?= $data['nm_barang']; ?></td>
<td><?= $data['jenis']; ?></td>
</tr>
<?php endwhile; ?>
</table>
Penjelasan:
// cek kode barang
$sql = "SELECT max(right(kd_barang, 4)) AS kode_barang FROM tb_barang WHERE kd_jenis = '$kd_jenis'";
$q = $conn->query($sql);
if ($q->num_rows > 0) {
foreach ($q as $qq) {
$no = ((int)$qq['kode_barang'])+1;
$kd = sprintf("%04s", $no);
}
} else {
$kd = "0001";
}
$kode = $kd_jenis.$kd;
Pada baris kode diatas kita melakukan pengecekan kode barang, jika kita menambahkan kode barang yang kode jenisnya baru, maka nomor pada kode barang "0001" dan menjadi "MKN0001".
Dan jika terdapat kode jenis yang sama maka nomor pada kode barang akan bertambah 1 (+1) menjadi "MKN0002", "MKN0003", dst.
Output:
style.css
body {
font-family: arial;
padding: 0;
margin: 0;
}
.container {
width: 100%;
text-align: center;
}
h1, h3 {
color: #0B8383;
}
ul {
padding-inline-start: unset;
}
ul li {
display: inline-block;
}
ul li a {
color: #000;
text-decoration: none;
}
ul li a:hover {
color: #0B8383;
}
div.form-input {
border: thin solid #999;
min-width: 608px;
max-width: 618px;
padding: 15px;
border-radius: 4px;
margin: 0 auto;
}
input[type="text"] {
width: 200px;
height: 28px;
}
select {
width: 200px;
height: 34px;
}
button {
height: 34px;
cursor: pointer;
}
table {
width: 600px;
margin: 0 auto;
border-collapse: collapse;
}
th, td {
border: thin solid #999;
padding: 6px;
}
0 Komentar