initial commit
This commit is contained in:
+155
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
// ============================================
|
||||
// api.php — API Backend WebGIS SPBU
|
||||
// ============================================
|
||||
|
||||
ini_set('display_errors', 0);
|
||||
error_reporting(0);
|
||||
|
||||
register_shutdown_function(function() {
|
||||
$err = error_get_last();
|
||||
if ($err && in_array($err['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {
|
||||
if (!headers_sent()) header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'PHP Error: ' . $err['message']]);
|
||||
}
|
||||
});
|
||||
|
||||
header('Content-Type: application/json');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
|
||||
require_once 'config.php';
|
||||
|
||||
$action = $_GET['action'] ?? $_POST['action'] ?? '';
|
||||
|
||||
// ── GET ALL ───────────────────────────────────────────
|
||||
if ($action === 'all') {
|
||||
$conn = getConnection();
|
||||
|
||||
$check = $conn->query("SHOW TABLES LIKE 'spbu'");
|
||||
if ($check->num_rows === 0) {
|
||||
echo json_encode(['success' => false, 'message' => "Tabel 'spbu' tidak ditemukan. Pastikan Anda sudah import file database.sql"]);
|
||||
$conn->close(); exit;
|
||||
}
|
||||
|
||||
$result = $conn->query(
|
||||
"SELECT id, nama, nomor_spbu, status, latitude, longitude,
|
||||
DATE_FORMAT(created_at, '%d %b %Y %H:%i') AS created_at
|
||||
FROM spbu ORDER BY created_at DESC"
|
||||
);
|
||||
|
||||
if (!$result) {
|
||||
echo json_encode(['success' => false, 'message' => 'Query error: ' . $conn->error]);
|
||||
$conn->close(); exit;
|
||||
}
|
||||
|
||||
$rows = [];
|
||||
while ($row = $result->fetch_assoc()) $rows[] = $row;
|
||||
echo json_encode(['success' => true, 'data' => $rows]);
|
||||
$conn->close();
|
||||
|
||||
// ── SAVE ──────────────────────────────────────────────
|
||||
} elseif ($action === 'save') {
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$nomor_spbu = trim($_POST['nomor_spbu'] ?? '');
|
||||
$status = trim($_POST['status'] ?? '');
|
||||
$latitude = $_POST['latitude'] ?? '';
|
||||
$longitude = $_POST['longitude'] ?? '';
|
||||
|
||||
if (!$nama || !$nomor_spbu || !$status || $latitude === '' || $longitude === '') {
|
||||
echo json_encode(['success' => false, 'message' => 'Semua field wajib diisi']); exit;
|
||||
}
|
||||
if (!in_array($status, ['buka 24 jam', 'tidak'])) {
|
||||
echo json_encode(['success' => false, 'message' => 'Status tidak valid']); exit;
|
||||
}
|
||||
|
||||
$lat = (double) $latitude;
|
||||
$lng = (double) $longitude;
|
||||
|
||||
$conn = getConnection();
|
||||
$stmt = $conn->prepare("INSERT INTO spbu (nama, nomor_spbu, status, latitude, longitude) VALUES (?,?,?,?,?)");
|
||||
if (!$stmt) { echo json_encode(['success' => false, 'message' => 'Prepare error: ' . $conn->error]); exit; }
|
||||
$stmt->bind_param('sssdd', $nama, $nomor_spbu, $status, $lat, $lng);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(['success' => true, 'message' => 'SPBU berhasil disimpan', 'id' => $stmt->insert_id]);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Execute error: ' . $conn->error]);
|
||||
}
|
||||
$stmt->close(); $conn->close();
|
||||
|
||||
// ── UPDATE ────────────────────────────────────────────
|
||||
} elseif ($action === 'update') {
|
||||
$id = (int) ($_POST['id'] ?? 0);
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$nomor_spbu = trim($_POST['nomor_spbu'] ?? '');
|
||||
$status = trim($_POST['status'] ?? '');
|
||||
$latitude = $_POST['latitude'] ?? '';
|
||||
$longitude = $_POST['longitude'] ?? '';
|
||||
|
||||
if (!$id || !$nama || !$nomor_spbu || !$status || $latitude === '' || $longitude === '') {
|
||||
echo json_encode(['success' => false, 'message' => 'Semua field wajib diisi']); exit;
|
||||
}
|
||||
|
||||
$lat = (double) $latitude;
|
||||
$lng = (double) $longitude;
|
||||
|
||||
$conn = getConnection();
|
||||
$stmt = $conn->prepare("UPDATE spbu SET nama=?, nomor_spbu=?, status=?, latitude=?, longitude=? WHERE id=?");
|
||||
if (!$stmt) { echo json_encode(['success' => false, 'message' => 'Prepare error: ' . $conn->error]); exit; }
|
||||
$stmt->bind_param('sssddi', $nama, $nomor_spbu, $status, $lat, $lng, $id);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(['success' => true, 'message' => 'Data berhasil diupdate']);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Execute error: ' . $conn->error]);
|
||||
}
|
||||
$stmt->close(); $conn->close();
|
||||
|
||||
// ── UPDATE KOORDINAT SAJA ─────────────────────────────
|
||||
} elseif ($action === 'update_coords') {
|
||||
$id = (int) ($_POST['id'] ?? 0);
|
||||
$latitude = $_POST['latitude'] ?? '';
|
||||
$longitude = $_POST['longitude'] ?? '';
|
||||
|
||||
if (!$id || $latitude === '' || $longitude === '') {
|
||||
echo json_encode(['success' => false, 'message' => 'Data tidak lengkap']); exit;
|
||||
}
|
||||
|
||||
$lat = (double) $latitude;
|
||||
$lng = (double) $longitude;
|
||||
|
||||
$conn = getConnection();
|
||||
$stmt = $conn->prepare("UPDATE spbu SET latitude=?, longitude=? WHERE id=?");
|
||||
if (!$stmt) { echo json_encode(['success' => false, 'message' => 'Prepare error: ' . $conn->error]); exit; }
|
||||
$stmt->bind_param('ddi', $lat, $lng, $id);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(['success' => true, 'message' => 'Koordinat berhasil diupdate']);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Execute error: ' . $conn->error]);
|
||||
}
|
||||
$stmt->close(); $conn->close();
|
||||
|
||||
// ── DELETE ────────────────────────────────────────────
|
||||
} elseif ($action === 'delete') {
|
||||
$id = (int) ($_POST['id'] ?? 0);
|
||||
if (!$id) { echo json_encode(['success' => false, 'message' => 'ID tidak valid']); exit; }
|
||||
|
||||
$conn = getConnection();
|
||||
$stmt = $conn->prepare("DELETE FROM spbu WHERE id=?");
|
||||
if (!$stmt) { echo json_encode(['success' => false, 'message' => 'Prepare error: ' . $conn->error]); exit; }
|
||||
$stmt->bind_param('i', $id);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(['success' => true, 'message' => 'Data berhasil dihapus']);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Execute error: ' . $conn->error]);
|
||||
}
|
||||
$stmt->close(); $conn->close();
|
||||
|
||||
// ── CEK KONEKSI (debug) ───────────────────────────────
|
||||
} elseif ($action === 'ping') {
|
||||
$conn = getConnection();
|
||||
echo json_encode(['success' => true, 'message' => 'Koneksi OK', 'db' => DB_NAME]);
|
||||
$conn->close();
|
||||
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Action tidak dikenali: ' . $action]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
// ============================================
|
||||
// config.php — Konfigurasi Database SPBU
|
||||
// ============================================
|
||||
|
||||
define('DB_HOST', 'localhost');
|
||||
define('DB_USER', 'root'); // Ganti jika perlu
|
||||
define('DB_PASS', ''); // Ganti jika perlu
|
||||
define('DB_NAME', 'webgis_spbu');
|
||||
|
||||
function getConnection() {
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
$conn->set_charset('utf8mb4');
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(['success' => false, 'message' => 'Koneksi gagal: ' . $conn->connect_error]));
|
||||
}
|
||||
return $conn;
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,23 @@
|
||||
-- ============================================
|
||||
-- WebGIS SPBU — Database Setup
|
||||
-- ============================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_spbu CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE webgis_spbu;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(255) NOT NULL,
|
||||
nomor_spbu VARCHAR(100) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL DEFAULT 'tidak',
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Contoh data awal
|
||||
INSERT INTO spbu (nama, nomor_spbu, status, latitude, longitude) VALUES
|
||||
('SPBU Pontianak Kota', '64.761.01', 'buka 24 jam', -0.0263, 109.3425),
|
||||
('SPBU Sungai Raya', '64.761.02', 'tidak', -0.0512, 109.3610),
|
||||
('SPBU Ahmad Yani', '64.761.03', 'buka 24 jam', -0.0198, 109.3580);
|
||||
+1393
File diff suppressed because it is too large
Load Diff
+1177
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user