mencoba connect database
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
# Salin ke Environment Variables di Coolify / Docker
|
||||
DB_HOST=db
|
||||
DB_USER=webgis
|
||||
DB_PASS=webgis123
|
||||
POVERTY_DB_NAME=webgis_p3
|
||||
SPBU_DB_NAME=webgis_spbu
|
||||
JALAN_DB_NAME=WEB_GIS
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
FROM php:8.2-apache
|
||||
|
||||
RUN docker-php-ext-install mysqli pdo pdo_mysql \
|
||||
&& a2enmod rewrite headers
|
||||
|
||||
COPY . /var/www/html/
|
||||
|
||||
RUN chown -R www-data:www-data /var/www/html
|
||||
|
||||
COPY docker/apache.conf /etc/apache2/sites-available/000-default.conf
|
||||
|
||||
EXPOSE 80
|
||||
@@ -1,35 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* WebGIS - Konfigurasi & Koneksi Database
|
||||
*/
|
||||
|
||||
// Pastikan PHP tidak menampilkan error sebagai HTML (merusak output JSON)
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('display_startup_errors', 0);
|
||||
error_reporting(0);
|
||||
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') !== false ? getenv('DB_PASS') : '');
|
||||
define('DB_NAME', getenv('JALAN_DB_NAME') ?: 'WEB_GIS');
|
||||
$host_sekarang = $_SERVER['HTTP_HOST'];
|
||||
|
||||
/**
|
||||
* Mengembalikan koneksi MySQLi.
|
||||
* Jika koneksi gagal, langsung output JSON error dan exit.
|
||||
*/
|
||||
function getConnection()
|
||||
{
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
if (strpos($host_sekarang, 'localhost') !== false || strpos($host_sekarang, '127.0.0.1') !== false) {
|
||||
$host = "localhost";
|
||||
$user = "root";
|
||||
$pass = "";
|
||||
$db = "WEB_GIS";
|
||||
} else {
|
||||
$host = "to00g0c4cwsws8gsoc4c08og";
|
||||
$user = "mysql";
|
||||
$pass = "FzeWTKBJzGMHk47S6UI0w0wdFLKbANsrfoFDZDwVnxNDFS1qtBT9lFFcTfyJgdcf";
|
||||
$db = "WEB_GIS";
|
||||
}
|
||||
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
echo json_encode([
|
||||
'status' => 'gagal',
|
||||
'pesan' => 'Koneksi database gagal: ' . $conn->connect_error
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
$conn = new mysqli($host, $user, $pass);
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
echo json_encode(['status' => 'gagal', 'pesan' => 'Koneksi database gagal: ' . $conn->connect_error]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$conn->set_charset('utf8mb4');
|
||||
$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
|
||||
$conn->select_db($db);
|
||||
$conn->set_charset('utf8mb4');
|
||||
|
||||
// Auto-create tables
|
||||
$conn->query("
|
||||
CREATE TABLE IF NOT EXISTS `tb_jalan` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`nama_jalan` VARCHAR(100) NOT NULL,
|
||||
`status_jalan` ENUM('Nasional','Provinsi','Kabupaten') NOT NULL,
|
||||
`panjang_jalan` DECIMAL(12,2) NOT NULL DEFAULT '0.00',
|
||||
`geojson` JSON NOT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
|
||||
$conn->query("
|
||||
CREATE TABLE IF NOT EXISTS `tb_parsil` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`nama_parsil` VARCHAR(100) NOT NULL,
|
||||
`status_kepemilikan` ENUM('SHM','HGB','HGU','HP') NOT NULL,
|
||||
`luas_tanah` DECIMAL(16,4) NOT NULL DEFAULT '0.0000',
|
||||
`geojson` JSON NOT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
|
||||
function getConnection() {
|
||||
global $conn;
|
||||
return $conn;
|
||||
}
|
||||
?>
|
||||
@@ -1,33 +1,40 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// KONFIGURASI DATABASE
|
||||
// File: config.php
|
||||
// ============================================================
|
||||
$host_sekarang = $_SERVER['HTTP_HOST'];
|
||||
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') !== false ? getenv('DB_PASS') : '');
|
||||
define('DB_NAME', getenv('POVERTY_DB_NAME') ?: 'webgis_p3');
|
||||
if (strpos($host_sekarang, 'localhost') !== false || strpos($host_sekarang, '127.0.0.1') !== false) {
|
||||
$host = "localhost";
|
||||
$user = "root";
|
||||
$pass = "";
|
||||
$db = "webgis_p3";
|
||||
} else {
|
||||
$host = "to00g0c4cwsws8gsoc4c08og";
|
||||
$user = "mysql";
|
||||
$pass = "FzeWTKBJzGMHk47S6UI0w0wdFLKbANsrfoFDZDwVnxNDFS1qtBT9lFFcTfyJgdcf";
|
||||
$db = "webgis_p3";
|
||||
}
|
||||
|
||||
$conn = new mysqli($host, $user, $pass);
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Koneksi database gagal: ' . $conn->connect_error]));
|
||||
}
|
||||
|
||||
$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
|
||||
$conn->select_db($db);
|
||||
$conn->set_charset('utf8mb4');
|
||||
|
||||
function getDB() {
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Koneksi database gagal: ' . $conn->connect_error]));
|
||||
}
|
||||
$conn->set_charset('utf8mb4');
|
||||
global $conn;
|
||||
return $conn;
|
||||
}
|
||||
|
||||
// Header CORS & JSON untuk semua response
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
|
||||
header('Access-Control-Allow-Headers: Content-Type');
|
||||
|
||||
// Handle preflight OPTIONS request
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
||||
http_response_code(200);
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
?>
|
||||
+37
-54
@@ -1,13 +1,32 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// KONFIGURASI DATABASE – WebGIS SPBU
|
||||
// File: config.php
|
||||
// ============================================================
|
||||
$host_sekarang = $_SERVER['HTTP_HOST'];
|
||||
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') !== false ? getenv('DB_PASS') : '');
|
||||
define('DB_NAME', getenv('SPBU_DB_NAME') ?: 'webgis_spbu');
|
||||
if (strpos($host_sekarang, 'localhost') !== false || strpos($host_sekarang, '127.0.0.1') !== false) {
|
||||
$host = "localhost";
|
||||
$user = "root";
|
||||
$pass = "";
|
||||
$db = "webgis_spbu";
|
||||
} else {
|
||||
$host = "to00g0c4cwsws8gsoc4c08og";
|
||||
$user = "mysql";
|
||||
$pass = "FzeWTKBJzGMHk47S6UI0w0wdFLKbANsrfoFDZDwVnxNDFS1qtBT9lFFcTfyJgdcf";
|
||||
$db = "webgis_spbu";
|
||||
}
|
||||
|
||||
$conn = new mysqli($host, $user, $pass);
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Koneksi MySQL gagal: ' . $conn->connect_error]));
|
||||
}
|
||||
|
||||
$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
|
||||
$conn->select_db($db);
|
||||
$conn->set_charset('utf8mb4');
|
||||
|
||||
function getDB() {
|
||||
global $conn;
|
||||
return $conn;
|
||||
}
|
||||
|
||||
function jsonError($message, $code = 500) {
|
||||
http_response_code($code);
|
||||
@@ -15,32 +34,8 @@ function jsonError($message, $code = 500) {
|
||||
exit();
|
||||
}
|
||||
|
||||
function getDB() {
|
||||
mysqli_report(MYSQLI_REPORT_OFF);
|
||||
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS);
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Koneksi MySQL gagal: ' . $conn->connect_error]));
|
||||
}
|
||||
|
||||
$dbName = DB_NAME;
|
||||
if (!$conn->query("CREATE DATABASE IF NOT EXISTS `{$dbName}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Gagal membuat database: ' . $conn->error]));
|
||||
}
|
||||
|
||||
if (!$conn->select_db($dbName)) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['error' => 'Gagal memilih database: ' . $conn->error]));
|
||||
}
|
||||
|
||||
$conn->set_charset('utf8mb4');
|
||||
return $conn;
|
||||
}
|
||||
|
||||
function ensureSpbuSchema($db) {
|
||||
if (!$db->query("
|
||||
$db->query("
|
||||
CREATE TABLE IF NOT EXISTS data_spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(200) NOT NULL,
|
||||
@@ -52,15 +47,7 @@ function ensureSpbuSchema($db) {
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||
")) {
|
||||
jsonError('Gagal membuat tabel data_spbu: ' . $db->error);
|
||||
}
|
||||
|
||||
$check = $db->query("SHOW COLUMNS FROM data_spbu LIKE 'alamat'");
|
||||
if ($check && $check->num_rows === 0) {
|
||||
$db->query("ALTER TABLE data_spbu ADD COLUMN alamat VARCHAR(300) NOT NULL DEFAULT '' AFTER nama_spbu");
|
||||
$db->query("UPDATE data_spbu SET alamat = CONCAT(nama_spbu, ', Pontianak') WHERE alamat = ''");
|
||||
}
|
||||
");
|
||||
|
||||
$countRes = $db->query("SELECT COUNT(*) AS total FROM data_spbu");
|
||||
if ($countRes && (int)$countRes->fetch_assoc()['total'] === 0) {
|
||||
@@ -70,20 +57,15 @@ function ensureSpbuSchema($db) {
|
||||
|
||||
function seedSpbuSampleData($db) {
|
||||
$samples = [
|
||||
['SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200],
|
||||
['SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450],
|
||||
['SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600],
|
||||
['SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700],
|
||||
['SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200],
|
||||
['SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450],
|
||||
['SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600],
|
||||
['SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700],
|
||||
['SPBU Jl. Kom. Yos Sudarso', 'Jl. Kom. Yos Sudarso No. 22, Pontianak', '0812-1111-0005', 'Ya', -0.0350, 109.3550],
|
||||
['SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300],
|
||||
['SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380],
|
||||
['SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300],
|
||||
['SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380],
|
||||
];
|
||||
|
||||
$stmt = $db->prepare(
|
||||
"INSERT INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude)
|
||||
VALUES (?, ?, ?, ?, ?, ?)"
|
||||
);
|
||||
|
||||
$stmt = $db->prepare("INSERT INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?)");
|
||||
foreach ($samples as $row) {
|
||||
[$nama, $alamat, $wa, $jam, $lat, $lng] = $row;
|
||||
$stmt->bind_param('ssssdd', $nama, $alamat, $wa, $jam, $lat, $lng);
|
||||
@@ -101,3 +83,4 @@ if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
||||
http_response_code(200);
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
@@ -1,36 +0,0 @@
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
ports:
|
||||
- "8087:80"
|
||||
environment:
|
||||
DB_HOST: db
|
||||
DB_USER: webgis
|
||||
DB_PASS: webgis123
|
||||
POVERTY_DB_NAME: webgis_p3
|
||||
SPBU_DB_NAME: webgis_spbu
|
||||
JALAN_DB_NAME: WEB_GIS
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
|
||||
db:
|
||||
image: mysql:8.0
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root123
|
||||
MYSQL_USER: webgis
|
||||
MYSQL_PASSWORD: webgis123
|
||||
MYSQL_DATABASE: webgis_p3
|
||||
ports:
|
||||
- "3307:3306"
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql3
|
||||
- ./docker:/docker-entrypoint-initdb.d:ro
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot123"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
volumes:
|
||||
mysql_data3:
|
||||
@@ -1,13 +0,0 @@
|
||||
<VirtualHost *:80>
|
||||
DocumentRoot /var/www/html
|
||||
DirectoryIndex index.html index.php
|
||||
|
||||
<Directory /var/www/html>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
</VirtualHost>
|
||||
@@ -1,241 +0,0 @@
|
||||
-- Buat database
|
||||
CREATE DATABASE IF NOT EXISTS webgis_p3 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
CREATE DATABASE IF NOT EXISTS webgis_spbu CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
CREATE DATABASE IF NOT EXISTS WEB_GIS CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- Kasih akses user webgis
|
||||
GRANT ALL PRIVILEGES ON webgis_p3.* TO 'webgis'@'%';
|
||||
GRANT ALL PRIVILEGES ON webgis_spbu.* TO 'webgis'@'%';
|
||||
GRANT ALL PRIVILEGES ON WEB_GIS.* TO 'webgis'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Import data webgis_p3
|
||||
USE webgis_p3;
|
||||
-- ============================================================
|
||||
-- DATABASE LENGKAP: webgis_p3
|
||||
-- WebGIS Poverty Mapping + Sistem Login (3 Role)
|
||||
-- Import file ini ke Laragon phpMyAdmin
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_p3
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE webgis_p3;
|
||||
|
||||
-- ── Tabel Data Jalan (Polyline) ────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS data_jalan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_jalan VARCHAR(200) NOT NULL,
|
||||
status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten',
|
||||
panjang_m DOUBLE NOT NULL DEFAULT 0,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Tabel Data Parsil Tanah (Polygon) ─────────────────────
|
||||
CREATE TABLE IF NOT EXISTS data_parsil (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
no_parsil VARCHAR(100) NOT NULL,
|
||||
pemilik VARCHAR(200) NOT NULL,
|
||||
status ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM',
|
||||
luas_m2 DOUBLE NOT NULL DEFAULT 0,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Tabel Data SPBU (Point/Marker) ────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS data_spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(200) NOT NULL,
|
||||
no_wa VARCHAR(20) NOT NULL,
|
||||
buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Data Contoh SPBU ──────────────────────────────────────
|
||||
INSERT INTO data_spbu (nama_spbu, no_wa, buka_24_jam, latitude, longitude) VALUES
|
||||
('SPBU Jl. Ahmad Yani', '0812-1111-0001', 'Ya', -0.0400, 109.3200),
|
||||
('SPBU Jl. Gajah Mada', '0812-1111-0002', 'Ya', -0.0520, 109.3450),
|
||||
('SPBU Jl. Diponegoro', '0812-1111-0003', 'Tidak', -0.0610, 109.3600),
|
||||
('SPBU Jl. Sutan Syahrir', '0812-1111-0004', 'Tidak', -0.0480, 109.3700),
|
||||
('SPBU Jl. Kom. Yos Sudarso', '0812-1111-0005', 'Ya', -0.0350, 109.3550);
|
||||
|
||||
-- ── Tabel Data Kemiskinan (Point/Marker) ──────────────────
|
||||
CREATE TABLE IF NOT EXISTS data_kemiskinan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(200) NOT NULL,
|
||||
jumlah_kk INT NOT NULL DEFAULT 1,
|
||||
alamat TEXT NOT NULL,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Tabel Data Rumah Ibadah (Point/Marker + Radius Buffer)
|
||||
CREATE TABLE IF NOT EXISTS data_masjid (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_masjid VARCHAR(200) NOT NULL,
|
||||
jenis ENUM('Masjid','Mushola','Gereja','Pura','Vihara','Klenteng') NOT NULL DEFAULT 'Masjid',
|
||||
pic_masjid VARCHAR(200) NOT NULL,
|
||||
alamat TEXT NOT NULL,
|
||||
radius_m INT NOT NULL DEFAULT 500,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Tabel Users (Sistem Login 3 Role) ─────────────────────
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(100) NOT NULL UNIQUE,
|
||||
nama_lengkap VARCHAR(200) NOT NULL,
|
||||
role ENUM('admin','petugas','pengurus','walikota') NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
aktif TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_role (role),
|
||||
INDEX idx_aktif (aktif)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ── Akun Demo ─────────────────────────────────────────────
|
||||
-- Password semua akun: "password" (bcrypt via PHP PASSWORD_DEFAULT)
|
||||
INSERT INTO users (username, nama_lengkap, role, password_hash) VALUES
|
||||
(
|
||||
'admin',
|
||||
'Administrator Sistem',
|
||||
'admin',
|
||||
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
|
||||
),
|
||||
(
|
||||
'pengurus',
|
||||
'Pengurus Rumah Ibadah',
|
||||
'pengurus',
|
||||
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
|
||||
),
|
||||
(
|
||||
'walikota',
|
||||
'Walikota Pontianak',
|
||||
'walikota',
|
||||
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
|
||||
);
|
||||
|
||||
|
||||
-- Import data webgis_spbu
|
||||
USE webgis_spbu;
|
||||
-- ============================================================
|
||||
-- DATABASE: webgis_spbu
|
||||
-- Pertemuan 3 – Layer Groups and Layers Control
|
||||
-- Data SPBU dengan 2 Layer Group: Buka 24 Jam & Tidak 24 Jam
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_spbu
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE webgis_spbu;
|
||||
|
||||
-- buka_24_jam: 'Ya' → Layer Group "SPBU Buka 24 Jam"
|
||||
-- 'Tidak' → Layer Group "SPBU Tidak Buka 24 Jam"
|
||||
CREATE TABLE IF NOT EXISTS data_spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(200) NOT NULL,
|
||||
alamat VARCHAR(300) NOT NULL,
|
||||
no_wa VARCHAR(20) NOT NULL,
|
||||
buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- Migrasi: tambah kolom alamat jika tabel lama dari PovertyMap belum punya
|
||||
-- ALTER TABLE data_spbu ADD COLUMN alamat VARCHAR(300) NOT NULL DEFAULT '' AFTER nama_spbu;
|
||||
-- UPDATE data_spbu SET alamat = CONCAT(nama_spbu, ', Pontianak') WHERE alamat = '';
|
||||
|
||||
INSERT IGNORE INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES
|
||||
('SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200),
|
||||
('SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450),
|
||||
('SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600),
|
||||
('SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700),
|
||||
('SPBU Jl. Kom. Yos Sudarso', 'Jl. Kom. Yos Sudarso No. 22, Pontianak', '0812-1111-0005', 'Ya', -0.0350, 109.3550),
|
||||
('SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300),
|
||||
('SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380);
|
||||
|
||||
-- Import data WEB_GIS
|
||||
USE WEB_GIS;
|
||||
-- =========================================================
|
||||
-- WebGIS - Struktur Database
|
||||
-- Tugas: Manajemen Data Jalan & Parsil Tanah (Kavling)
|
||||
-- Database: WEB_GIS
|
||||
-- Tipe Geometri: GeoJSON (LineString & Polygon)
|
||||
-- =========================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS WEB_GIS
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE WEB_GIS;
|
||||
|
||||
-- ---------------------------------------------------------
|
||||
-- TABEL 1: Manajemen Data Jalan
|
||||
-- Tipe Geometri : GeoJSON LineString
|
||||
-- Panjang Jalan : Dihitung otomatis oleh LeafletJS (meter)
|
||||
-- ---------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `tb_jalan` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key jalan',
|
||||
`nama_jalan` VARCHAR(100) NOT NULL COMMENT 'Nama ruas jalan',
|
||||
`status_jalan` ENUM(
|
||||
'Nasional',
|
||||
'Provinsi',
|
||||
'Kabupaten'
|
||||
) NOT NULL COMMENT 'Status administrasi jalan',
|
||||
`panjang_jalan` DECIMAL(12,2) NOT NULL DEFAULT '0.00' COMMENT 'Panjang jalan dalam meter (dihitung otomatis LeafletJS via L.LatLng.distanceTo)',
|
||||
`geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON LineString',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='Tabel manajemen data jalan berdasarkan status administrasi. Geometri disimpan sebagai GeoJSON LineString.';
|
||||
|
||||
|
||||
-- ---------------------------------------------------------
|
||||
-- TABEL 2: Manajemen Parsil Tanah / Kavling
|
||||
-- Tipe Geometri : GeoJSON Polygon
|
||||
-- Luas Tanah : Dihitung otomatis oleh LeafletJS (m²)
|
||||
-- ---------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `tb_parsil` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key parsil',
|
||||
`nama_parsil` VARCHAR(100) NOT NULL COMMENT 'Nama atau nomor identifikasi parsil tanah',
|
||||
`status_kepemilikan` ENUM(
|
||||
'SHM',
|
||||
'HGB',
|
||||
'HGU',
|
||||
'HP'
|
||||
) NOT NULL COMMENT 'Status sertifikat kepemilikan: SHM=Sertifikat Hak Milik, HGB=Hak Guna Bangunan, HGU=Hak Guna Usaha, HP=Hak Pakai',
|
||||
`luas_tanah` DECIMAL(16,4) NOT NULL DEFAULT '0.0000' COMMENT 'Luas tanah dalam meter persegi (dihitung otomatis LeafletJS via formula geodesic spherical)',
|
||||
`geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON Polygon',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='Tabel manajemen parsil/kavling tanah berdasarkan status kepemilikan. Geometri disimpan sebagai GeoJSON Polygon.';
|
||||
|
||||
|
||||
-- ---------------------------------------------------------
|
||||
-- Contoh Indeks untuk performa query filter
|
||||
-- ---------------------------------------------------------
|
||||
ALTER TABLE `tb_jalan` ADD INDEX `idx_status_jalan` (`status_jalan`);
|
||||
ALTER TABLE `tb_parsil` ADD INDEX `idx_status_parsil` (`status_kepemilikan`);
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
$checks = [
|
||||
'php' => true,
|
||||
'mysqli' => extension_loaded('mysqli'),
|
||||
'version' => PHP_VERSION,
|
||||
];
|
||||
|
||||
$dbHost = getenv('DB_HOST') ?: 'localhost';
|
||||
$dbUser = getenv('DB_USER') ?: 'root';
|
||||
$dbPass = getenv('DB_PASS') ?: '';
|
||||
$dbName = getenv('POVERTY_DB_NAME') ?: 'webgis_p3';
|
||||
|
||||
$conn = @new mysqli($dbHost, $dbUser, $dbPass, $dbName);
|
||||
$checks['database'] = [
|
||||
'host' => $dbHost,
|
||||
'name' => $dbName,
|
||||
'ok' => !$conn->connect_error,
|
||||
'message' => $conn->connect_error ?: 'Terhubung',
|
||||
];
|
||||
|
||||
if (!$conn->connect_error) {
|
||||
$conn->close();
|
||||
}
|
||||
|
||||
$checks['ok'] = $checks['mysqli'] && $checks['database']['ok'];
|
||||
|
||||
http_response_code($checks['ok'] ? 200 : 503);
|
||||
echo json_encode($checks, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
Reference in New Issue
Block a user