BLACKSITE
:
216.73.216.140
:
199.188.200.160 / jeddahhousingltd.com
:
Linux server383.web-hosting.com 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
:
/
home
/
jeddveug
/
www
/
admin
/
Upload File:
files >> /home/jeddveug/www/admin/offer_edit.php
<?php require_once __DIR__ . '/../config/db.php'; // Check authentication if (!isset($_SESSION['admin_id'])) { header('Location: login.php'); exit; } $id = (int)($_GET['id'] ?? 0); if (!$id) { header('Location: offers.php'); exit; } $stmt = $pdo->prepare("SELECT * FROM offers WHERE id = ?"); $stmt->execute([$id]); $offer = $stmt->fetch(); if (!$offer) { header('Location: offers.php'); exit; } $errors = []; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $title = trim($_POST['title'] ?? ''); $short_description = trim($_POST['short_description'] ?? ''); $description = trim($_POST['description'] ?? ''); $price = trim($_POST['price'] ?? ''); $discount_price = trim($_POST['discount_price'] ?? ''); $status = $_POST['status'] ?? 'active'; if (!$title) $errors[] = 'Title is required.'; $image_name = $offer['image']; if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { $allowed = ['image/jpeg', 'image/png', 'image/webp', 'image/gif']; if (in_array($_FILES['image']['type'], $allowed)) { // Delete old image if ($offer['image'] && file_exists('../uploads/offers/' . $offer['image'])) { unlink('../uploads/offers/' . $offer['image']); } $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION); $image_name = 'offer_' . time() . '_' . rand(100,999) . '.' . $ext; move_uploaded_file($_FILES['image']['tmp_name'], '../uploads/offers/' . $image_name); } else { $errors[] = 'Invalid image format.'; } } if (empty($errors)) { $stmt = $pdo->prepare("UPDATE offers SET title=?, short_description=?, description=?, image=?, price=?, discount_price=?, status=? WHERE id=?"); $stmt->execute([$title, $short_description, $description, $image_name, $price, $discount_price, $status, $id]); header('Location: offers.php?msg=updated'); exit; } } else { $title = $offer['title']; $short_description = $offer['short_description']; $description = $offer['description']; $price = $offer['price']; $discount_price = $offer['discount_price']; $status = $offer['status']; } $admin_page_title = 'Edit Offer'; require_once 'includes/header.php'; ?> <div class="max-w-3xl"> <a href="offers.php" class="text-sm text-primary-600 hover:text-primary-800 mb-4 inline-flex items-center"><i class="fas fa-arrow-left mr-2"></i> Back to Offers</a> <?php if (!empty($errors)): ?> <div class="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-xl mb-5 text-sm"> <?php foreach ($errors as $err): ?><p>• <?= htmlspecialchars($err) ?></p><?php endforeach; ?> </div> <?php endif; ?> <form method="POST" enctype="multipart/form-data" class="bg-white rounded-xl shadow-sm p-6 space-y-5"> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Title <span class="text-red-500">*</span></label> <input type="text" name="title" required value="<?= htmlspecialchars($title) ?>" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"> </div> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Short Description</label> <textarea name="short_description" rows="2" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"><?= htmlspecialchars($short_description) ?></textarea> </div> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Full Description</label> <textarea name="description" rows="5" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"><?= htmlspecialchars($description) ?></textarea> </div> <div class="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Price</label> <input type="text" name="price" value="<?= htmlspecialchars($price) ?>" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"> </div> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Discount Price</label> <input type="text" name="discount_price" value="<?= htmlspecialchars($discount_price) ?>" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"> </div> </div> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Image</label> <?php if ($offer['image']): ?> <div class="mb-2"><img src="../uploads/offers/<?= htmlspecialchars($offer['image']) ?>" class="w-32 h-24 object-cover rounded-lg"></div> <?php endif; ?> <input type="file" name="image" accept="image/*" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm file:mr-4 file:py-1 file:px-3 file:rounded-lg file:border-0 file:bg-primary-50 file:text-primary-700 file:font-medium file:text-sm"> <p class="text-xs text-gray-400 mt-1">Leave empty to keep current image</p> </div> <div> <label class="block text-sm font-medium text-gray-700 mb-1">Status</label> <select name="status" class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20"> <option value="active" <?= $status === 'active' ? 'selected' : '' ?>>Active</option> <option value="inactive" <?= $status === 'inactive' ? 'selected' : '' ?>>Inactive</option> </select> </div> <button type="submit" class="bg-primary-700 hover:bg-primary-800 text-white px-6 py-2.5 rounded-xl text-sm font-medium transition-colors"> <i class="fas fa-save mr-2"></i> Update Offer </button> </form> </div> <?php require_once 'includes/footer.php'; ?>