feat: config dynamic database credentials, root index.php, and dockerignore
This commit is contained in:
+38
-10
@@ -16,10 +16,11 @@ $queries[] = "CREATE TABLE IF NOT EXISTS users (
|
||||
role VARCHAR(30) NOT NULL DEFAULT 'admin'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
$queries[] = "INSERT IGNORE INTO users (id, username, password, nama_lengkap, role)
|
||||
VALUES (1, 'admin', 'admin', 'Diva Schenka (Admin)', 'admin');";
|
||||
$queries[] = "INSERT IGNORE INTO users (id, username, password, nama_lengkap, role) VALUES
|
||||
(1, 'admin', 'admin123', 'Diva Schenka (Admin)', 'admin'),
|
||||
(2, 'walikota', 'walikota123', 'Bapak Walikota', 'walikota');";
|
||||
|
||||
// 2. Tabel Penduduk Miskin (Kolom umur sudah aman di sini)
|
||||
// 2. Tabel Penduduk Miskin
|
||||
$queries[] = "CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
||||
id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(100) NOT NULL,
|
||||
@@ -31,6 +32,7 @@ $queries[] = "CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
||||
riwayat_penyakit VARCHAR(255) DEFAULT 'Tidak Ada',
|
||||
latitude VARCHAR(50) NOT NULL,
|
||||
longitude VARCHAR(50) NOT NULL,
|
||||
radius_warga INT(11) DEFAULT 300,
|
||||
status_verifikasi VARCHAR(30) DEFAULT 'Pending'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
@@ -38,19 +40,45 @@ $queries[] = "CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
||||
$queries[] = "CREATE TABLE IF NOT EXISTS histori_bantuan (
|
||||
id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
||||
id_warga INT(11) NOT NULL,
|
||||
nama_bantuan VARCHAR(100) NOT NULL,
|
||||
tanggal_penyaluran DATE NOT NULL,
|
||||
sumber_dana VARCHAR(50) NOT NULL,
|
||||
keterangan TEXT
|
||||
jenis_bantuan VARCHAR(100) NOT NULL,
|
||||
jumlah VARCHAR(100) NOT NULL,
|
||||
tanggal_bantuan DATE NOT NULL,
|
||||
keterangan TEXT,
|
||||
petugas VARCHAR(100) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
// 4. Tabel laporan_cepat
|
||||
$queries[] = "CREATE TABLE IF NOT EXISTS laporan_cepat (
|
||||
id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_pelapor VARCHAR(100) NOT NULL,
|
||||
perihal VARCHAR(255) NOT NULL,
|
||||
pesan TEXT NOT NULL,
|
||||
tanggal_kirim TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
kontak_pelapor VARCHAR(50) NOT NULL,
|
||||
kategori VARCHAR(100) NOT NULL,
|
||||
deskripsi TEXT NOT NULL,
|
||||
latitude VARCHAR(50) NOT NULL,
|
||||
longitude VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(30) DEFAULT 'Masuk',
|
||||
catatan_admin TEXT DEFAULT NULL,
|
||||
tgl_lapor TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
// 5. Tabel Masjid (Rumah Ibadah)
|
||||
$queries[] = "CREATE TABLE IF NOT EXISTS masjid (
|
||||
id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_masjid VARCHAR(100) NOT NULL,
|
||||
nama_pic VARCHAR(100) NOT NULL,
|
||||
radius_meter INT(11) DEFAULT 500,
|
||||
latitude VARCHAR(50) NOT NULL,
|
||||
longitude VARCHAR(50) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
// 6. Tabel Pengaduan Warga
|
||||
$queries[] = "CREATE TABLE IF NOT EXISTS pengaduan_warga (
|
||||
id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_pelapor VARCHAR(100) NOT NULL,
|
||||
kontak_pelapor VARCHAR(50) NOT NULL,
|
||||
deskripsi_laporan TEXT NOT NULL,
|
||||
latitude VARCHAR(50) NOT NULL,
|
||||
longitude VARCHAR(50) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
||||
|
||||
// Eksekusi semua skema baru
|
||||
|
||||
+76
-4
@@ -1,8 +1,80 @@
|
||||
<?php
|
||||
$host = "so0ww048o44c0o0k8gg0kocg"; // Menggunakan ID service internal Coolify kamu
|
||||
$user = "mysql"; // Sesuai dengan Normal User di gambar
|
||||
$pass = "BzGKKh22m8l320uQhLLa4cxstNdyDXGHPO1Qsv83UGNJ2Hy0PyCfrEKf46eD2hCD"; // Gunakan password user dari URL connection string kamu
|
||||
$db = "default";
|
||||
// Cek apakah web sedang berjalan di dalam container Docker
|
||||
$is_docker = file_exists('/.dockerenv');
|
||||
|
||||
// Membaca kredensial dari environment variables (sangat direkomendasikan untuk Coolify)
|
||||
$host = getenv('DB_HOST') ?: (getenv('SERVICE_MYSQL_HOST') ?: null);
|
||||
$user = getenv('DB_USER') ?: (getenv('SERVICE_MYSQL_USER') ?: null);
|
||||
$pass = getenv('DB_PASSWORD') ?: (getenv('SERVICE_MYSQL_PASSWORD') ?: null);
|
||||
$db = getenv('DB_DATABASE') ?: (getenv('SERVICE_MYSQL_DB') ?: null);
|
||||
|
||||
// Jika ada URL koneksi tunggal (misal DATABASE_URL / SERVICE_DATABASE_URL)
|
||||
$db_url = getenv('DATABASE_URL') ?: (getenv('SERVICE_DATABASE_URL') ?: null);
|
||||
if ($db_url) {
|
||||
$host = $db_url;
|
||||
}
|
||||
|
||||
// Helper untuk parsing connection string (mysql://user:pass@host:port/db)
|
||||
function parse_db_uri($uri, &$host, &$user, &$pass, &$db) {
|
||||
if ($uri && strpos($uri, '://') !== false) {
|
||||
$parsed = parse_url($uri);
|
||||
$host = $parsed['host'] ?? $host;
|
||||
$port = $parsed['port'] ?? null;
|
||||
if ($port) {
|
||||
$host = $host . ":" . $port;
|
||||
}
|
||||
if (isset($parsed['user'])) {
|
||||
$user = $parsed['user'];
|
||||
}
|
||||
if (isset($parsed['pass'])) {
|
||||
$pass = $parsed['pass'];
|
||||
}
|
||||
if (isset($parsed['path'])) {
|
||||
$db = ltrim($parsed['path'], '/');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lakukan parsing jika $host berupa URI
|
||||
parse_db_uri($host, $host, $user, $pass, $db);
|
||||
|
||||
// Jika environment variables tidak terdefinisi (seperti di lokal/development), gunakan auto-detection fallback
|
||||
if (!$host) {
|
||||
if ($_SERVER['HTTP_HOST'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
|
||||
// KONEKSI UNTUK LOKAL (Laragon / Docker Lokal)
|
||||
// Jika di dalam Docker, gunakan host.docker.internal untuk mengakses MySQL di host Windows
|
||||
$host = $is_docker ? "host.docker.internal" : "localhost";
|
||||
$user = "root";
|
||||
|
||||
// Coba koneksi ke server dengan password "root" (bawaan MySQL Server Anda)
|
||||
// Jika gagal, gunakan password kosong "" (bawaan Laragon/XAMPP)
|
||||
$pass = "root";
|
||||
$test_conn = @mysqli_connect($host, $user, $pass);
|
||||
if (!$test_conn) {
|
||||
$pass = "";
|
||||
} else {
|
||||
mysqli_close($test_conn);
|
||||
}
|
||||
|
||||
$db = "db_gis_spbu"; // Silakan sesuaikan jika nama database lokal Anda berbeda
|
||||
} else {
|
||||
// FALLBACK KREDENSIAL SERVER ONLINE COOLIFY jika env vars tidak diatur
|
||||
// Menggunakan kredensial database online yang Anda deploy
|
||||
$host = "fwk0cgc840wg0gc8g04gs0gs:3306";
|
||||
$user = "mysql";
|
||||
$db = "default";
|
||||
|
||||
// Coba hubungkan dengan db_pass (V7aRN...) terlebih dahulu
|
||||
$pass = "V7aRN0kJdnaT0kWlYiHWMF4hYWDfXUFFyztql7IeoW7FrKm0hcWFRKOim5kDU4Hi";
|
||||
$test_conn = @mysqli_connect($host, $user, $pass, $db);
|
||||
if (!$test_conn) {
|
||||
// Jika gagal, gunakan password dari connection string (KvEkb...)
|
||||
$pass = "KvEkbHqNswbc2zSA4HiqvtzxQwfegOiUUkiZBg6pCRz5JBhEpSbNyHRytgtXwXMn";
|
||||
} else {
|
||||
mysqli_close($test_conn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$conn = mysqli_connect($host, $user, $pass, $db);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user