Files
WebGIS-Project/webgis02/config.php
T

94 lines
3.3 KiB
PHP

<?php
mysqli_report(MYSQLI_REPORT_OFF);
function env_first(array $keys, $default = '') {
foreach ($keys as $key) {
$value = getenv($key);
if ($value !== false && $value !== '') return $value;
}
return $default;
}
function connect_server(array $hosts, string $user, string $pass) {
foreach ($hosts as $host) {
$conn = @mysqli_connect($host, $user, $pass);
if ($conn) return $conn;
}
return false;
}
$hosts = array_filter(array_unique([
env_first(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST']),
'database',
'mysql',
'mariadb',
'db',
'host.docker.internal',
'127.0.0.1',
]));
$user = env_first(['DB_USER', 'MYSQL_USER', 'MARIADB_USER'], 'root');
$pass = env_first(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD'], '');
$db = env_first(['WEBGIS02_DB_NAME', 'DB_NAME_WEBGIS02'], 'webgis_db');
$conn = connect_server($hosts, $user, $pass);
if (!$conn) {
die(json_encode([
'status' => 'error',
'message' => 'Koneksi database gagal. Pastikan MySQL service berjalan dan DB_HOST/DB_USER/DB_PASSWORD benar. Error: ' . mysqli_connect_error()
]));
}
mysqli_set_charset($conn, 'utf8mb4');
$safeDb = preg_replace('/[^a-zA-Z0-9_]/', '', $db);
mysqli_query($conn, "CREATE DATABASE IF NOT EXISTS `$safeDb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
mysqli_select_db($conn, $safeDb);
mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_jalan (
id INT(11) NOT NULL AUTO_INCREMENT,
nama_jalan VARCHAR(200) NOT NULL,
status_jalan ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten',
panjang_meter DECIMAL(15,2) NOT NULL DEFAULT 0,
geojson LONGTEXT NOT NULL,
keterangan TEXT,
foto VARCHAR(255) 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");
mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_parsil (
id INT(11) NOT NULL AUTO_INCREMENT,
nama_pemilik VARCHAR(200) NOT NULL,
no_sertifikat VARCHAR(100) NOT NULL,
status_kepemilikan ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM',
luas_m2 DECIMAL(20,4) NOT NULL DEFAULT 0,
geojson LONGTEXT NOT NULL,
alamat TEXT,
foto VARCHAR(255) 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");
mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_jalan_rusak (
id INT(11) NOT NULL AUTO_INCREMENT,
lokasi VARCHAR(200) NOT NULL,
tingkat ENUM('Ringan','Sedang','Berat') NOT NULL DEFAULT 'Sedang',
jenis VARCHAR(100) NOT NULL DEFAULT '',
geojson LONGTEXT NOT NULL,
keterangan TEXT,
foto VARCHAR(255) NULL,
tanggal_lapor DATE NOT NULL DEFAULT (CURRENT_DATE),
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");
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');