관리-도구
편집 파일: add-itinerary.php
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <?php include('include/head_admin.php'); $package = ''; $title = ''; $description = ''; if (isset($_GET['id']) && $_GET['id'] != '') { $id = get_safe_value($con, $_GET['id']); $image_required = ''; $res = mysqli_query($con, "SELECT * from `itinerary` where id='$id'"); $check = mysqli_num_rows($res); if ($check > 0) { $row = mysqli_fetch_assoc($res); $package = $row['package']; $title = $row['title']; $description = $row['description']; } else { header('location:all-itinerary.php'); die(); } } if (isset($_POST['submit_itinerary'])) { // Retrieve and sanitize form data $package = get_safe_value($con, $_POST['package']); $titles = $_POST['title']; $descriptions = $_POST['description']; // Initialize arrays to hold the data $titles_array = []; $descriptions_array = []; // $title = json_decode($titles); // Combine title and description into arrays for ($i = 0; $i < count($titles); $i++) { $titles_array[] = get_safe_value($con, $titles[$i]); $descriptions_array[] = get_safe_value($con, $descriptions[$i]); } // Convert arrays to JSON format $titles_json = json_encode($titles_array); $descriptions_json = json_encode($descriptions_array); // Initialize message $msg = ""; if ($msg == '') { if (isset($_GET['id']) && $_GET['id'] != '') { // Update existing record $id = $_GET['id']; // Ensure `$id` is set echo $update_query = "UPDATE `itinerary` SET `package`='$package', `title`='$titles_json', `description`='$descriptions_json' WHERE `id`='$id'"; mysqli_query($con, $update_query); } else { // Insert new record echo $insert_query = "INSERT INTO `itinerary` (`package`, `title`, `description`) VALUES ('$package', '$titles_json', '$descriptions_json')"; mysqli_query($con, $insert_query); } // Redirect after insertion header('location:all-itinerary.php'); die(); } } function generate_seo_friendly_title($title) { // Convert the title to lowercase $title = strtolower($title); // Replace spaces with dashes $title = str_replace(' ', '-', $title); // Remove special characters $title = preg_replace('/[^A-Za-z0-9\-]/', '', $title); return $title; } ?> </head> <body> <!-- tap on top start --> <div class="tap-top"> <span class="lnr lnr-chevron-up"></span> </div> <!-- tap on tap end --> <!-- page-wrapper start --> <div class="page-wrapper compact-wrapper" id="pageWrapper"> <!-- Page Header Start--> <?php include('include/header_admin.php'); ?> <!-- Page Header Ends--> <!-- Page Body start --> <div class="page-body-wrapper"> <!-- Page Sidebar Start--> <?php include('include/sidebar_admin.php'); ?> <!-- Page Sidebar Ends--> <div class="page-body"> <!-- New Product Add Start --> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="row"> <div class="col-sm-8 m-auto"> <div class="card"> <div class="card-body"> <div class="card-header-2"> <h5>Itinerary Information</h5> </div> <form method="post" enctype="multipart/form-data"> <div class="theme-form theme-form-2 mega-form"> <div class="mb-4 row align-items-center"> <label class="col-sm-3 col-form-label form-label-title">Select Package</label> <div class="col-sm-9"> <select class="js-example-basic-single w-100" name="package" required> <?php if ($package != '') { $sql1 = "SELECT * FROM `package` WHERE `id` = '$package'"; $res1 = mysqli_query($con, $sql1); $row1 = mysqli_fetch_assoc($res1); echo '<option value="' . $package . '" selected>' . $row1['name'] . '</option>'; } else { echo '<option value="" selected>Choose Package</option>'; } $sql = "SELECT * FROM `package`"; $res = mysqli_query($con, $sql); while ($row = mysqli_fetch_assoc($res)) { echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>'; } ?> </select> </div> </div> <?php if (isset($_GET['id'])) { ?> <?php $titles = json_decode($title); $descriptions = json_decode($description); foreach ($titles as $index => $title) { ?> <div class="mb-4 row align-items-center dynamic-field" data-id="<?= $index ?>"> <label class="form-label-title col-sm-3 mb-0">Title</label> <div class="col-sm-9"> <input class="form-control" name="title[]" type="text" placeholder="Title" value="<?= htmlspecialchars($title) ?>"> </div> <label class="form-label-title col-sm-3 mb-0">Description</label> <div class="col-sm-9"> <input class="form-control" name="description[]" type="text" placeholder="Description" value="<?= htmlspecialchars($descriptions[$index]) ?>"> </div> <div class="col-sm-12 text-end mt-2"> <?php if ($index > 0) { // Don't show remove button for the first item ?> <button type="button" class="btn btn-danger remove-field" data-id="<?= $index ?>">Remove</button> <?php } ?> </div> </div> <?php } ?> <?php } else { ?> <!-- Default empty input for new entry --> <div class="mb-4 row align-items-center dynamic-field" data-id="0"> <label class="form-label-title col-sm-3 mb-0">Title</label> <div class="col-sm-9"> <input class="form-control" name="title[]" type="text" placeholder="Title"> </div> <label class="form-label-title col-sm-3 mb-0">Description</label> <div class="col-sm-9"> <input class="form-control" name="description[]" type="text" placeholder="Description"> </div> <div class="col-sm-12 text-end mt-2"> <button type="button" class="btn btn-danger remove-field" data-id="0">Remove</button> </div> </div> <?php } ?> <div id="dynamic-fields"></div> <!-- Button to add more fields --> <button type="button" id="add-more" class="btn btn-primary mb-4 align-items-center">Add More</button> </div> <button class="btn btn-solid" name="submit_itinerary" type="submit">Submit</button> </form> </div> </div> </div> </div> </div> </div> </div> <!-- New Product Add End --> <!-- footer Start --> <?php include('include/footer_admin.php'); ?> <!-- footer En --> </div> <!-- Container-fluid End --> </div> <!-- Page Body End --> </div> <!-- page-wrapper End --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { // Add new fields dynamically $('#add-more').click(function() { // Get the current number of dynamic fields to ensure unique IDs let currentIndex = $('.dynamic-field').length ? Math.max(...$('.dynamic-field').map(function() { return parseInt($(this).data('id')); }).get()) + 1 : 0; let newField = ` <div class="mb-4 row align-items-center dynamic-field" data-id="${currentIndex}"> <label class="form-label-title col-sm-3 mb-0">Title</label> <div class="col-sm-9"> <input class="form-control" name="title[]" type="text" placeholder="Title"> </div> <label class="form-label-title col-sm-3 mb-0">Description</label> <div class="col-sm-9"> <input class="form-control" name="description[]" type="text" placeholder="Description"> </div> <div class="col-sm-12 text-end mt-2"> <button type="button" class="btn btn-danger remove-field" data-id="${currentIndex}">Remove</button> </div> </div>`; $('#dynamic-fields').append(newField); }); // Remove a specific field $(document).on('click', '.remove-field', function() { let fieldId = $(this).data('id'); $('.dynamic-field').filter(`[data-id="${fieldId}"]`).remove(); }); }); </script> <?php include('include/foot_admin.php'); ?> </body> </html>