diff --git a/admin.php b/admin.php
new file mode 100644
index 0000000..c32af56
--- /dev/null
+++ b/admin.php
@@ -0,0 +1,368 @@
+exec("CREATE TABLE IF NOT EXISTS paket_wisata (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ nama VARCHAR(255) NOT NULL,
+ deskripsi TEXT,
+ durasi VARCHAR(100),
+ harga INT NOT NULL,
+ gambar VARCHAR(255)
+ )");
+
+ // Kendaraan Table
+ $pdo->exec("CREATE TABLE IF NOT EXISTS kendaraan (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ nama VARCHAR(255) NOT NULL,
+ jenis VARCHAR(100),
+ transmisi VARCHAR(50),
+ harga INT NOT NULL,
+ status VARCHAR(50) DEFAULT 'Tersedia',
+ gambar VARCHAR(255)
+ )");
+
+} catch (PDOException $e) {
+ die("Error creating table: " . $e->getMessage());
+}
+
+// --- HANDLE ACTIONS (DELETE & EDIT) ---
+if (isset($_GET['action'])) {
+ $action = $_GET['action'];
+ $id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
+
+ // Paket Wisata Actions
+ if ($action == 'delete_paket' && $id > 0) {
+ $stmt = $pdo->prepare("SELECT gambar FROM paket_wisata WHERE id = ?");
+ $stmt->execute([$id]);
+ $item = $stmt->fetch();
+ if ($item && !empty($item['gambar']) && file_exists($item['gambar'])) {
+ unlink($item['gambar']);
+ }
+ $stmt = $pdo->prepare("DELETE FROM paket_wisata WHERE id = ?");
+ if ($stmt->execute([$id])) {
+ $message .= '
Paket wisata berhasil dihapus.
';
+ }
+ } elseif ($action == 'edit_paket' && $id > 0) {
+ $stmt = $pdo->prepare("SELECT * FROM paket_wisata WHERE id = ?");
+ $stmt->execute([$id]);
+ $paket_to_edit = $stmt->fetch();
+ if ($paket_to_edit) $edit_mode_paket = true;
+ }
+
+ // Kendaraan Actions
+ if ($action == 'delete_kendaraan' && $id > 0) {
+ $stmt = $pdo->prepare("SELECT gambar FROM kendaraan WHERE id = ?");
+ $stmt->execute([$id]);
+ $item = $stmt->fetch();
+ if ($item && !empty($item['gambar']) && file_exists($item['gambar'])) {
+ unlink($item['gambar']);
+ }
+ $stmt = $pdo->prepare("DELETE FROM kendaraan WHERE id = ?");
+ if ($stmt->execute([$id])) {
+ $message .= 'Kendaraan berhasil dihapus.
';
+ }
+ } elseif ($action == 'edit_kendaraan' && $id > 0) {
+ $stmt = $pdo->prepare("SELECT * FROM kendaraan WHERE id = ?");
+ $stmt->execute([$id]);
+ $kendaraan_to_edit = $stmt->fetch();
+ if ($kendaraan_to_edit) $edit_mode_kendaraan = true;
+ }
+}
+
+
+// --- FORM PROCESSING (ADD, UPDATE, LOGO) ---
+if ($_SERVER["REQUEST_METHOD"] == "POST") {
+ $upload_dir = 'assets/images/';
+ $allowed_types = ['image/png', 'image/jpeg', 'image/gif', 'image/x-icon'];
+ $action = $_POST['action'] ?? '';
+
+ // Handle Logo Upload
+ if ($action == 'upload_logo') {
+ if (isset($_FILES['main_logo']) && $_FILES['main_logo']['error'] == 0) {
+ if (in_array($_FILES['main_logo']['type'], $allowed_types)) {
+ if (move_uploaded_file($_FILES['main_logo']['tmp_name'], $upload_dir . 'logo.png')) {
+ $message .= 'Logo utama berhasil diunggah.
';
+ }
+ }
+ }
+ if (isset($_FILES['logo_icon']) && $_FILES['logo_icon']['error'] == 0) {
+ if (in_array($_FILES['logo_icon']['type'], $allowed_types)) {
+ if (move_uploaded_file($_FILES['logo_icon']['tmp_name'], $upload_dir . 'favicon.png')) {
+ $message .= 'Ikon logo berhasil diunggah.
';
+ }
+ }
+ }
+ }
+
+ // Handle Add/Update Tour Package
+ if (in_array($action, ['add_paket', 'update_paket'])) {
+ $nama = $_POST['nama'] ?? '';
+ $harga = $_POST['harga'] ?? 0;
+ $id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
+
+ if (!empty($nama) && $harga > 0) {
+ $deskripsi = $_POST['deskripsi'] ?? '';
+ $durasi = $_POST['durasi'] ?? '';
+ $gambar = $_POST['gambar_existing'] ?? '';
+
+ if (isset($_FILES['gambar']) && $_FILES['gambar']['error'] == 0) {
+ if ($id > 0 && !empty($gambar) && file_exists($gambar)) unlink($gambar);
+ $img_name = time() . '_' . basename($_FILES['gambar']['name']);
+ $img_path = $upload_dir . $img_name;
+ if (move_uploaded_file($_FILES['gambar']['tmp_name'], $img_path)) $gambar = $img_path;
+ }
+
+ if ($action == 'add_paket') {
+ $stmt = $pdo->prepare("INSERT INTO paket_wisata (nama, deskripsi, durasi, harga, gambar) VALUES (?, ?, ?, ?, ?)");
+ if ($stmt->execute([$nama, $deskripsi, $durasi, $harga, $gambar])) $message .= 'Paket wisata berhasil ditambahkan.
';
+ } elseif ($action == 'update_paket' && $id > 0) {
+ $stmt = $pdo->prepare("UPDATE paket_wisata SET nama = ?, deskripsi = ?, durasi = ?, harga = ?, gambar = ? WHERE id = ?");
+ if ($stmt->execute([$nama, $deskripsi, $durasi, $harga, $gambar, $id])) $message .= 'Paket wisata berhasil diperbarui.
';
+ }
+ } else {
+ $message .= 'Nama dan Harga wajib diisi.
';
+ }
+ }
+
+ // Handle Add/Update Kendaraan
+ if (in_array($action, ['add_kendaraan', 'update_kendaraan'])) {
+ $nama = $_POST['nama_kendaraan'] ?? '';
+ $harga = $_POST['harga_kendaraan'] ?? 0;
+ $id = isset($_POST['id_kendaraan']) ? (int)$_POST['id_kendaraan'] : 0;
+
+ if (!empty($nama) && $harga > 0) {
+ $jenis = $_POST['jenis_kendaraan'] ?? '';
+ $transmisi = $_POST['transmisi_kendaraan'] ?? '';
+ $status = $_POST['status_kendaraan'] ?? 'Tersedia';
+ $gambar = $_POST['gambar_kendaraan_existing'] ?? '';
+
+ if (isset($_FILES['gambar_kendaraan']) && $_FILES['gambar_kendaraan']['error'] == 0) {
+ if ($id > 0 && !empty($gambar) && file_exists($gambar)) unlink($gambar);
+ $img_name = 'kendaraan_' . time() . '_' . basename($_FILES['gambar_kendaraan']['name']);
+ $img_path = $upload_dir . $img_name;
+ if (move_uploaded_file($_FILES['gambar_kendaraan']['tmp_name'], $img_path)) $gambar = $img_path;
+ }
+
+ if ($action == 'add_kendaraan') {
+ $stmt = $pdo->prepare("INSERT INTO kendaraan (nama, jenis, transmisi, harga, status, gambar) VALUES (?, ?, ?, ?, ?, ?)");
+ if ($stmt->execute([$nama, $jenis, $transmisi, $harga, $status, $gambar])) $message .= 'Kendaraan berhasil ditambahkan.
';
+ } elseif ($action == 'update_kendaraan' && $id > 0) {
+ $stmt = $pdo->prepare("UPDATE kendaraan SET nama = ?, jenis = ?, transmisi = ?, harga = ?, status = ?, gambar = ? WHERE id = ?");
+ if ($stmt->execute([$nama, $jenis, $transmisi, $harga, $status, $gambar, $id])) $message .= 'Kendaraan berhasil diperbarui.
';
+ }
+ } else {
+ $message .= 'Nama dan Harga Kendaraan wajib diisi.
';
+ }
+ }
+ // To prevent re-submission on refresh, we redirect.
+ if ($_SERVER["REQUEST_METHOD"] == "POST") {
+ header("Location: admin.php");
+ exit;
+ }
+}
+
+// Fetch all data
+$paket_wisata = $pdo->query("SELECT * FROM paket_wisata ORDER BY id DESC")->fetchAll();
+$kendaraan = $pdo->query("SELECT * FROM kendaraan ORDER BY id DESC")->fetchAll();
+
+?>
+
+
+
+
+
+ Admin Dashboard - JatimTour
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Manajemen Paket Wisata
+
+
+
+
+
+
+ | Gambar | Nama | Harga | Durasi | Aksi |
+
+
+ | Belum ada paket wisata. |
+
+
+ ; ?>?v=<?php echo time(); ?>) |
+ |
+ Rp |
+ |
+
+ Edit
+ Hapus
+ |
+
+
+
+
+
+
+
+
+
+
+
+
Manajemen Kendaraan
+
+
+
+
+
+
+
+
+
+
+
+ | Gambar | Nama | Jenis | Harga/Hari | Status | Aksi |
+
+
+ | Belum ada kendaraan. |
+
+
+ ; ?>?v=<?php echo time(); ?>) |
+ |
+ |
+ Rp |
+ |
+
+ Edit
+ Hapus
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.php b/index.php
index b04cf3c..fa8157e 100644
--- a/index.php
+++ b/index.php
@@ -1,16 +1,40 @@
+query("SELECT * FROM paket_wisata ORDER BY id DESC")->fetchAll();
+
+// Fetch Vehicles from DB
+$rental_vehicles = $pdo->query("SELECT * FROM kendaraan WHERE status = 'Tersedia' ORDER BY id DESC")->fetchAll();
+
+// Ganti nomor WhatsApp di bawah ini dengan nomor Admin/Operator Anda.
+$admin_whatsapp_number = '6281234567890'; // Format internasional tanpa '+' atau '0' di depan
+
+// --- Helper Function ---
+function generate_whatsapp_link($number, $product_name) {
+ $text = "Halo, saya tertarik untuk memesan " . $product_name . ". Mohon informasinya.";
+ return "https://api.whatsapp.com/send?phone=" . $number . "&text=" . urlencode($text);
+}
+?>
- Transport Rental Tour Travel
-
-
-
-
+ JatimTour - Rental Transport & Paket Wisata Jawa Timur
+
+
+
+
+
+
+
@@ -26,64 +50,16 @@
- 'Bromo Sunrise Adventure',
- 'description' => 'Nikmati keindahan matahari terbit di Gunung Bromo, lautan pasir, dan kawah yang menakjubkan.',
- 'price' => 'IDR 450.000 / orang',
- 'image' => 'assets/images/bromo.jpg'
- ],
- [
- 'name' => 'Kawah Ijen Blue Fire',
- 'description' => 'Saksikan fenomena api biru yang langka di Kawah Ijen dan pemandangan danau kawah yang memesona.',
- 'price' => 'IDR 550.000 / orang',
- 'image' => 'assets/images/ijen.jpg'
- ],
- [
- 'name' => 'Malang City Tour',
- 'description' => 'Jelajahi spot-spot ikonik di Kota Malang, mulai dari Jodipan, Alun-Alun, hingga kuliner legendaris.',
- 'price' => 'IDR 300.000 / orang',
- 'image' => 'assets/images/malang.jpg'
- ],
- ];
-
- $rental_vehicles = [
- [
- 'name' => 'Toyota Avanza',
- 'description' => 'Kapasitas 6 penumpang, AC, cocok untuk perjalanan keluarga di dalam kota.',
- 'price' => 'IDR 400.000 / hari',
- 'image' => 'assets/images/avanza.jpg'
- ],
- [
- 'name' => 'Hiace Commuter',
- 'description' => 'Kapasitas 14 penumpang, ideal untuk rombongan wisata dengan kenyamanan ekstra.',
- 'price' => 'IDR 1.200.000 / hari',
- 'image' => 'assets/images/hiace.jpg'
- ],
- [
- 'name' => 'Bus Pariwisata',
- 'description' => 'Kapasitas 50 penumpang, fasilitas lengkap untuk perjalanan jarak jauh antar kota.',
- 'price' => 'IDR 3.000.000 / hari',
- 'image' => 'assets/images/bus.jpg'
- ],
- ];
-
- // --- Helper Function ---
- function generate_whatsapp_link($number, $product_name) {
- $text = "Halo, saya tertarik untuk memesan " . $product_name . ". Mohon informasinya.";
- return "https://api.whatsapp.com/send?phone=" . $number . "&text=" . urlencode($text);
- }
- ?>
-