Compare commits

...

18 Commits

Author SHA1 Message Date
Nama Kamu 303bec2bd8 perubahan docker 2026-06-13 11:30:40 +07:00
Nama Kamu f6ce7e2c8b perbaikan keseluruhan bug 2026-06-13 08:08:49 +07:00
Nama Kamu 929e06eddc perbaikan struktur compose 2026-06-12 13:25:38 +07:00
Nama Kamu e60ef1a87c perbaikan database 2026-06-12 09:25:07 +07:00
Nama Kamu 55ac22393c perbaikan port di docker compose 2026-06-11 19:00:06 +07:00
Nama Kamu 0b44e6bd26 Optimize docker-compose.yml for production readiness 2026-06-11 18:59:03 +07:00
Nama Kamu 3824c20368 Fix phpMyAdmin import errors: add backticks to DROP TABLE user and normalize line endings 2026-06-11 18:55:13 +07:00
Nama Kamu 2ab88784df Revert fallback to localhost for XAMPP compatibility and remove SELECT from init.sql 2026-06-11 18:51:21 +07:00
Nama Kamu 9a66562dc7 Update PHP connection files and tables for merged uas_06 database 2026-06-11 18:43:35 +07:00
Nama Kamu 4c1f601647 Consolidate all database into single uas_06 database and cleanup redundant SQL files 2026-06-11 18:43:08 +07:00
Nama Kamu 50ecebf36c Fix database connection overrides to ensure correct databases are selected 2026-06-11 16:23:48 +07:00
Nama Kamu 5f64a732d9 Fix database connection fallback host for Docker Compose 2026-06-11 16:13:22 +07:00
Nama Kamu d94a42bb6b Handle missing table error gracefully in auth.php 2026-06-11 15:59:27 +07:00
Nama Kamu 454d2c12c0 fix depends on di docker compose 2026-06-11 15:34:19 +07:00
Nama Kamu 09c4091af9 fix port di docker compose 2026-06-11 15:29:26 +07:00
Nama Kamu 5ca984602e Migrate to docker-compose for auto database initialization 2026-06-11 15:20:22 +07:00
Nama Kamu 07a7dc55e8 Suppress PHP warnings on mysqli_connect to prevent JSON corruption 2026-06-11 15:09:46 +07:00
Nama Kamu 805f152be1 Fix trailing whitespace and JSON parse errors on backend 2026-06-11 15:02:32 +07:00
28 changed files with 308 additions and 288 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
include 'koneksi.php';
$result = $koneksi->query("SELECT * FROM spbu");
$result = $koneksi->query("SELECT * FROM spbu_01");
$data = [];
while($row = $result->fetch_assoc()){
-69
View File
@@ -1,69 +0,0 @@
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Waktu pembuatan: 07 Jun 2026 pada 10.53
-- Versi server: 10.4.32-MariaDB
-- Versi PHP: 8.2.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `db_spbu`
--
-- --------------------------------------------------------
--
-- Struktur dari tabel `spbu`
--
CREATE TABLE `spbu` (
`id` int(11) NOT NULL,
`nama_spbu` varchar(255) DEFAULT NULL,
`lat` double DEFAULT NULL,
`lng` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dumping data untuk tabel `spbu`
--
INSERT INTO `spbu` (`id`, `nama_spbu`, `lat`, `lng`) VALUES
(1, 'spbu kobar', -0.02197187355969219, 109.31207858442205),
(3, 'spbu paris', 0.007368924759898348, 109.37010012983221),
(4, 'spbu tanray', 0.016651739943910275, 109.29988329640928);
--
-- Indexes for dumped tables
--
--
-- Indeks untuk tabel `spbu`
--
ALTER TABLE `spbu`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT untuk tabel yang dibuang
--
--
-- AUTO_INCREMENT untuk tabel `spbu`
--
ALTER TABLE `spbu`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+1 -1
View File
@@ -3,7 +3,7 @@ include 'koneksi.php';
$id = $_POST['id'];
$stmt = $koneksi->prepare("DELETE FROM spbu WHERE id=?");
$stmt = $koneksi->prepare("DELETE FROM spbu_01 WHERE id=?");
$stmt->bind_param("i", $id);
echo $stmt->execute() ? "success" : "error";
+9 -7
View File
@@ -1,14 +1,16 @@
<?php
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: '';
$db = getenv('DB_NAME') ?: 'db_spbu';
$host = getenv('DB_HOST') ?: 'db';
$port = getenv('DB_PORT') ?: 3306;
$user = getenv('DB_USERNAME') ?: 'webgis_user';
$pass = getenv('DB_PASSWORD') ?: 'webgis_password';
$db = getenv('DB_DATABASE') ?: 'webgis_spbu';
$conn = mysqli_connect($host, $user, $pass, $db);
$conn = @mysqli_connect($host, $user, $pass, $db, $port);
if (!$conn) {
die("Koneksi database gagal: " . mysqli_connect_error());
header('Content-Type: application/json');
echo json_encode(["error" => "Database gagal konek"]);
exit;
}
$koneksi = $conn;
?>
+1 -1
View File
@@ -5,7 +5,7 @@ $nama = $_POST['nama'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$stmt = $koneksi->prepare("INSERT INTO spbu (nama_spbu, lat, lng) VALUES (?, ?, ?)");
$stmt = $koneksi->prepare("INSERT INTO spbu_01 (nama_spbu, lat, lng) VALUES (?, ?, ?)");
$stmt->bind_param("sdd", $nama, $lat, $lng);
echo $stmt->execute() ? "success" : "error";
+1 -1
View File
@@ -6,7 +6,7 @@ $nama = $_POST['nama'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$stmt = $koneksi->prepare("UPDATE spbu SET nama_spbu=?, lat=?, lng=? WHERE id=?");
$stmt = $koneksi->prepare("UPDATE spbu_01 SET nama_spbu=?, lat=?, lng=? WHERE id=?");
$stmt->bind_param("sddi", $nama, $lat, $lng, $id);
echo $stmt->execute() ? "success" : "error";
-29
View File
@@ -1,29 +0,0 @@
CREATE DATABASE IF NOT EXISTS 02_kerusakan;
USE 02_kerusakan;
CREATE TABLE jalan(
id INT AUTO_INCREMENT PRIMARY KEY,
nama_jalan VARCHAR(150),
status VARCHAR(50),
panjang DOUBLE,
geom LINESTRING NOT NULL,
SPATIAL INDEX idx_jalan(geom)
);
CREATE TABLE parsil(
id INT AUTO_INCREMENT PRIMARY KEY,
pemilik VARCHAR(100),
status VARCHAR(50),
luas DOUBLE,
geom POLYGON NOT NULL,
SPATIAL INDEX idx_parsil(geom)
);
CREATE TABLE jalan_rusak(
id INT AUTO_INCREMENT PRIMARY KEY,
nama_titik VARCHAR(100),
keterangan TEXT,
geom POINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
SPATIAL INDEX idx_rusak(geom)
);
+6 -11
View File
@@ -1,14 +1,9 @@
<?php
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: '';
$db = getenv('DB_NAME') ?: '02_kerusakan';
$host = getenv('DB_HOST') ?: 'db';
$port = getenv('DB_PORT') ?: 3306;
$user = getenv('DB_USERNAME') ?: 'webgis_user';
$pass = getenv('DB_PASSWORD') ?: 'webgis_password';
$db = getenv('DB_DATABASE') ?: 'webgis_spbu';
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die("Koneksi database gagal: " . mysqli_connect_error());
}
?>
$conn = @mysqli_connect($host, $user, $pass, $db, $port);
+6 -3
View File
@@ -3,11 +3,14 @@ include 'koneksi.php';
$data = [];
$result = $conn->query("SELECT * FROM spbu");
$result = $conn->query("SELECT * FROM spbu_04");
while ($row = $result->fetch_assoc()) {
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
} else {
// If table doesn't exist or other error, return empty array
}
echo json_encode($data);
?>
-23
View File
@@ -1,23 +0,0 @@
-- =============================================
-- DATABASE: db_24jam
-- =============================================
CREATE DATABASE IF NOT EXISTS `db_24jam`
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
USE `db_24jam`;
-- ---------------------------------------------
-- Tabel: spbu
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `spbu` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`nama_spbu` VARCHAR(100) NOT NULL,
`no_wa` VARCHAR(20) NOT NULL,
`status` ENUM('yes','no') NOT NULL DEFAULT 'no',
`latitude` DOUBLE NOT NULL,
`longitude` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+2 -3
View File
@@ -5,11 +5,10 @@ ob_clean();
$id = $conn->real_escape_string($_POST['id'] ?? '');
$query = "DELETE FROM spbu WHERE id='$id'";
$query = "DELETE FROM spbu_04 WHERE id='$id'";
if ($conn->query($query)) {
echo "success";
} else {
echo "error";
echo "error: " . $conn->error;
}
?>
+4 -4
View File
@@ -266,7 +266,7 @@ lng:pos.lng
})
.then(r=>r.text())
.then(res=>{
if(res=="success"){
if(res.trim()=="success"){
alert("Lokasi berhasil diupdate");
location.reload();
}
@@ -348,7 +348,7 @@ body:fd
})
.then(r=>r.text())
.then(res=>{
if(res=="success"){
if(res.trim()=="success"){
alert("Data berhasil disimpan");
location.reload();
}else{
@@ -422,7 +422,7 @@ lng:lng
})
.then(r=>r.text())
.then(res=>{
if(res=="success"){
if(res.trim()=="success"){
alert("Data berhasil diupdate");
location.reload();
}else{
@@ -452,7 +452,7 @@ id:id
})
.then(r=>r.text())
.then(res=>{
if(res=="success"){
if(res.trim()=="success"){
alert("Data berhasil dihapus");
location.reload();
}
+6 -6
View File
@@ -1,12 +1,12 @@
<?php
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: '';
$db = getenv('DB_NAME_04') ?: (getenv('DB_NAME') ?: 'db_24jam');
$host = getenv('DB_HOST') ?: 'db';
$port = getenv('DB_PORT') ?: 3306;
$user = getenv('DB_USERNAME') ?: 'webgis_user';
$pass = getenv('DB_PASSWORD') ?: 'webgis_password';
$db = getenv('DB_DATABASE') ?: 'webgis_spbu';
$conn = mysqli_connect($host, $user, $pass, $db);
$conn = @mysqli_connect($host, $user, $pass, $db, $port);
if (!$conn) {
die("Koneksi database gagal: " . mysqli_connect_error());
}
?>
+3 -4
View File
@@ -9,12 +9,11 @@ $status = $conn->real_escape_string($_POST['status'] ?? '');
$lat = $conn->real_escape_string($_POST['lat'] ?? '');
$lng = $conn->real_escape_string($_POST['lng'] ?? '');
$query = "INSERT INTO spbu (nama_spbu, no_wa, status, latitude, longitude)
VALUES ('$nama','$wa','$status','$lat','$lng')";
$query = "INSERT INTO spbu_04 (nama_spbu, no_wa, status, latitude, longitude)
VALUES ('$nama', '$wa', '$status', $lat, $lng)";
if ($conn->query($query)) {
echo "success";
} else {
echo "error";
echo "error: " . $conn->error;
}
?>
+2 -3
View File
@@ -10,7 +10,7 @@ $status = $conn->real_escape_string($_POST['status'] ?? '');
$lat = $conn->real_escape_string($_POST['lat'] ?? '');
$lng = $conn->real_escape_string($_POST['lng'] ?? '');
$query = "UPDATE spbu SET
$query = "UPDATE spbu_04 SET
nama_spbu='$nama',
no_wa='$wa',
status='$status',
@@ -21,6 +21,5 @@ $query = "UPDATE spbu SET
if ($conn->query($query)) {
echo "success";
} else {
echo "error";
echo "error: " . $conn->error;
}
?>
+4 -1
View File
@@ -12,7 +12,10 @@ if ($aksi === 'login') {
$email = trim($_POST['email'] ?? '');
$password = $_POST['password'] ?? '';
if (!$email || !$password) json_out(['error'=>'Email dan password wajib diisi'],400);
$stmt = $conn->prepare("SELECT u.*,r.nama AS role_nama FROM user u JOIN role r ON u.role_id=r.id WHERE u.email=? AND u.aktif=1 LIMIT 1");
$stmt = $conn->prepare("SELECT u.*,r.nama AS role_nama FROM `user` u JOIN `role` r ON u.role_id=r.id WHERE u.email=? AND u.aktif=1 LIMIT 1");
if (!$stmt) {
json_out(['error' => 'Database error: ' . $conn->error], 500);
}
$stmt->bind_param('s',$email);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
+1 -1
View File
@@ -52,7 +52,7 @@ if ($aksi === 'histori') {
FROM histori_bantuan hb
JOIN bantuan b ON hb.bantuan_id=b.id
JOIN penduduk p ON hb.penduduk_id=p.id
LEFT JOIN user u ON hb.disalurkan_oleh=u.id
LEFT JOIN `user` u ON hb.disalurkan_oleh=u.id
WHERE $w ORDER BY hb.tanggal DESC,hb.id DESC";
if($params){$stmt=$conn->prepare($sql);$stmt->bind_param($types,...$params);$stmt->execute();$res=$stmt->get_result();$stmt->close();}
else $res=$conn->query($sql);
+3 -3
View File
@@ -11,7 +11,7 @@ if ($aksi === 'inbox') {
if(!$uid) json_out([]);
$sql="SELECT p.*,u.nama AS nama_pengirim
FROM pesan p
JOIN user u ON p.dari_user=u.id
JOIN `user` u ON p.dari_user=u.id
WHERE (p.ke_user=$uid OR p.ke_user IS NULL)
ORDER BY p.created_at DESC LIMIT 80";
$res=$conn->query($sql); $rows=[];
@@ -23,7 +23,7 @@ if ($aksi === 'inbox') {
if ($aksi === 'history') {
$ke=(int)($_GET['ke']??0);
$res=$conn->query("SELECT p.*,u.nama AS nama_pengirim FROM pesan p JOIN user u ON p.dari_user=u.id WHERE (p.dari_user=$uid AND p.ke_user=$ke) OR (p.dari_user=$ke AND p.ke_user=$uid) ORDER BY p.created_at ASC LIMIT 100");
$res=$conn->query("SELECT p.*,u.nama AS nama_pengirim FROM pesan p JOIN `user` u ON p.dari_user=u.id WHERE (p.dari_user=$uid AND p.ke_user=$ke) OR (p.dari_user=$ke AND p.ke_user=$uid) ORDER BY p.created_at ASC LIMIT 100");
$rows=[]; if($res) while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
@@ -39,7 +39,7 @@ if ($aksi === 'kirim') {
}
if ($aksi === 'kontak') {
$res=$conn->query("SELECT u.id,u.nama,r.nama AS role FROM user u JOIN role r ON u.role_id=r.id WHERE u.aktif=1".($uid?" AND u.id!=$uid":'')." ORDER BY u.nama");
$res=$conn->query("SELECT u.id,u.nama,r.nama AS role FROM `user` u JOIN `role` r ON u.role_id=r.id WHERE u.aktif=1".($uid?" AND u.id!=$uid":'')." ORDER BY u.nama");
$rows=[]; if($res) while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
+1 -1
View File
@@ -32,7 +32,7 @@ $prioritas=[]; $res=$conn->query("SELECT p.id,p.nik,p.nama,p.status_ekonomi,TIME
if($res) while($r=$res->fetch_assoc()) $prioritas[]=$r;
// aktivitas
$aktivitas=[]; $res=$conn->query("SELECT la.*,u.nama AS nama_user FROM log_aktivitas la LEFT JOIN user u ON la.user_id=u.id ORDER BY la.created_at DESC LIMIT 15");
$aktivitas=[]; $res=$conn->query("SELECT la.*,u.nama AS nama_user FROM log_aktivitas la LEFT JOIN `user` u ON la.user_id=u.id ORDER BY la.created_at DESC LIMIT 15");
if($res) while($r=$res->fetch_assoc()) $aktivitas[]=$r;
json_out([
+6 -5
View File
@@ -2,12 +2,13 @@
// ============================================================
// koneksi.php Database uas_06
// ============================================================
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: '';
$db = getenv('DB_NAME') ?: 'uas_06';
$host = getenv('DB_HOST') ?: 'db';
$port = getenv('DB_PORT') ?: 3306;
$user = getenv('DB_USERNAME') ?: 'webgis_user';
$pass = getenv('DB_PASSWORD') ?: 'webgis_password';
$db = getenv('DB_DATABASE') ?: 'webgis_spbu';
$conn = mysqli_connect($host, $user, $pass, $db);
$conn = @mysqli_connect($host, $user, $pass, $db, $port);
if (!$conn) {
http_response_code(500);
+2 -2
View File
@@ -18,7 +18,7 @@ if ($aksi === 'list') {
$sql="SELECT l.*,p.nama AS nama_penduduk,p.status_ekonomi,p.nik,u.nama AS nama_verifikator
FROM laporan l
LEFT JOIN penduduk p ON l.penduduk_id=p.id
LEFT JOIN user u ON l.diverifikasi_oleh=u.id
LEFT JOIN `user` u ON l.diverifikasi_oleh=u.id
WHERE $w
ORDER BY FIELD(l.urgensi,'darurat','tinggi','sedang','rendah'),l.created_at DESC";
$res=$conn->query($sql);
@@ -29,7 +29,7 @@ if ($aksi === 'list') {
if ($aksi === 'detail') {
$id=(int)($_GET['id']??0);
$res=$conn->query("SELECT l.*,p.nama AS nama_penduduk,u.nama AS nama_verifikator FROM laporan l LEFT JOIN penduduk p ON l.penduduk_id=p.id LEFT JOIN user u ON l.diverifikasi_oleh=u.id WHERE l.id=$id LIMIT 1");
$res=$conn->query("SELECT l.*,p.nama AS nama_penduduk,u.nama AS nama_verifikator FROM laporan l LEFT JOIN penduduk p ON l.penduduk_id=p.id LEFT JOIN `user` u ON l.diverifikasi_oleh=u.id WHERE l.id=$id LIMIT 1");
json_out($res->fetch_assoc()??['error'=>'Tidak ditemukan']);
}
+7 -7
View File
@@ -7,7 +7,7 @@ include 'koneksi.php';
$aksi = $_REQUEST['aksi'] ?? 'list';
if ($aksi === 'list') {
$res=$conn->query("SELECT u.id,u.nama,u.email,u.aktif,u.created_at,r.nama AS role_nama,r.id AS role_id FROM user u JOIN role r ON u.role_id=r.id ORDER BY u.nama");
$res=$conn->query("SELECT u.id,u.nama,u.email,u.aktif,u.created_at,r.nama AS role_nama,r.id AS role_id FROM `user` u JOIN `role` r ON u.role_id=r.id ORDER BY u.nama");
if(!$res) json_out(['error'=>$conn->error],500);
$rows=[]; while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
@@ -18,9 +18,9 @@ if ($aksi === 'simpan') {
$em=$conn->real_escape_string($_POST['email']??'');
$pw=password_hash($_POST['password']??'password',PASSWORD_DEFAULT);
$rid=(int)($_POST['role_id']??1);
$cek=$conn->query("SELECT id FROM user WHERE email='$em'")->num_rows;
$cek=$conn->query("SELECT id FROM `user` WHERE email='$em'")->num_rows;
if($cek>0) json_out(['error'=>'Email sudah digunakan'],400);
$conn->query("INSERT INTO user (nama,email,password,role_id) VALUES ('$nm','$em','$pw',$rid)");
$conn->query("INSERT INTO `user` (nama,email,password,role_id) VALUES ('$nm','$em','$pw',$rid)");
if($conn->error) json_out(['error'=>$conn->error],500);
json_out(['success'=>true,'id'=>$conn->insert_id]);
}
@@ -31,22 +31,22 @@ if ($aksi === 'edit') {
$em=$conn->real_escape_string($_POST['email']??'');
$rid=(int)($_POST['role_id']??1);
$akt=(int)($_POST['aktif']??1);
$conn->query("UPDATE user SET nama='$nm',email='$em',role_id=$rid,aktif=$akt WHERE id=$id");
$conn->query("UPDATE `user` SET nama='$nm',email='$em',role_id=$rid,aktif=$akt WHERE id=$id");
if(!empty($_POST['password'])){
$pw=password_hash($_POST['password'],PASSWORD_DEFAULT);
$conn->query("UPDATE user SET password='$pw' WHERE id=$id");
$conn->query("UPDATE `user` SET password='$pw' WHERE id=$id");
}
json_out(['success'=>true]);
}
if ($aksi === 'hapus') {
$id=(int)($_POST['id']??0);
$conn->query("DELETE FROM user WHERE id=$id");
$conn->query("DELETE FROM `user` WHERE id=$id");
json_out(['success'=>true]);
}
if ($aksi === 'roles') {
$res=$conn->query("SELECT * FROM role"); $rows=[];
$res=$conn->query("SELECT * FROM `role`"); $rows=[];
while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
+3 -9
View File
@@ -1,15 +1,9 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite
WORKDIR /var/www/html
RUN docker-php-ext-install mysqli
COPY . /var/www/html/
RUN mkdir -p /var/www/html/05/uploads/bukti \
&& chown -R www-data:www-data /var/www/html \
&& sed -i 's/\r$//' /var/www/html/start.sh \
&& chmod +x /var/www/html/start.sh
RUN chown -R www-data:www-data /var/www/html
CMD ["/var/www/html/start.sh"]
EXPOSE 80
+2
View File
@@ -0,0 +1,2 @@
FROM mysql:8.4
COPY ./migrations /docker-entrypoint-initdb.d/
+66
View File
@@ -0,0 +1,66 @@
services:
app:
build:
context: .
dockerfile: Dockerfile
expose:
- "80"
volumes:
- app_uploads:/var/www/html/05/uploads
environment:
DB_HOST: db
DB_PORT: 3306
DB_DATABASE: webgis_spbu
DB_USERNAME: webgis_user
DB_PASSWORD: webgis_password
depends_on:
migrate:
condition: service_completed_successfully
restart: unless-stopped
db:
build:
context: .
dockerfile: Dockerfile.db
image: webgis-db
environment:
MYSQL_DATABASE: webgis_spbu
MYSQL_USER: webgis_user
MYSQL_PASSWORD: webgis_password
MYSQL_ROOT_PASSWORD: root_password
expose:
- "3306"
volumes:
- webgis_db_data:/var/lib/mysql
restart: unless-stopped
migrate:
image: mysql:8.4
environment:
MYSQL_PWD: root_password
depends_on:
- db
command: >
sh -c "
until mysqladmin ping -h db -uroot --password=$$MYSQL_PWD --silent 2>/dev/null; do
echo 'Waiting for database...';
sleep 2;
done;
echo 'Database is ready, all internal migrations done.';
"
restart: "no"
phpmyadmin:
image: phpmyadmin:latest
expose:
- "80"
environment:
PMA_HOST: db
PMA_PORT: 3306
depends_on:
- db
restart: unless-stopped
volumes:
webgis_db_data:
app_uploads:
-63
View File
@@ -1,63 +0,0 @@
<?php
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: '';
$db = getenv('DB_NAME') ?: 'uas_06';
echo "Menunggu MySQL di $host siap...\n";
$maxTries = 30;
for ($i = 0; $i < $maxTries; $i++) {
$conn = @new mysqli($host, $user, $pass);
if (!$conn->connect_error) {
break;
}
sleep(2);
}
if ($conn->connect_error) {
die("Gagal koneksi ke database: " . $conn->connect_error . "\n");
}
// Buat database utama jika belum ada (berguna untuk local development)
$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
$conn->select_db($db);
function importSql($conn, $file) {
if (!file_exists($file)) return;
$sql = file_get_contents($file);
// Hapus CREATE DATABASE dan USE agar menggunakan DB saat ini
$sql = preg_replace('/CREATE DATABASE IF NOT EXISTS [^\;]+\;/i', '', $sql);
$sql = preg_replace('/USE [^\;]+\;/i', '', $sql);
if ($conn->multi_query($sql)) {
do {
if ($res = $conn->store_result()) {
$res->free();
}
} while ($conn->more_results() && $conn->next_result());
}
}
// Cek apakah tabel uas_06 sudah ada (menggunakan tabel role sebagai patokan)
$res = $conn->query("SHOW TABLES LIKE 'role'");
if ($res->num_rows == 0) {
echo "Tabel utama (05) belum ada, menjalankan import...\n";
importSql($conn, __DIR__ . '/05/database_uas_06.sql');
} else {
echo "Tabel utama (05) sudah ada, skip import.\n";
}
// Cek tabel SPBU (04)
$db04 = getenv('DB_NAME_04') ?: $db;
$conn->query("CREATE DATABASE IF NOT EXISTS `$db04` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
$conn->select_db($db04);
$res = $conn->query("SHOW TABLES LIKE 'spbu'");
if ($res->num_rows == 0) {
echo "Tabel spbu (04) belum ada, menjalankan import...\n";
importSql($conn, __DIR__ . '/04/db_spbu.sql');
} else {
echo "Tabel spbu (04) sudah ada, skip import.\n";
}
$conn->close();
echo "Inisialisasi database selesai.\n";
+169 -25
View File
@@ -1,39 +1,44 @@
-- ============================================================
-- Bawaan 05
-- ============================================================
-- ============================================================
-- WebGIS Pengentasan Kemiskinan | Database: uas_06
-- Jalankan sekali untuk setup awal
-- ============================================================
CREATE DATABASE IF NOT EXISTS uas_06 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE uas_06;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS log_aktivitas;
DROP TABLE IF EXISTS pesan;
DROP TABLE IF EXISTS histori_bantuan;
DROP TABLE IF EXISTS bantuan;
DROP TABLE IF EXISTS laporan;
DROP TABLE IF EXISTS pelatihan;
DROP TABLE IF EXISTS penduduk;
DROP TABLE IF EXISTS keluarga;
DROP TABLE IF EXISTS rumah_ibadah;
DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS role;
DROP TABLE IF EXISTS `log_aktivitas`;
DROP TABLE IF EXISTS `pesan`;
DROP TABLE IF EXISTS `histori_bantuan`;
DROP TABLE IF EXISTS `bantuan`;
DROP TABLE IF EXISTS `laporan`;
DROP TABLE IF EXISTS `pelatihan`;
DROP TABLE IF EXISTS `penduduk`;
DROP TABLE IF EXISTS `keluarga`;
DROP TABLE IF EXISTS `rumah_ibadah`;
DROP TABLE IF EXISTS `user`;
DROP TABLE IF EXISTS `role`;
SET FOREIGN_KEY_CHECKS = 1;
-- ── 1. ROLE ─────────────────────────────────────────────────
CREATE TABLE role (
CREATE TABLE `role` (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(50) NOT NULL,
deskripsi TEXT
) ENGINE=InnoDB;
INSERT INTO role (nama, deskripsi) VALUES
INSERT INTO `role` (nama, deskripsi) VALUES
('masyarakat', 'Hanya dapat melihat data dan membuat laporan'),
('pengurus', 'Input & update data penduduk, verifikasi laporan, salurkan bantuan'),
('pimpinan', 'Read-only, monitoring dashboard');
-- ── 2. USER ─────────────────────────────────────────────────
CREATE TABLE user (
CREATE TABLE `user` (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
@@ -41,11 +46,11 @@ CREATE TABLE user (
role_id INT NOT NULL DEFAULT 1,
aktif TINYINT(1) DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (role_id) REFERENCES role(id)
FOREIGN KEY (role_id) REFERENCES `role`(id)
) ENGINE=InnoDB;
-- Password untuk semua akun demo: "password"
INSERT INTO user (nama, email, password, role_id) VALUES
INSERT INTO `user` (nama, email, password, role_id) VALUES
('Admin Utama', 'admin@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 2),
('Pimpinan Daerah', 'pimpinan@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 3),
('Warga Biasa', 'warga@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 1),
@@ -63,7 +68,7 @@ CREATE TABLE rumah_ibadah (
radius DOUBLE DEFAULT 500,
user_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
FOREIGN KEY (user_id) REFERENCES `user`(id) ON DELETE SET NULL
) ENGINE=InnoDB;
INSERT INTO rumah_ibadah (nama, jenis, kontak, alamat, lat, lng, radius, user_id) VALUES
@@ -185,7 +190,7 @@ CREATE TABLE histori_bantuan (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE CASCADE,
FOREIGN KEY (bantuan_id) REFERENCES bantuan(id) ON DELETE CASCADE,
FOREIGN KEY (disalurkan_oleh) REFERENCES user(id) ON DELETE SET NULL
FOREIGN KEY (disalurkan_oleh) REFERENCES `user`(id) ON DELETE SET NULL
) ENGINE=InnoDB;
INSERT INTO histori_bantuan (penduduk_id,bantuan_id,tanggal,jumlah,status,disalurkan_oleh,keterangan) VALUES
@@ -212,7 +217,7 @@ CREATE TABLE laporan (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE SET NULL,
FOREIGN KEY (diverifikasi_oleh) REFERENCES user(id) ON DELETE SET NULL
FOREIGN KEY (diverifikasi_oleh) REFERENCES `user`(id) ON DELETE SET NULL
) ENGINE=InnoDB;
INSERT INTO laporan (pelapor,penduduk_id,deskripsi,lat,lng,urgensi,status) VALUES
@@ -232,7 +237,7 @@ CREATE TABLE log_aktivitas (
keterangan TEXT,
ip_address VARCHAR(45),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
FOREIGN KEY (user_id) REFERENCES `user`(id) ON DELETE SET NULL
) ENGINE=InnoDB;
INSERT INTO log_aktivitas (user_id,aksi,tabel,data_id,keterangan) VALUES
@@ -249,8 +254,8 @@ CREATE TABLE pesan (
isi TEXT NOT NULL,
dibaca TINYINT(1) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (dari_user) REFERENCES user(id) ON DELETE CASCADE,
FOREIGN KEY (ke_user) REFERENCES user(id) ON DELETE SET NULL
FOREIGN KEY (dari_user) REFERENCES `user`(id) ON DELETE CASCADE,
FOREIGN KEY (ke_user) REFERENCES `user`(id) ON DELETE SET NULL
) ENGINE=InnoDB;
INSERT INTO pesan (dari_user,ke_user,isi,dibaca) VALUES
@@ -282,4 +287,143 @@ LEFT JOIN penduduk p ON p.rumah_ibadah_id=ri.id AND p.status_hidup='hidup'
GROUP BY ri.id;
-- ── SELESAI ──────────────────────────────────────────────────
SELECT 'Database uas_06 berhasil dibuat!' AS status;
-- ============================================================
-- Bawaan 02
-- ============================================================
CREATE TABLE jalan(
id INT AUTO_INCREMENT PRIMARY KEY,
nama_jalan VARCHAR(150),
status VARCHAR(50),
panjang DOUBLE,
geom LINESTRING NOT NULL SRID 0,
SPATIAL INDEX idx_jalan(geom)
);
CREATE TABLE parsil(
id INT AUTO_INCREMENT PRIMARY KEY,
pemilik VARCHAR(100),
status VARCHAR(50),
luas DOUBLE,
geom POLYGON NOT NULL SRID 0,
SPATIAL INDEX idx_parsil(geom)
);
CREATE TABLE jalan_rusak(
id INT AUTO_INCREMENT PRIMARY KEY,
nama_titik VARCHAR(100),
keterangan TEXT,
geom POINT NOT NULL SRID 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
SPATIAL INDEX idx_rusak(geom)
);
-- ============================================================
-- Bawaan 01
-- ============================================================
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Waktu pembuatan: 07 Jun 2026 pada 10.53
-- Versi server: 10.4.32-MariaDB
-- Versi PHP: 8.2.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `db_spbu`
--
-- --------------------------------------------------------
--
-- Struktur dari tabel `spbu`
--
CREATE TABLE `spbu_01` (
`id` int(11) NOT NULL,
`nama_spbu` varchar(255) DEFAULT NULL,
`lat` double DEFAULT NULL,
`lng` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dumping data untuk tabel `spbu`
--
INSERT INTO `spbu_01` (`id`, `nama_spbu`, `lat`, `lng`) VALUES
(1, 'spbu kobar', -0.02197187355969219, 109.31207858442205),
(3, 'spbu paris', 0.007368924759898348, 109.37010012983221),
(4, 'spbu tanray', 0.016651739943910275, 109.29988329640928);
--
-- Indexes for dumped tables
--
--
-- Indeks untuk tabel `spbu`
--
ALTER TABLE `spbu_01`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT untuk tabel yang dibuang
--
--
-- AUTO_INCREMENT untuk tabel `spbu`
--
ALTER TABLE `spbu_01`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- ============================================================
-- Bawaan 04
-- ============================================================
-- =============================================
-- DATABASE: db_24jam
-- =============================================
-- ---------------------------------------------
-- Tabel: spbu
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `spbu_04` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`nama_spbu` VARCHAR(100) NOT NULL,
`no_wa` VARCHAR(20) NOT NULL,
`status` ENUM('yes','no') NOT NULL DEFAULT 'no',
`latitude` DOUBLE NOT NULL,
`longitude` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-3
View File
@@ -1,3 +0,0 @@
#!/bin/bash
php /var/www/html/init-db.php
exec apache2-foreground