updatee
This commit is contained in:
@@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
include "db_config.php";
|
|
||||||
|
|
||||||
|
|
||||||
$columns = [
|
|
||||||
"ALTER TABLE kemiskinan ADD COLUMN tanggal_lahir DATE NULL AFTER nama_kk",
|
|
||||||
"ALTER TABLE kemiskinan ADD COLUMN pendidikan VARCHAR(100) NULL AFTER tanggal_lahir",
|
|
||||||
"ALTER TABLE kemiskinan ADD COLUMN riwayat_penyakit TEXT NULL AFTER pendidikan",
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($columns as $sql) {
|
|
||||||
$result = $conn->query($sql);
|
|
||||||
preg_match('/ADD COLUMN (\w+)/', $sql, $m);
|
|
||||||
$colName = $m[1] ?? $sql;
|
|
||||||
if ($result) {
|
|
||||||
echo "Kolom $colName: OK\n";
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if ($conn->errno == 1060) {
|
|
||||||
echo "Kolom $colName: Sudah ada (skip)\n";
|
|
||||||
} else {
|
|
||||||
echo "Kolom $colName: GAGAL - " . $conn->error . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "\nDatabase sudah siap!\n";
|
|
||||||
?>
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
require_once 'db_config.php';
|
|
||||||
|
|
||||||
$res = $conn->query("SHOW TABLES");
|
|
||||||
if($res) {
|
|
||||||
while($row = $res->fetch_array()) {
|
|
||||||
echo $row[0] . "<br>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo "Error showing tables: " . $conn->error;
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<hr>";
|
|
||||||
|
|
||||||
$sql = "INSERT INTO spbu (nama,no,status,lat,lng) VALUES ('Test','123','Ya','0','0')";
|
|
||||||
if($conn->query($sql)){
|
|
||||||
echo "Insert SPBU success: ID " . $conn->insert_id;
|
|
||||||
}else{
|
|
||||||
echo "Insert SPBU error: " . $conn->error;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
<?php
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
|
||||||
|
|
||||||
$raw = file_get_contents("php://input");
|
|
||||||
echo json_encode([
|
|
||||||
"raw_input" => $raw,
|
|
||||||
"json_decoded" => json_decode($raw, true),
|
|
||||||
"json_error" => json_last_error_msg(),
|
|
||||||
"request_method" => $_SERVER['REQUEST_METHOD'],
|
|
||||||
"content_type" => $_SERVER['CONTENT_TYPE'] ?? 'not set',
|
|
||||||
]);
|
|
||||||
?>
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
<?php
|
|
||||||
require_once 'db_config.php';
|
|
||||||
|
|
||||||
$sqls = [
|
|
||||||
"CREATE TABLE IF NOT EXISTS spbu (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
no VARCHAR(60) NOT NULL,
|
|
||||||
status ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS jalan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten',
|
|
||||||
panjang DECIMAL(12,2) NOT NULL DEFAULT 0,
|
|
||||||
koordinat LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS parsil (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
pemilik VARCHAR(200) NOT NULL,
|
|
||||||
status ENUM('SHM','HGB','Sewa','Lainnya') NOT NULL DEFAULT 'SHM',
|
|
||||||
luas DECIMAL(14,2) NOT NULL DEFAULT 0,
|
|
||||||
koordinat LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach($sqls as $sql) {
|
|
||||||
if ($conn->query($sql) === TRUE) {
|
|
||||||
echo "Tabel berhasil dibuat/diperbarui.<br>";
|
|
||||||
} else {
|
|
||||||
echo "Error: " . $conn->error . "<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo "Selesai!";
|
|
||||||
?>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
include "db_config.php";
|
|
||||||
|
|
||||||
// Cek data user walikota
|
|
||||||
$r = $conn->query("SELECT username, nama_lengkap, role FROM users WHERE username='walikota'");
|
|
||||||
$row = $r->fetch_assoc();
|
|
||||||
echo "Data di DB:\n";
|
|
||||||
print_r($row);
|
|
||||||
|
|
||||||
// Fix: update role ke walikota jika salah
|
|
||||||
$fix = $conn->query("UPDATE users SET role='walikota' WHERE username='walikota'");
|
|
||||||
echo "\nUpdate role: " . ($fix ? "OK (affected: ".$conn->affected_rows.")" : "GAGAL - ".$conn->error) . "\n";
|
|
||||||
|
|
||||||
// Cek lagi setelah fix
|
|
||||||
$r2 = $conn->query("SELECT username, nama_lengkap, role FROM users WHERE username='walikota'");
|
|
||||||
$row2 = $r2->fetch_assoc();
|
|
||||||
echo "\nData setelah fix:\n";
|
|
||||||
print_r($row2);
|
|
||||||
?>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
CREATE DATABASE IF NOT EXISTS kemiskinan_ibadah
|
|
||||||
CHARACTER SET utf8mb4
|
|
||||||
COLLATE utf8mb4_unicode_ci;
|
|
||||||
|
|
||||||
USE kemiskinan_ibadah;
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS rumah_ibadah;
|
|
||||||
DROP TABLE IF EXISTS kemiskinan;
|
|
||||||
|
|
||||||
CREATE TABLE kemiskinan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama_kk VARCHAR(200) NOT NULL,
|
|
||||||
jumlah_kk INT NOT NULL DEFAULT 1,
|
|
||||||
alamat TEXT NOT NULL,
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE rumah_ibadah (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama_rumah_ibadah VARCHAR(200) NOT NULL,
|
|
||||||
penanggung_jawab VARCHAR(200) NOT NULL,
|
|
||||||
alamat TEXT NOT NULL,
|
|
||||||
radius INT NOT NULL DEFAULT 500,
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
INSERT INTO kemiskinan (nama_kk, jumlah_kk, alamat, lat, lng) VALUES
|
|
||||||
('Siti Aminah', 4, 'Jl. Tanjung Raya II, Pontianak Timur', -0.0268500, 109.3611200),
|
|
||||||
('Budi Santoso', 5, 'Jl. Panglima Aim, Pontianak Timur', -0.0314200, 109.3553800),
|
|
||||||
('Rohani', 3, 'Gg. Karya Bakti, Pontianak Kota', -0.0226400, 109.3337600),
|
|
||||||
('M. Yusuf', 6, 'Jl. Kom Yos Sudarso, Pontianak Barat', -0.0149800, 109.3079200),
|
|
||||||
('Nurhayati', 2, 'Jl. Imam Bonjol, Pontianak Selatan', -0.0412200, 109.3420600),
|
|
||||||
('Hendra Saputra', 4, 'Jl. Parit H. Husin II, Pontianak Tenggara', -0.0556100, 109.3659200),
|
|
||||||
('Ramlah', 5, 'Jl. Gusti Situt Mahmud, Pontianak Utara', 0.0021400, 109.3288800),
|
|
||||||
('Agus Salim', 3, 'Jl. Sungai Raya Dalam, Pontianak Tenggara', -0.0614600, 109.3785400);
|
|
||||||
|
|
||||||
INSERT INTO rumah_ibadah (nama_rumah_ibadah, penanggung_jawab, alamat, radius, lat, lng) VALUES
|
|
||||||
('Masjid Raya Mujahidin', 'H. Ahmad Fauzi', 'Jl. Jenderal Ahmad Yani, Pontianak', 800, -0.0446400, 109.3369800),
|
|
||||||
('Gereja Katedral Santo Yosef', 'Pastor Markus', 'Jl. Pattimura, Pontianak Kota', 650, -0.0241300, 109.3374500),
|
|
||||||
('Vihara Bodhisatva Karaniya Metta', 'Lina Wijaya', 'Jl. Sultan Muhammad, Pontianak Kota', 500, -0.0212600, 109.3413400),
|
|
||||||
('Masjid Jami Sultan Syarif Abdurrahman', 'H. Sulaiman', 'Kampung Beting, Pontianak Timur', 700, -0.0264100, 109.3567600),
|
|
||||||
('Gereja HKBP Pontianak', 'St. Daniel Simanjuntak', 'Jl. Gajah Mada, Pontianak Selatan', 550, -0.0356200, 109.3459600),
|
|
||||||
('Pura Giripati Mulawarman', 'I Wayan Sudana', 'Jl. Adi Sucipto, Pontianak Tenggara', 500, -0.0643600, 109.3774200);
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<?php
|
|
||||||
// Script ini hanya dijalankan SEKALI untuk membuat tabel users dan akun admin default.
|
|
||||||
// Hapus file ini setelah selesai dijalankan.
|
|
||||||
|
|
||||||
require_once 'db_config.php';
|
|
||||||
|
|
||||||
// 1. Buat tabel users
|
|
||||||
$sql_table = "CREATE TABLE IF NOT EXISTS users (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
username VARCHAR(100) NOT NULL UNIQUE,
|
|
||||||
password VARCHAR(255) NOT NULL,
|
|
||||||
nama_lengkap VARCHAR(200) NOT NULL,
|
|
||||||
role ENUM('admin','operator') NOT NULL DEFAULT 'operator',
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
|
|
||||||
|
|
||||||
if ($conn->query($sql_table)) {
|
|
||||||
echo "<p style='color:green'>✓ Tabel <strong>users</strong> berhasil dibuat.</p>";
|
|
||||||
} else {
|
|
||||||
echo "<p style='color:red'>✗ Gagal membuat tabel users: " . $conn->error . "</p>";
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Insert akun admin default (password: admin123)
|
|
||||||
$password_hash = password_hash('admin123', PASSWORD_BCRYPT);
|
|
||||||
|
|
||||||
$stmt = $conn->prepare("INSERT IGNORE INTO users (username, password, nama_lengkap, role) VALUES (?, ?, ?, 'admin')");
|
|
||||||
$username = 'admin';
|
|
||||||
$nama = 'Administrator';
|
|
||||||
$stmt->bind_param('sss', $username, $password_hash, $nama);
|
|
||||||
|
|
||||||
if ($stmt->execute()) {
|
|
||||||
if ($stmt->affected_rows > 0) {
|
|
||||||
echo "<p style='color:green'>✓ Akun admin berhasil dibuat.</p>";
|
|
||||||
} else {
|
|
||||||
echo "<p style='color:orange'>⚠ Akun admin sudah ada (tidak diubah).</p>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo "<p style='color:red'>✗ Gagal membuat akun admin: " . $stmt->error . "</p>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$stmt->close();
|
|
||||||
$conn->close();
|
|
||||||
|
|
||||||
echo "<hr>";
|
|
||||||
echo "<p><strong>Kredensial Login:</strong></p>";
|
|
||||||
echo "<p>Username: <code>admin</code></p>";
|
|
||||||
echo "<p>Password: <code>admin123</code></p>";
|
|
||||||
echo "<hr>";
|
|
||||||
echo "<p style='color:red'><strong>PENTING:</strong> Hapus file ini setelah setup selesai!</p>";
|
|
||||||
?>
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
USE kemiskinan_ibadah;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
username VARCHAR(100) NOT NULL UNIQUE,
|
|
||||||
password VARCHAR(255) NOT NULL,
|
|
||||||
nama_lengkap VARCHAR(200) NOT NULL,
|
|
||||||
role ENUM('admin','operator') NOT NULL DEFAULT 'operator',
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
-- Password default: admin123 (bcrypt hashed)
|
|
||||||
INSERT IGNORE INTO users (username, password, nama_lengkap, role) VALUES
|
|
||||||
('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Administrator', 'admin');
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
require_once 'db_config.php';
|
|
||||||
|
|
||||||
$sql = "
|
|
||||||
CREATE TABLE IF NOT EXISTS warga (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
kemiskinan_id INT NOT NULL,
|
|
||||||
nik VARCHAR(50) DEFAULT NULL,
|
|
||||||
nama_warga VARCHAR(200) NOT NULL,
|
|
||||||
hubungan_keluarga VARCHAR(100) DEFAULT NULL,
|
|
||||||
tanggal_lahir DATE DEFAULT NULL,
|
|
||||||
pendidikan VARCHAR(100) DEFAULT NULL,
|
|
||||||
riwayat_penyakit TEXT DEFAULT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
FOREIGN KEY (kemiskinan_id) REFERENCES kemiskinan(id) ON DELETE CASCADE
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
";
|
|
||||||
|
|
||||||
if ($conn->query($sql) === TRUE) {
|
|
||||||
echo "Table 'warga' created successfully\n";
|
|
||||||
} else {
|
|
||||||
echo "Error creating table: " . $conn->error . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$conn->close();
|
|
||||||
?>
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
CREATE DATABASE IF NOT EXISTS webgis
|
|
||||||
CHARACTER SET utf8mb4
|
|
||||||
COLLATE utf8mb4_unicode_ci;
|
|
||||||
|
|
||||||
USE webgis;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS spbu (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
no VARCHAR(60) NOT NULL,
|
|
||||||
status ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS jalan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten',
|
|
||||||
panjang DECIMAL(12,2) NOT NULL DEFAULT 0,
|
|
||||||
koordinat LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS parsil (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(200) NOT NULL,
|
|
||||||
pemilik VARCHAR(200) NOT NULL,
|
|
||||||
status ENUM('SHM','HGB','Sewa','Lainnya') NOT NULL DEFAULT 'SHM',
|
|
||||||
luas DECIMAL(14,2) NOT NULL DEFAULT 0,
|
|
||||||
koordinat LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS kemiskinan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama_kk VARCHAR(200) NOT NULL,
|
|
||||||
jumlah_kk INT NOT NULL DEFAULT 1,
|
|
||||||
alamat TEXT NOT NULL,
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS masjid (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama_masjid VARCHAR(200) NOT NULL,
|
|
||||||
pic_masjid VARCHAR(200) NOT NULL,
|
|
||||||
alamat_masjid TEXT NOT NULL,
|
|
||||||
radius INT NOT NULL DEFAULT 500,
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
require 'db_config.php';
|
|
||||||
$res = $conn->query('DESCRIBE jalan');
|
|
||||||
while($row = $res->fetch_assoc()) echo json_encode($row)."\n";
|
|
||||||
?>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
require 'db_config.php';
|
|
||||||
$stmt = $conn->prepare("INSERT INTO jalan (nama, status, panjang, koordinat) VALUES (?, ?, ?, ?)");
|
|
||||||
$nama = 'Test';
|
|
||||||
$status = 'Jalan Kabupaten';
|
|
||||||
$panjang = 10;
|
|
||||||
$koordinat = '[]';
|
|
||||||
$stmt->bind_param("ssds", $nama, $status, $panjang, $koordinat);
|
|
||||||
$stmt->execute();
|
|
||||||
echo $stmt->error;
|
|
||||||
?>
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
USE kemiskinan_ibadah;
|
|
||||||
|
|
||||||
-- 1. Update USERS table role ENUM
|
|
||||||
ALTER TABLE users MODIFY COLUMN role ENUM('admin', 'operator', 'walikota') NOT NULL DEFAULT 'operator';
|
|
||||||
|
|
||||||
-- 2. Add walikota user (password: walikota123, hash generated previously or will generate)
|
|
||||||
-- Let's use the hash for 'walikota123': $2y$10$w6QO8q/s28pX83JgY3WvM.Hw2N2G1aN9M0iR8L7Pq4z8i5u0N72E. (Wait, let's just create a PHP script to insert to avoid hash issues)
|
|
||||||
|
|
||||||
-- 3. Modify KEMISKINAN table
|
|
||||||
ALTER TABLE kemiskinan
|
|
||||||
ADD COLUMN tanggal_lahir DATE NULL AFTER nama_kk,
|
|
||||||
ADD COLUMN pendidikan VARCHAR(100) NULL AFTER tanggal_lahir,
|
|
||||||
ADD COLUMN riwayat_penyakit TEXT NULL AFTER pendidikan;
|
|
||||||
|
|
||||||
-- 4. Create LAPORAN_MASYARAKAT table
|
|
||||||
CREATE TABLE IF NOT EXISTS laporan_masyarakat (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama_pelapor VARCHAR(150) NOT NULL,
|
|
||||||
kontak VARCHAR(50) NULL,
|
|
||||||
deskripsi_laporan TEXT NOT NULL,
|
|
||||||
lat DECIMAL(10,7) NOT NULL,
|
|
||||||
lng DECIMAL(10,7) NOT NULL,
|
|
||||||
foto VARCHAR(255) NULL,
|
|
||||||
status ENUM('menunggu', 'diproses', 'selesai') NOT NULL DEFAULT 'menunggu',
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
-- 5. Create HISTORI_BANTUAN table
|
|
||||||
CREATE TABLE IF NOT EXISTS histori_bantuan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
kemiskinan_id INT NOT NULL,
|
|
||||||
jenis_bantuan VARCHAR(150) NOT NULL,
|
|
||||||
tanggal DATE NOT NULL,
|
|
||||||
keterangan TEXT NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
FOREIGN KEY (kemiskinan_id) REFERENCES kemiskinan(id) ON DELETE CASCADE
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
@@ -10,7 +10,6 @@ $jumlah_kk = isset($data['jumlah_kk']) ? intval($data['jumlah_kk']) :
|
|||||||
$alamat = $conn->real_escape_string($data['alamat'] ?? '');
|
$alamat = $conn->real_escape_string($data['alamat'] ?? '');
|
||||||
$lat = isset($data['lat']) ? floatval($data['lat']) : 0;
|
$lat = isset($data['lat']) ? floatval($data['lat']) : 0;
|
||||||
$lng = isset($data['lng']) ? floatval($data['lng']) : 0;
|
$lng = isset($data['lng']) ? floatval($data['lng']) : 0;
|
||||||
// Kolom baru
|
|
||||||
$tanggal_lahir = $conn->real_escape_string($data['tanggal_lahir'] ?? '');
|
$tanggal_lahir = $conn->real_escape_string($data['tanggal_lahir'] ?? '');
|
||||||
$pendidikan = $conn->real_escape_string($data['pendidikan'] ?? '');
|
$pendidikan = $conn->real_escape_string($data['pendidikan'] ?? '');
|
||||||
$riwayat_penyakit = $conn->real_escape_string($data['riwayat_penyakit'] ?? '');
|
$riwayat_penyakit = $conn->real_escape_string($data['riwayat_penyakit'] ?? '');
|
||||||
@@ -22,6 +21,7 @@ if ($id <= 0 || $nama_kk === '') {
|
|||||||
|
|
||||||
$tgl_val = !empty($tanggal_lahir) ? "'$tanggal_lahir'" : "NULL";
|
$tgl_val = !empty($tanggal_lahir) ? "'$tanggal_lahir'" : "NULL";
|
||||||
|
|
||||||
|
// 1. Update tabel kemiskinan
|
||||||
$sql = "UPDATE kemiskinan SET
|
$sql = "UPDATE kemiskinan SET
|
||||||
nama_kk='$nama_kk',
|
nama_kk='$nama_kk',
|
||||||
jumlah_kk=$jumlah_kk,
|
jumlah_kk=$jumlah_kk,
|
||||||
@@ -34,8 +34,18 @@ $sql = "UPDATE kemiskinan SET
|
|||||||
WHERE id=$id";
|
WHERE id=$id";
|
||||||
|
|
||||||
if ($conn->query($sql)) {
|
if ($conn->query($sql)) {
|
||||||
|
// 2. Sync data ke tabel warga (baris Kepala Keluarga)
|
||||||
|
$sql_warga = "UPDATE warga SET
|
||||||
|
nama_warga='$nama_kk',
|
||||||
|
tanggal_lahir=$tgl_val,
|
||||||
|
pendidikan='$pendidikan',
|
||||||
|
riwayat_penyakit='$riwayat_penyakit'
|
||||||
|
WHERE kemiskinan_id=$id AND hubungan_keluarga='Kepala Keluarga'";
|
||||||
|
$conn->query($sql_warga);
|
||||||
|
|
||||||
echo json_encode(["status" => "success"]);
|
echo json_encode(["status" => "success"]);
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(["status" => "error", "message" => $conn->error]);
|
echo json_encode(["status" => "error", "message" => $conn->error]);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
+132
-62
@@ -4098,9 +4098,9 @@
|
|||||||
map.fitBounds(bounds, { padding: [24, 24], maxZoom: 13 });
|
map.fitBounds(bounds, { padding: [24, 24], maxZoom: 13 });
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Layer kecamatan berhasil dimuat:', kecLayer.getLayers().length, 'fitur');
|
// log removed
|
||||||
})
|
})
|
||||||
.catch(err => console.log('Admin Kecamatan Error:', err));
|
.catch(err => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── MODE ── */
|
/* ── MODE ── */
|
||||||
@@ -4402,19 +4402,19 @@
|
|||||||
|
|
||||||
map.closePopup();
|
map.closePopup();
|
||||||
setMode(null);
|
setMode(null);
|
||||||
ensureLayerVisible('jalan', jalan.id);
|
ensureLayerVisible('jalan', d.id);
|
||||||
focusFeature('jalan', jalan.id);
|
focusFeature('jalan', d.id);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
console.log(response);
|
// log removed
|
||||||
alert("Gagal simpan jalan");
|
alert("Gagal simpan jalan");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err);
|
// log removed
|
||||||
alert("Error simpan jalan");
|
alert("Error simpan jalan");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -4423,7 +4423,7 @@
|
|||||||
|
|
||||||
const pts = normalizeLinePoints(d.pts);
|
const pts = normalizeLinePoints(d.pts);
|
||||||
if (pts.length < 2) {
|
if (pts.length < 2) {
|
||||||
console.log('Format koordinat jalan tidak valid:', d.pts);
|
// log removed
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4663,19 +4663,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
console.log(response);
|
// log removed
|
||||||
alert("Gagal simpan parsil");
|
alert("Gagal simpan parsil");
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => console.log("Parsil Error:", err));
|
.catch(err => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderParsil(d) {
|
function renderParsil(d) {
|
||||||
|
|
||||||
const pts = normalizePolyPoints(d.pts);
|
const pts = normalizePolyPoints(d.pts);
|
||||||
if (pts.length < 3) {
|
if (pts.length < 3) {
|
||||||
console.log('Format koordinat parsil tidak valid:', d.pts);
|
// log removed
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4904,7 +4904,7 @@
|
|||||||
state.featureRefs[type] = {};
|
state.featureRefs[type] = {};
|
||||||
if (type === 'kemiskinan') state.kkLayerRefs = {};
|
if (type === 'kemiskinan') state.kkLayerRefs = {};
|
||||||
const list = document.getElementById('list-' + type);
|
const list = document.getElementById('list-' + type);
|
||||||
list.querySelectorAll('.dcard').forEach(x => x.remove());
|
if (list) list.querySelectorAll('.dcard').forEach(x => x.remove());
|
||||||
|
|
||||||
state[type].forEach(d => {
|
state[type].forEach(d => {
|
||||||
if (type === 'spbu') {
|
if (type === 'spbu') {
|
||||||
@@ -5320,7 +5320,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => console.log("SPBU Error:", err));
|
.catch(err => {});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5358,7 +5358,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => console.log("Jalan Error:", err));
|
.catch(err => {});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5397,7 +5397,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => console.log("Parsil Error:", err));
|
.catch(err => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── KEMISKINAN ── */
|
/* ── KEMISKINAN ── */
|
||||||
@@ -5522,6 +5522,22 @@
|
|||||||
<label>Jumlah Jiwa <span class="req">*</span></label>
|
<label>Jumlah Jiwa <span class="req">*</span></label>
|
||||||
<input type="number" id="k-jumlah" value="${escapeAttr(draft.jumlah_kk || '1')}" min="1" oninput="window._kkVulnUpdate()">
|
<input type="number" id="k-jumlah" value="${escapeAttr(draft.jumlah_kk || '1')}" min="1" oninput="window._kkVulnUpdate()">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="km-field">
|
||||||
|
<label>Tanggal Lahir</label>
|
||||||
|
<input type="date" id="k-tgl-lahir">
|
||||||
|
</div>
|
||||||
|
<div class="km-field">
|
||||||
|
<label>Pendidikan Terakhir</label>
|
||||||
|
<select id="k-pendidikan">
|
||||||
|
<option value="">-- Pilih Pendidikan --</option>
|
||||||
|
<option value="Tidak Sekolah">Tidak Sekolah</option>
|
||||||
|
<option value="SD/Sederajat">SD/Sederajat</option>
|
||||||
|
<option value="SMP/Sederajat">SMP/Sederajat</option>
|
||||||
|
<option value="SMA/Sederajat">SMA/Sederajat</option>
|
||||||
|
<option value="D3/S1">D3/S1</option>
|
||||||
|
<option value="S2/S3">S2/S3</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="km-field">
|
<div class="km-field">
|
||||||
<label>Alamat <span class="req">*</span></label>
|
<label>Alamat <span class="req">*</span></label>
|
||||||
<input id="k-alamat" placeholder="Alamat" value="${escapeAttr(draft.alamat)}">
|
<input id="k-alamat" placeholder="Alamat" value="${escapeAttr(draft.alamat)}">
|
||||||
@@ -5654,13 +5670,13 @@
|
|||||||
renderDashboard();
|
renderDashboard();
|
||||||
if (window._tmpM) { map.closePopup(); map.removeLayer(window._tmpM); window._tmpM = null; }
|
if (window._tmpM) { map.closePopup(); map.removeLayer(window._tmpM); window._tmpM = null; }
|
||||||
setMode(null);
|
setMode(null);
|
||||||
ensureLayerVisible('jalan', jalan.id);
|
ensureLayerVisible('kemiskinan', d.id);
|
||||||
focusFeature('jalan', jalan.id);
|
focusFeature('kemiskinan', d.id);
|
||||||
} else {
|
} else {
|
||||||
alert("Gagal simpan: " + (response.message || 'Error'));
|
alert("Gagal simpan: " + (response.message || 'Error'));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(err => { console.log(err); alert("Terjadi error"); });
|
.catch(err => { alert("Terjadi error"); });
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderKemiskinan(d) {
|
function renderKemiskinan(d) {
|
||||||
@@ -5762,64 +5778,114 @@
|
|||||||
});
|
});
|
||||||
renderDashboard();
|
renderDashboard();
|
||||||
if (state.masjid.length) refreshType('masjid');
|
if (state.masjid.length) refreshType('masjid');
|
||||||
}).catch(err => console.log("Kemiskinan Error:", err));
|
}).catch(err => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
function openEditKemiskinan(id) {
|
function openEditKemiskinan(id) {
|
||||||
const d = getById('kemiskinan', id);
|
const d = getById('kemiskinan', id);
|
||||||
if (!d) return;
|
if (!d) return;
|
||||||
|
const existing = document.getElementById('ek-overlay');
|
||||||
|
if (existing) existing.remove();
|
||||||
|
|
||||||
const pendOpts = ['', 'Tidak Sekolah', 'SD/Sederajat', 'SMP/Sederajat', 'SMA/Sederajat', 'D3/S1', 'S2/S3'];
|
const pendOpts = ['', 'Tidak Sekolah', 'SD/Sederajat', 'SMP/Sederajat', 'SMA/Sederajat', 'D3/S1', 'S2/S3'];
|
||||||
const pendSelects = pendOpts.map(v => `<option value="${v}" ${d.pendidikan === v ? 'selected' : ''}>${v || '-- Pilih Pendidikan --'}</option>`).join('');
|
const pendSelects = pendOpts.map(v => `<option value="${v}" ${d.pendidikan === v ? 'selected' : ''}>${v || '-- Pilih Pendidikan --'}</option>`).join('');
|
||||||
const html = `<div class="pf" style="width:300px">
|
const curStatus = getKKStatus(id);
|
||||||
<h4><i class="fas fa-edit" style="color:var(--amber)"></i> Edit KK Miskin</h4>
|
|
||||||
<label>Nama Kepala Keluarga</label>
|
const overlay = document.createElement('div');
|
||||||
<input id="e-k-nama" value="${(d.nama_kk || '').replace(/"/g, '"')}">
|
overlay.className = 'hb-overlay';
|
||||||
<label>Jumlah Jiwa</label>
|
overlay.id = 'ek-overlay';
|
||||||
<input type="number" id="e-k-jumlah" value="${d.jumlah_kk}" min="1">
|
overlay.innerHTML = `
|
||||||
<label>Tanggal Lahir</label>
|
<div class="hb-box" style="max-width:520px">
|
||||||
<input type="date" id="e-k-tgl-lahir" value="${d.tanggal_lahir || ''}">
|
<div class="hb-head" style="background:linear-gradient(135deg,#f59e0b,#d97706)">
|
||||||
<label>Pendidikan Terakhir</label>
|
<div class="hb-head-icon"><i class="fas fa-user-edit"></i></div>
|
||||||
<select id="e-k-pendidikan">${pendSelects}</select>
|
<div style="flex:1;min-width:0">
|
||||||
<label>Alamat</label>
|
<div class="hb-head-title">Edit Data KK Miskin</div>
|
||||||
<textarea id="e-k-alamat">${(d.alamat || '').replace(/</g, '<')}</textarea>
|
<div style="font-size:11px;opacity:.8;margin-top:1px">${escapeText(d.nama_kk)}</div>
|
||||||
<label>Riwayat Penyakit</label>
|
</div>
|
||||||
<textarea id="e-k-riwayat" rows="2">${(d.riwayat_penyakit || '').replace(/</g, '<')}</textarea>
|
<button class="hb-head-close" onclick="document.getElementById('ek-overlay').remove()">
|
||||||
<label>Latitude</label>
|
<i class="fas fa-times"></i>
|
||||||
<input id="e-k-lat" value="${Number(d.lat).toFixed(6)}">
|
</button>
|
||||||
<label>Longitude</label>
|
</div>
|
||||||
<input id="e-k-lng" value="${Number(d.lng).toFixed(6)}">
|
<div class="hb-body">
|
||||||
<label>Status Penanganan</label>
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px">
|
||||||
<select id="e-k-status">
|
<div class="km-field" style="grid-column:1/-1">
|
||||||
<option ${getKKStatus(id) === 'Belum Ditangani' ? 'selected' : ''}>Belum Ditangani</option>
|
<label>Nama Kepala Keluarga *</label>
|
||||||
<option ${getKKStatus(id) === 'Diproses' ? 'selected' : ''}>Diproses</option>
|
<input id="ek-nama" value="${(d.nama_kk || '').replace(/"/g, '"')}" placeholder="Nama lengkap">
|
||||||
<option ${getKKStatus(id) === 'Sudah Ditangani' ? 'selected' : ''}>Sudah Ditangani</option>
|
</div>
|
||||||
</select>
|
<div class="km-field">
|
||||||
<button class="pbtn pbtn-y" onclick="saveEditKemiskinan(${id})">Simpan Perubahan</button>
|
<label>Jumlah Jiwa *</label>
|
||||||
</div>`;
|
<input type="number" id="ek-jumlah" value="${d.jumlah_kk}" min="1">
|
||||||
map.closePopup();
|
</div>
|
||||||
L.popup({ maxWidth: 330, autoPanPaddingTopLeft: [0, 80], autoPanPaddingBottomRight: [0, 20] }).setLatLng([d.lat, d.lng]).setContent(html).openOn(map);
|
<div class="km-field">
|
||||||
|
<label>Tanggal Lahir</label>
|
||||||
|
<input type="date" id="ek-tgl-lahir" value="${d.tanggal_lahir || ''}">
|
||||||
|
</div>
|
||||||
|
<div class="km-field" style="grid-column:1/-1">
|
||||||
|
<label>Pendidikan Terakhir</label>
|
||||||
|
<select id="ek-pendidikan">${pendSelects}</select>
|
||||||
|
</div>
|
||||||
|
<div class="km-field" style="grid-column:1/-1">
|
||||||
|
<label>Alamat *</label>
|
||||||
|
<textarea id="ek-alamat" rows="2" style="resize:vertical">${(d.alamat || '').replace(/</g, '<')}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="km-field" style="grid-column:1/-1">
|
||||||
|
<label>Riwayat Penyakit</label>
|
||||||
|
<textarea id="ek-riwayat" rows="2" style="resize:vertical">${(d.riwayat_penyakit || '').replace(/</g, '<')}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="km-field">
|
||||||
|
<label>Latitude</label>
|
||||||
|
<input id="ek-lat" value="${Number(d.lat).toFixed(6)}" style="font-family:monospace;font-size:12px">
|
||||||
|
</div>
|
||||||
|
<div class="km-field">
|
||||||
|
<label>Longitude</label>
|
||||||
|
<input id="ek-lng" value="${Number(d.lng).toFixed(6)}" style="font-family:monospace;font-size:12px">
|
||||||
|
</div>
|
||||||
|
<div class="km-field" style="grid-column:1/-1">
|
||||||
|
<label>Status Penanganan</label>
|
||||||
|
<select id="ek-status">
|
||||||
|
<option value="Belum Ditangani" ${curStatus === 'Belum Ditangani' ? 'selected' : ''}>Belum Ditangani</option>
|
||||||
|
<option value="Diproses" ${curStatus === 'Diproses' ? 'selected' : ''}>Diproses</option>
|
||||||
|
<option value="Sudah Ditangani" ${curStatus === 'Sudah Ditangani' ? 'selected' : ''}>Sudah Ditangani</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<button class="hb-submit" style="grid-column:1/-1;background:linear-gradient(135deg,#f59e0b,#d97706)" onclick="saveEditKemiskinan(${id})">
|
||||||
|
<i class="fas fa-save"></i> Simpan Perubahan
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
document.body.appendChild(overlay);
|
||||||
|
// Close on backdrop click
|
||||||
|
overlay.addEventListener('click', e => { if (e.target === overlay) overlay.remove(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveEditKemiskinan(id) {
|
function saveEditKemiskinan(id) {
|
||||||
const nama_kk = document.getElementById('e-k-nama').value.trim();
|
const nama_kk = document.getElementById('ek-nama')?.value.trim();
|
||||||
const jumlah_kk = document.getElementById('e-k-jumlah').value.trim();
|
const jumlah_kk = document.getElementById('ek-jumlah')?.value.trim();
|
||||||
const alamat = document.getElementById('e-k-alamat').value.trim();
|
const alamat = document.getElementById('ek-alamat')?.value.trim();
|
||||||
const lat = parseFloat(document.getElementById('e-k-lat').value);
|
const lat = parseFloat(document.getElementById('ek-lat')?.value);
|
||||||
const lng = parseFloat(document.getElementById('e-k-lng').value);
|
const lng = parseFloat(document.getElementById('ek-lng')?.value);
|
||||||
const status = document.getElementById('e-k-status')?.value || getKKStatus(id);
|
const status = document.getElementById('ek-status')?.value || getKKStatus(id);
|
||||||
const tanggal_lahir = document.getElementById('e-k-tgl-lahir')?.value || '';
|
const tanggal_lahir = document.getElementById('ek-tgl-lahir')?.value || '';
|
||||||
const pendidikan = document.getElementById('e-k-pendidikan')?.value || '';
|
const pendidikan = document.getElementById('ek-pendidikan')?.value || '';
|
||||||
const riwayat_penyakit = document.getElementById('e-k-riwayat')?.value.trim() || '';
|
const riwayat_penyakit = document.getElementById('ek-riwayat')?.value.trim() || '';
|
||||||
|
|
||||||
if (!nama_kk || !jumlah_kk || !alamat || !Number.isFinite(lat) || !Number.isFinite(lng)) {
|
if (!nama_kk || !jumlah_kk || !alamat || !Number.isFinite(lat) || !Number.isFinite(lng)) {
|
||||||
alert('Data belum valid'); return;
|
alert('Lengkapi data: Nama, Jumlah Jiwa, dan Alamat wajib diisi!'); return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const btn = document.querySelector('#ek-overlay .hb-submit');
|
||||||
|
if (btn) { btn.disabled = true; btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Menyimpan...'; }
|
||||||
|
|
||||||
fetch('api/update_kemiskinan.php', {
|
fetch('api/update_kemiskinan.php', {
|
||||||
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ id, nama_kk, jumlah_kk, alamat, lat, lng, tanggal_lahir, pendidikan, riwayat_penyakit })
|
body: JSON.stringify({ id, nama_kk, jumlah_kk, alamat, lat, lng, tanggal_lahir, pendidikan, riwayat_penyakit })
|
||||||
}).then(res => res.json()).then(resp => {
|
}).then(res => res.json()).then(resp => {
|
||||||
if (resp.status !== 'success') { alert('Gagal update'); return; }
|
if (resp.status !== 'success') {
|
||||||
|
alert('Gagal menyimpan: ' + (resp.message || 'Error'));
|
||||||
|
if (btn) { btn.disabled = false; btn.innerHTML = '<i class="fas fa-save"></i> Simpan Perubahan'; }
|
||||||
|
return;
|
||||||
|
}
|
||||||
const d = getById('kemiskinan', id); if (!d) return;
|
const d = getById('kemiskinan', id); if (!d) return;
|
||||||
d.nama_kk = nama_kk; d.jumlah_kk = parseInt(jumlah_kk); d.alamat = alamat; d.lat = lat; d.lng = lng;
|
d.nama_kk = nama_kk; d.jumlah_kk = parseInt(jumlah_kk); d.alamat = alamat; d.lat = lat; d.lng = lng;
|
||||||
d.tanggal_lahir = tanggal_lahir; d.pendidikan = pendidikan; d.riwayat_penyakit = riwayat_penyakit;
|
d.tanggal_lahir = tanggal_lahir; d.pendidikan = pendidikan; d.riwayat_penyakit = riwayat_penyakit;
|
||||||
@@ -5827,16 +5893,20 @@
|
|||||||
const mapStatus = getStatusMap();
|
const mapStatus = getStatusMap();
|
||||||
mapStatus[String(id)] = status;
|
mapStatus[String(id)] = status;
|
||||||
localStorage.setItem(statusStoreKey, JSON.stringify(mapStatus));
|
localStorage.setItem(statusStoreKey, JSON.stringify(mapStatus));
|
||||||
// Simpan status ke database
|
|
||||||
fetch('api/update_status_kemiskinan.php', {
|
fetch('api/update_status_kemiskinan.php', {
|
||||||
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ id: parseInt(id), status })
|
body: JSON.stringify({ id: parseInt(id), status })
|
||||||
}).catch(() => console.warn('Gagal simpan status ke DB'));
|
}).catch(() => {});
|
||||||
renderDashboard();
|
renderDashboard();
|
||||||
refreshType('kemiskinan');
|
refreshType('kemiskinan');
|
||||||
map.closePopup();
|
map.closePopup();
|
||||||
|
document.getElementById('ek-overlay')?.remove();
|
||||||
|
showToast('✅ Data berhasil disimpan', 'success');
|
||||||
focusFeature('kemiskinan', id);
|
focusFeature('kemiskinan', id);
|
||||||
}).catch(() => alert('Error update data'));
|
}).catch(() => {
|
||||||
|
alert('Error jaringan, coba lagi');
|
||||||
|
if (btn) { btn.disabled = false; btn.innerHTML = '<i class="fas fa-save"></i> Simpan Perubahan'; }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── MASJID ── */
|
/* ── MASJID ── */
|
||||||
@@ -5983,7 +6053,7 @@
|
|||||||
if (window._tmpC) { map.removeLayer(window._tmpC); window._tmpC = null; }
|
if (window._tmpC) { map.removeLayer(window._tmpC); window._tmpC = null; }
|
||||||
setMode(null);
|
setMode(null);
|
||||||
} else { alert("Gagal simpan database"); }
|
} else { alert("Gagal simpan database"); }
|
||||||
}).catch(err => { console.log(err); alert("Terjadi error"); });
|
}).catch(err => { alert("Terjadi error"); });
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderMasjid(d) {
|
function renderMasjid(d) {
|
||||||
@@ -6046,7 +6116,7 @@
|
|||||||
addCard('masjid', m.id, m.nama_masjid, m.pic_masjid, 'Rumah Ibadah', '#0f6250');
|
addCard('masjid', m.id, m.nama_masjid, m.pic_masjid, 'Rumah Ibadah', '#0f6250');
|
||||||
});
|
});
|
||||||
renderDashboard();
|
renderDashboard();
|
||||||
}).catch(err => console.log("Masjid Error:", err));
|
}).catch(err => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
function openEditMasjid(id) {
|
function openEditMasjid(id) {
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
$ch = curl_init('http://localhost/webtugas/01/api/save_jalan.php');
|
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($ch, CURLOPT_POST, true);
|
|
||||||
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"nama":"Jl. Test","status":"Kabupaten","panjang":100,"koordinat":[[0,0]]}');
|
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
|
|
||||||
$res = curl_exec($ch);
|
|
||||||
echo "RAW RESPONSE: |" . $res . "|\n";
|
|
||||||
echo "JSON DECODE: " . (json_decode($res) ? "OK" : json_last_error_msg());
|
|
||||||
?>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
$ch = curl_init('http://localhost/webtugas/01/api/save_jalan.php');
|
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($ch, CURLOPT_POST, true);
|
|
||||||
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"nama":"Jl. Test","status":"Jalan Kabupaten","panjang":100,"koordinat":[[0,0]]}');
|
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
|
|
||||||
$res = curl_exec($ch);
|
|
||||||
echo "RAW RESPONSE: |" . $res . "|\n";
|
|
||||||
echo "JSON DECODE: " . (json_decode($res) ? "OK" : json_last_error_msg());
|
|
||||||
?>
|
|
||||||
Reference in New Issue
Block a user