fix: drop and recreate jalan/parsil tables with correct schema (add status_jalan)

This commit is contained in:
2026-06-11 03:04:16 +07:00
parent ecff4e3efd
commit 0cba830fda
+65 -50
View File
@@ -1,6 +1,6 @@
<?php
// ==============================================================
// setup_tables.php — Buat semua tabel di database webgis
// setup_tables.php — Fix & buat semua tabel di database webgis
// HAPUS FILE INI SETELAH DIGUNAKAN!
// ==============================================================
$host = getenv('DB_HOST') ?: 'db';
@@ -9,64 +9,79 @@ $pass = getenv('DB_PASS') ?: 'root';
$db = getenv('DB_NAME_SPBU') ?: 'webgis';
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die('<p style="color:red">Koneksi gagal: ' . mysqli_connect_error() . '</p>');
if (!$conn) die('<p style="color:red">Koneksi gagal: ' . mysqli_connect_error() . '</p>');
echo '<style>body{font-family:monospace;background:#0b1120;color:#e0e6f0;padding:20px}.ok{color:#00c9aa}.err{color:#f03e5a}.info{color:#f59e0b}.warn{color:#fb923c}h2,h3{color:#1a5fff}</style>';
echo '<h2>🛠️ Fix & Setup Tabel WebGIS SPBU</h2>';
// ── 1. SPBU table ──────────────────────────────────────────────
echo '<h3>📌 Tabel: spbu</h3>';
mysqli_query($conn, "CREATE TABLE IF NOT EXISTS `spbu` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_spbu` varchar(100) DEFAULT NULL,
`no_wa` varchar(20) DEFAULT NULL,
`buka_24jam` enum('Ya','Tidak') DEFAULT 'Tidak',
`latitude` double DEFAULT NULL,
`longitude` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
echo "<p class='ok'>✅ Tabel spbu OK.</p>";
// ── 2. JALAN table — drop & recreate (pasti schema benar) ──────
echo '<h3>📌 Tabel: jalan</h3>';
// Cek jumlah data dulu
$cntR = mysqli_query($conn, "SELECT COUNT(*) as c FROM jalan");
$cnt = $cntR ? mysqli_fetch_assoc($cntR)['c'] : 0;
echo "<p class='info'>️ Data jalan saat ini: <b>$cnt</b> record.</p>";
// Drop dan recreate karena schema mungkin salah
mysqli_query($conn, "DROP TABLE IF EXISTS `jalan`");
$r = mysqli_query($conn, "CREATE TABLE `jalan` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_jalan` varchar(150) NOT NULL,
`status_jalan` enum('Nasional','Provinsi','Kabupaten') DEFAULT 'Nasional',
`panjang` double DEFAULT 0,
`geom` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
if ($r) {
echo "<p class='ok'>✅ Tabel jalan di-recreate dengan schema yang benar (status_jalan ✓).</p>";
} else {
echo "<p class='err'>❌ Error: " . mysqli_error($conn) . "</p>";
}
echo '<style>body{font-family:monospace;background:#0b1120;color:#e0e6f0;padding:20px}.ok{color:#00c9aa}.err{color:#f03e5a}.info{color:#f59e0b}h2{color:#1a5fff}</style>';
echo '<h2>🛠️ Setup Tabel WebGIS SPBU</h2>';
// ── 3. PARSIL table — drop & recreate ──────────────────────────
echo '<h3>📌 Tabel: parsil</h3>';
$cntR2 = mysqli_query($conn, "SELECT COUNT(*) as c FROM parsil");
$cnt2 = $cntR2 ? mysqli_fetch_assoc($cntR2)['c'] : 0;
echo "<p class='info'>️ Data parsil saat ini: <b>$cnt2</b> record.</p>";
$tables = [
"Tabel spbu" => "CREATE TABLE IF NOT EXISTS `spbu` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_spbu` varchar(100) DEFAULT NULL,
`no_wa` varchar(20) DEFAULT NULL,
`buka_24jam` enum('Ya','Tidak') DEFAULT 'Tidak',
`latitude` double DEFAULT NULL,
`longitude` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
"Tabel jalan" => "CREATE TABLE IF NOT EXISTS `jalan` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_jalan` varchar(150) NOT NULL,
`status_jalan` enum('Nasional','Provinsi','Kabupaten') DEFAULT 'Nasional',
`panjang` double DEFAULT 0,
`geom` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
"Tabel parsil" => "CREATE TABLE IF NOT EXISTS `parsil` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_pemilik` varchar(150) NOT NULL,
`status` enum('SHM','HGB','HGU','HP') DEFAULT 'SHM',
`luas` double DEFAULT 0,
`geom` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
];
foreach ($tables as $label => $sql) {
if (mysqli_query($conn, $sql)) {
echo "<p class='ok'>✅ $label — berhasil dibuat / sudah ada.</p>";
} else {
echo "<p class='err'>❌ $label" . mysqli_error($conn) . "</p>";
}
mysqli_query($conn, "DROP TABLE IF EXISTS `parsil`");
$r2 = mysqli_query($conn, "CREATE TABLE `parsil` (
`id` int NOT NULL AUTO_INCREMENT,
`nama_pemilik` varchar(150) NOT NULL,
`status` enum('SHM','HGB','HGU','HP') DEFAULT 'SHM',
`luas` double DEFAULT 0,
`geom` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
if ($r2) {
echo "<p class='ok'>✅ Tabel parsil di-recreate dengan schema yang benar.</p>";
} else {
echo "<p class='err'>❌ Error: " . mysqli_error($conn) . "</p>";
}
// Tampilkan jumlah data masing-masing tabel
// ── Verifikasi kolom ────────────────────────────────────────────
echo '<hr style="border-color:#2d3449;margin:20px 0">';
echo '<h3 style="color:#f59e0b">📊 Data saat ini:</h3>';
$checks = ['spbu' => 'nama_spbu', 'jalan' => 'nama_jalan', 'parsil' => 'nama_pemilik'];
foreach ($checks as $tbl => $col) {
$r = mysqli_query($conn, "SELECT COUNT(*) as total FROM `$tbl`");
$row = mysqli_fetch_assoc($r);
echo "<p class='info'>📌 Tabel <b>$tbl</b>: " . $row['total'] . " record.</p>";
echo '<h3>🔍 Verifikasi Kolom Tabel Jalan:</h3>';
$cols = mysqli_query($conn, "SHOW COLUMNS FROM jalan");
while ($col = mysqli_fetch_assoc($cols)) {
echo "<p class='ok'> ✓ {$col['Field']} ({$col['Type']})</p>";
}
echo '<hr style="border-color:#2d3449;margin:20px 0">';
echo '<h3 style="color:#00c9aa">🎉 Setup selesai! Semua tabel sudah siap.</h3>';
echo '<p style="color:#f03e5a"><b>⚠️ PENTING: Hapus file ini setelah selesai!</b></p>';
echo '<h3 style="color:#00c9aa">🎉 Fix selesai! Sekarang coba Tambah Jalan lagi.</h3>';
echo '<p style="color:#f03e5a"><b>⚠️ Hapus file ini setelah selesai!</b></p>';
echo '<p>→ <a href="/spbu/index.php" style="color:#1a5fff">Kembali ke SPBU Dashboard</a></p>';
mysqli_close($conn);
?>