mencoba connect database

This commit is contained in:
2026-06-10 07:57:17 +07:00
parent a9ab80ee45
commit 134ccf6fea
10 changed files with 113 additions and 435 deletions
-7
View File
@@ -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
View File
@@ -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
+52 -25
View File
@@ -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;
}
?>
+24 -17
View File
@@ -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
View File
@@ -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();
}
?>
View File
-36
View File
@@ -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:
-13
View File
@@ -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>
-241
View File
@@ -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
View File
@@ -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);