From 08d02523898e75c67f6ce2bed04516627ba497ac Mon Sep 17 00:00:00 2001 From: z0rayy Date: Wed, 10 Jun 2026 18:47:37 +0700 Subject: [PATCH] debug error koneksi ke database --- backend/koneksi.php | 11 +++-- debug_db.php | 12 +++-- scripts/init_db.php | 117 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 10 deletions(-) create mode 100644 scripts/init_db.php diff --git a/backend/koneksi.php b/backend/koneksi.php index e7d954a..1380299 100644 --- a/backend/koneksi.php +++ b/backend/koneksi.php @@ -3,17 +3,18 @@ // koneksi.php — Konfigurasi Database // ============================================ -define('DB_HOST', getenv('DB_HOST') ?: 'localhost'); -define('DB_USER', getenv('DB_USER') ?: 'root'); -define('DB_PASS', getenv('DB_PASS') ?: ''); -define('DB_NAME', getenv('DB_NAME') ?: 'webgis_spbu'); +define('DB_HOST', getenv('DB_HOST') ?: getenv('MYSQL_HOST') ?: 'localhost'); +define('DB_USER', getenv('DB_USER') ?: getenv('MYSQL_USER') ?: 'root'); +define('DB_PASS', getenv('DB_PASS') ?: getenv('MYSQL_PASSWORD') ?: getenv('MYSQL_ROOT_PASSWORD') ?: ''); +define('DB_NAME', getenv('DB_NAME') ?: getenv('MYSQL_DATABASE') ?: 'webgis_spbu'); +define('DB_PORT', (int) (getenv('DB_PORT') ?: getenv('MYSQL_PORT') ?: 3306)); // Mengaktifkan exception untuk mysqli agar error bisa ditangkap dengan try-catch mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); function getConnection(): mysqli { try { - $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT); $conn->set_charset('utf8mb4'); return $conn; } catch (mysqli_sql_exception $e) { diff --git a/debug_db.php b/debug_db.php index d6a102b..3579520 100644 --- a/debug_db.php +++ b/debug_db.php @@ -12,17 +12,19 @@ echo "DB_HOST: " . (getenv('DB_HOST') ?: '(not set - will use fallback: localhos echo "DB_USER: " . (getenv('DB_USER') ?: '(not set - will use fallback: root)') . "\n"; echo "DB_PASS: " . (getenv('DB_PASS') ? '***set***' : '(not set - will use empty string)') . "\n"; echo "DB_NAME: " . (getenv('DB_NAME') ?: '(not set - will use fallback: webgis_spbu)') . "\n\n"; +echo "DB_PORT: " . (getenv('DB_PORT') ?: '(not set - will use fallback: 3306)') . "\n\n"; echo "=== KONEKSI TEST ===\n"; -define('DB_HOST', getenv('DB_HOST') ?: 'localhost'); -define('DB_USER', getenv('DB_USER') ?: 'root'); -define('DB_PASS', getenv('DB_PASS') ?: ''); -define('DB_NAME', getenv('DB_NAME') ?: 'webgis_spbu'); +define('DB_HOST', getenv('DB_HOST') ?: getenv('MYSQL_HOST') ?: 'localhost'); +define('DB_USER', getenv('DB_USER') ?: getenv('MYSQL_USER') ?: 'root'); +define('DB_PASS', getenv('DB_PASS') ?: getenv('MYSQL_PASSWORD') ?: getenv('MYSQL_ROOT_PASSWORD') ?: ''); +define('DB_NAME', getenv('DB_NAME') ?: getenv('MYSQL_DATABASE') ?: 'webgis_spbu'); +define('DB_PORT', (int) (getenv('DB_PORT') ?: getenv('MYSQL_PORT') ?: 3306)); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); try { - $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT); $conn->set_charset('utf8mb4'); echo "KONEKSI: BERHASIL!\n"; echo "Host: " . DB_HOST . "\n"; diff --git a/scripts/init_db.php b/scripts/init_db.php new file mode 100644 index 0000000..336f543 --- /dev/null +++ b/scripts/init_db.php @@ -0,0 +1,117 @@ +query($statement); +} + +$adminPassword = getenv('ADMIN_PASSWORD') ?: 'admin123'; +$adminHash = password_hash($adminPassword, PASSWORD_DEFAULT); + +$adminResult = $db->query("SELECT password FROM users WHERE username = 'admin' LIMIT 1"); +if ($adminResult->num_rows === 0) { + $stmt = $db->prepare("INSERT INTO users (username, password) VALUES ('admin', ?)"); + $stmt->bind_param('s', $adminHash); + $stmt->execute(); +} else { + $currentHash = (string) $adminResult->fetch_assoc()['password']; + if (!password_verify($adminPassword, $currentHash)) { + $stmt = $db->prepare("UPDATE users SET password = ? WHERE username = 'admin'"); + $stmt->bind_param('s', $adminHash); + $stmt->execute(); + } +} + +$count = (int) $db->query('SELECT COUNT(*) AS total FROM spbu')->fetch_assoc()['total']; +if ($count === 0) { + $seed = $db->prepare( + "INSERT INTO spbu (nama, no_spbu, status, latitude, longitude) + VALUES (?, ?, ?, ?, ?)" + ); + + $rows = [ + ['SPBU Sudirman', '64.751.01', '24jam', -0.0260000, 109.3425000], + ['SPBU Ahmad Yani', '64.751.02', 'tidak', -0.0310000, 109.3218000], + ['SPBU Sutan Syahrir', '64.751.03', '24jam', -0.0195000, 109.3612000], + ]; + + foreach ($rows as [$name, $number, $status, $latitude, $longitude]) { + $seed->bind_param('sssdd', $name, $number, $status, $latitude, $longitude); + $seed->execute(); + } +} + +echo "Database initialized successfully.\n"; +echo "Admin username: admin\n"; +echo "Admin password: {$adminPassword}\n";