internet provider

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

Leave a Reply

Your email address will not be published. Required fields are marked *