🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:rentals.php
<?php define('PAGE_TITLE', 'Rentals'); require_once 'includes/header.php'; if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action'])) { $action = $_POST['action']; if ($action == 'add_cat' || $action == 'edit_cat') { $name = cleanInput($_POST['name']); $slug = cleanInput($_POST['slug']); $desc = cleanInput($_POST['description']); if ($action == 'add_cat') { $stmt = $conn->prepare("INSERT INTO rental_categories (name, slug, description) VALUES (?,?,?)"); $stmt->bind_param("sss",$name,$slug,$desc); } else { $id = intval($_POST['id']); $stmt = $conn->prepare("UPDATE rental_categories SET name=?, slug=?, description=? WHERE id=?"); $stmt->bind_param("sssi",$name,$slug,$desc,$id); } $stmt->execute(); } elseif ($action == 'add_item' || $action == 'edit_item') { $cat = intval($_POST['category_id']); $name = cleanInput($_POST['name']); $slug = cleanInput($_POST['slug']); $desc = cleanInput($_POST['description']); $price = floatval($_POST['price']); $qty = intval($_POST['quantity']); $avail = intval($_POST['available_quantity']); $features = cleanInput($_POST['features']); $image = ''; if (!empty($_FILES['image']['name'])) { $upload = uploadFile($_FILES['image'], __DIR__ . '/../uploads/packages/'); if ($upload) $image = 'uploads/packages/'.$upload; } if ($action == 'add_item') { $stmt = $conn->prepare("INSERT INTO rental_items (category_id, name, slug, description, price, quantity, available_quantity, features, image) VALUES (?,?,?,?,?,?,?,?,?)"); $stmt->bind_param("isssdiiss", $cat, $name, $slug, $desc, $price, $qty, $avail, $features, $image); } else { $id = intval($_POST['id']); if ($image) { $stmt = $conn->prepare("UPDATE rental_items SET category_id=?, name=?, slug=?, description=?, price=?, quantity=?, available_quantity=?, features=?, image=? WHERE id=?"); $stmt->bind_param("isssdiissi", $cat, $name, $slug, $desc, $price, $qty, $avail, $features, $image, $id); } else { $stmt = $conn->prepare("UPDATE rental_items SET category_id=?, name=?, slug=?, description=?, price=?, quantity=?, available_quantity=?, features=? WHERE id=?"); $stmt->bind_param("isssdiisi", $cat, $name, $slug, $desc, $price, $qty, $avail, $features, $id); } } $stmt->execute(); } elseif ($action == 'delete_cat') { $conn->query("DELETE FROM rental_categories WHERE id=" . intval($_POST['id'])); } elseif ($action == 'delete_item') { $conn->query("DELETE FROM rental_items WHERE id=" . intval($_POST['id'])); } $msg = '<div class="alert alert-success">Saved!</div>'; } $rentalCats = getRentalCategories(); $rentalItems = getRentalItems(); $inquiries = $conn->query("SELECT * FROM rental_inquiries ORDER BY created_at DESC")->fetch_all(MYSQLI_ASSOC); ?> <div class="d-flex justify-content-between align-items-center mb-4"> <h4 class="fw-bold text-navy mb-0"><i class="bi bi-cart text-warning me-2"></i>Rental Management</h4> </div> <?= $msg ?? '' ?> <ul class="nav nav-tabs mb-4" id="rentalTabs"> <li class="nav-item"><a class="nav-link active" data-bs-toggle="tab" href="#items">Rental Items</a></li> <li class="nav-item"><a class="nav-link" data-bs-toggle="tab" href="#categories">Categories</a></li> <li class="nav-item"><a class="nav-link" data-bs-toggle="tab" href="#inquiries">Inquiries (<?= count($inquiries) ?>)</a></li> </ul> <div class="tab-content"> <div class="tab-pane fade show active" id="items"> <div class="premium-card p-4"> <div class="d-flex justify-content-between mb-3"><h5 class="fw-bold mb-0">Items</h5><button class="btn btn-premium btn-sm" data-bs-toggle="modal" data-bs-target="#itemModal"><i class="bi bi-plus-lg"></i> Add Item</button></div> <table class="table table-hover datatable"><thead><tr><th>ID</th><th>Name</th><th>Category</th><th>Price</th><th>Qty</th><th>Avail</th><th>Action</th></tr></thead> <tbody><?php foreach ($rentalItems as $item): ?><tr><td><?= $item['id'] ?></td><td><?= htmlspecialchars($item['name']) ?></td><td><?= $item['category_name'] ?></td><td><?= formatPrice($item['price']) ?></td><td><?= $item['quantity'] ?></td><td><?= $item['available_quantity'] ?></td> <td><button class="btn btn-sm btn-outline-secondary edit-item" data='<?= json_encode($item) ?>'><i class="bi bi-pencil"></i></button> <form method="post" class="d-inline" onsubmit="return confirm('Delete?')"><input type="hidden" name="action" value="delete_item"><input type="hidden" name="id" value="<?= $item['id'] ?>"><button class="btn btn-sm btn-outline-danger"><i class="bi bi-trash"></i></button></form></td></tr> <?php endforeach; ?></tbody></table> </div> </div> <div class="tab-pane fade" id="categories"> <div class="premium-card p-4"> <div class="d-flex justify-content-between mb-3"><h5 class="fw-bold mb-0">Categories</h5><button class="btn btn-premium btn-sm" data-bs-toggle="modal" data-bs-target="#rentalCatModal"><i class="bi bi-plus-lg"></i> Add Category</button></div> <table class="table table-hover"><thead><tr><th>ID</th><th>Name</th><th>Slug</th><th>Action</th></tr></thead> <tbody><?php foreach ($rentalCats as $rc): ?><tr><td><?= $rc['id'] ?></td><td><?= $rc['name'] ?></td><td><?= $rc['slug'] ?></td> <td><form method="post" class="d-inline" onsubmit="return confirm('Delete?')"><input type="hidden" name="action" value="delete_cat"><input type="hidden" name="id" value="<?= $rc['id'] ?>"><button class="btn btn-sm btn-outline-danger"><i class="bi bi-trash"></i></button></form></td></tr> <?php endforeach; ?></tbody></table> </div> </div> <div class="tab-pane fade" id="inquiries"> <div class="premium-card p-4"> <table class="table table-hover datatable"><thead><tr><th>ID</th><th>Name</th><th>Email</th><th>Phone</th><th>Items</th><th>Date</th><th>Status</th><th>Action</th></tr></thead> <tbody><?php foreach ($inquiries as $inq): ?><tr><td><?= $inq['id'] ?></td><td><?= htmlspecialchars($inq['name']) ?></td><td><?= $inq['email'] ?></td><td><?= $inq['phone'] ?></td> <td><?= substr($inq['items'],0,50) ?>...</td><td><?= $inq['event_date']?:'-' ?></td><td><?= getStatusBadge($inq['status']) ?></td> <td><button class="btn btn-sm btn-outline-premium" onclick="Swal.fire({title:'Inquiry #<?= $inq['id'] ?>',html:'<b>Items:</b> <?= nl2br(htmlspecialchars($inq['items'])) ?><br><b>Notes:</b> <?= nl2br(htmlspecialchars($inq['notes']??"N/A")) ?>'})"><i class="bi bi-eye"></i></button></td></tr> <?php endforeach; ?></tbody></table> </div> </div> </div> <script> $('.edit-item').on('click',function(){ var item=$(this).data('item');$('#itemAction').val('edit_item');$('#itemId').val(item.id); var form=$(this).closest('.tab-pane').find('#itemModal'); // find the modal form.find('[name=category_id]').val(item.category_id);form.find('[name=name]').val(item.name); form.find('[name=slug]').val(item.slug);form.find('[name=price]').val(item.price); form.find('[name=quantity]').val(item.quantity);form.find('[name=available_quantity]').val(item.available_quantity); form.find('[name=description]').val(item.description||'');form.find('[name=features]').val(item.features||''); $('#itemModal').modal('show'); }); </script> <div class="modal fade" id="itemModal"><div class="modal-dialog modal-lg"><div class="modal-content"> <form method="post" enctype="multipart/form-data"><div class="modal-header"><h5 class="modal-title">Rental Item</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <div class="modal-body"> <input type="hidden" name="action" id="itemAction" value="add_item"><input type="hidden" name="id" id="itemId" value="0"> <div class="row g-3"> <div class="col-6"><label class="form-label">Category</label><select name="category_id" class="form-select" required><?php foreach($rentalCats as $rc): ?><option value="<?= $rc['id'] ?>"><?= $rc['name'] ?></option><?php endforeach; ?></select></div> <div class="col-6"><label class="form-label">Name</label><input type="text" name="name" class="form-control" required></div> <div class="col-6"><label class="form-label">Slug</label><input type="text" name="slug" class="form-control" required></div> <div class="col-6"><label class="form-label">Price</label><input type="number" name="price" class="form-control" step="0.01" required></div> <div class="col-4"><label class="form-label">Quantity</label><input type="number" name="quantity" class="form-control" value="1"></div> <div class="col-4"><label class="form-label">Available</label><input type="number" name="available_quantity" class="form-control" value="1"></div> <div class="col-4"><label class="form-label">Image</label><input type="file" name="image" class="form-control" accept="image/*"></div> <div class="col-12"><label class="form-label">Description</label><textarea name="description" class="form-control" rows="2"></textarea></div> <div class="col-12"><label class="form-label">Features (one per line)</label><textarea name="features" class="form-control" rows="2"></textarea></div> </div> </div><div class="modal-footer"><button type="submit" class="btn btn-premium">Save</button></div></form> </div></div></div> <div class="modal fade" id="rentalCatModal"><div class="modal-dialog"><div class="modal-content"> <form method="post"><div class="modal-header"><h5 class="modal-title">Rental Category</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <div class="modal-body"> <input type="hidden" name="action" value="add_cat"> <div class="mb-3"><label class="form-label">Name</label><input type="text" name="name" class="form-control" required></div> <div class="mb-3"><label class="form-label">Slug</label><input type="text" name="slug" class="form-control" required></div> <div class="mb-3"><label class="form-label">Description</label><textarea name="description" class="form-control" rows="2"></textarea></div> </div><div class="modal-footer"><button type="submit" class="btn btn-premium">Save</button></div></form> </div></div></div> <?php require_once 'includes/footer.php'; ?>
Save Changes
Cancel
Create New File
Create New Folder