Dokumen ini berisi program dari nol, lengkap dengan desain database, SQL, dan source code PHP untuk:
- Admin (akses semua data)
- Marketing (login sendiri, melihat customer & komisi 10%)
- Customer (login sendiri, melihat tagihan internet)
1. TEKNOLOGI
- PHP 8+
- MySQL / MariaDB
- HTML + Bootstrap
- Session Login
2. DESAIN DATABASE
2.1 Database
CREATE DATABASE si_internet;
USE si_internet;
2.2 Tabel Users (Admin, Marketing, Customer)
CREATETABLE users (
id INT AUTO_INCREMENT PRIMARYKEY,
nama VARCHAR(100),
username VARCHAR(50),
password VARCHAR(255),
role ENUM(‘admin’,’marketing’,’customer’)
);
2.3 Tabel Marketing
CREATETABLE marketing (
id INT AUTO_INCREMENT PRIMARYKEY,
user_id INT,
FOREIGNKEY (user_id) REFERENCES users(id)
);
2.4 Tabel Paket Internet
CREATETABLE paket (
id INT AUTO_INCREMENT PRIMARYKEY,
nama_paket VARCHAR(100),
harga INT
);
2.5 Tabel Customer Internet
CREATETABLE customer (
id INT AUTO_INCREMENT PRIMARYKEY,
user_id INT,
marketing_id INT,
paket_id INT,
alamat TEXT,
FOREIGNKEY (user_id) REFERENCES users(id),
FOREIGNKEY (marketing_id) REFERENCES marketing(id),
FOREIGNKEY (paket_id) REFERENCES paket(id)
);
2.6 Tabel Tagihan Bulanan
CREATETABLE tagihan (
id INT AUTO_INCREMENT PRIMARYKEY,
customer_id INT,
bulan VARCHAR(20),
total INT,
status ENUM(‘Belum Bayar’,’Lunas’),
FOREIGNKEY (customer_id) REFERENCES customer(id)
);
3. STRUKTUR FOLDER
/si_internet
|– config.php
|– login.php
|– logout.php
|– admin/
| |– dashboard.php
|– marketing/
| |– dashboard.php
|– customer/
| |– dashboard.php
4. KONEKSI DATABASE (config.php)
<?php
$conn = mysqli_connect(“localhost”,”root”,””,”si_internet”);
if(!$conn){
die(“Koneksi gagal”);
}
session_start();
?>
5. LOGIN (login.php)
<?php
include’config.php’;
if(isset($_POST[‘login’])){
$u = $_POST[‘username’];
$p = md5($_POST[‘password’]);
$q = mysqli_query($conn,”SELECT * FROM users WHERE username=’$u’ AND password=’$p'”);
$d = mysqli_fetch_assoc($q);
if($d){
$_SESSION[‘login’]=true;
$_SESSION[‘role’]=$d[‘role’];
$_SESSION[‘id’]=$d[‘id’];
if($d[‘role’]==’admin’) header(“location:admin/dashboard.php”);
if($d[‘role’]==’marketing’) header(“location:marketing/dashboard.php”);
if($d[‘role’]==’customer’) header(“location:customer/dashboard.php”);
}
}
?>
<formmethod=”post”>
<inputname=”username”placeholder=”Username”><br>
<inputtype=”password”name=”password”placeholder=”Password”><br>
<buttonname=”login”>Login</button>
</form>
6. DASHBOARD ADMIN (admin/dashboard.php)
<?phpinclude’../config.php’; ?>
<h3>Dashboard Admin</h3>
<p>Admin dapat melihat semua data customer, marketing, paket, dan tagihan</p>
7. DASHBOARD MARKETING + KOMISI 10%
marketing/dashboard.php
<?phpinclude’../config.php’;
$idUser = $_SESSION[‘id’];
$mk = mysqli_fetch_assoc(mysqli_query($conn,
“SELECT * FROM marketing WHERE user_id=’$idUser'”));
$marketing_id = $mk[‘id’];
$q = mysqli_query($conn,
“SELECT customer.id, users.nama, paket.harga
FROM customer
JOIN users ON customer.user_id=users.id
JOIN paket ON customer.paket_id=paket.id
WHERE marketing_id=’$marketing_id'”);
$total = 0;
while($d=mysqli_fetch_assoc($q)){
$total += $d[‘harga’];
}
$komisi = $total * 0.10;
?>
<h3>Dashboard Marketing</h3>
<p>Total Penjualan: Rp <?=number_format($total) ?></p>
<p>Komisi 10%: Rp <?=number_format($komisi) ?></p>
8. DASHBOARD CUSTOMER (customer/dashboard.php)
<?phpinclude’../config.php’;
$idUser = $_SESSION[‘id’];
$cust = mysqli_fetch_assoc(mysqli_query($conn,
“SELECT customer.id FROM customer WHERE user_id=’$idUser'”));
$q = mysqli_query($conn,
“SELECT * FROM tagihan WHERE customer_id='{$cust[‘id’]}'”);
?>
<h3>Tagihan Internet</h3>
<tableborder=”1″>
<tr><th>Bulan</th><th>Total</th><th>Status</th></tr>
<?phpwhile($d=mysqli_fetch_assoc($q)){ ?>
<tr>
<td><?=$d[‘bulan’] ?></td>
<td><?=number_format($d[‘total’]) ?></td>
<td><?=$d[‘status’] ?></td>
</tr>
<?php } ?>
</table>
9. LOGOUT (logout.php)
<?php
session_start();
session_destroy();
header(“location:login.php”);
?>
10. CATATAN PENGEMBANGAN
- Password sebaiknya pakai
password_hash() - Bisa ditambah fitur pembayaran online
- Bisa ditambah laporan bulanan otomatis