2015-11-05 2 views
0

В моем проекте у меня есть кнопка повтора в таблице, и таблица заполняет значения из базы данных. Я даю href этой кнопке, которая откроет модальный диалог загрузки.Выполнение запроса из Bootstrap Modal

В модальном я назвал количество конкретного идентификатора.

Код для модального ниже:

<?php 
    require_once '../invoice/config.php'; 
    $reserver = $_GET["id"]; 
    echo $reserver; 
    $result = mysqli_query($con,"SELECT * FROM table_name where id = '$reserver'"); 
    $row = mysqli_fetch_array($result); 
?> 
<form id="modal-form" data-remote="true" method="post" action="saveSnoozeReminder.php?id='<?php echo $reserver ?>'" > 
    <div class="modal-body"> 
     <p>SELECT DATE FOR REMINDER </p> 
     <label>date</label> 
     <input type="date" name="snoozeReminderDate" /> 
     <label>amount</label> 
     <input type="text" name="amt" value="<?php echo $row['amount']; ?> " disabled > 
    </div> 
    <div class="modal-footer"> 
     <button type="submit" class="btn btn-default" data-dismiss="modal" value="">Snooze</button> 
     <button type="button" class="btn btn-default" data-dismiss="modal" onClick="window.location.reload()">Close</button> 
    </div> 
</form> 

Теперь дальше, как пользователь выберет дату и нажмите на кнопку повтора, я написал еще один PHP файл, который будет называться по форме представить и обновить напоминание для этого конкретного идентификатора в таблице.

Другой файл назван saveSnoozeReminder.php и код для него является:

<?php 
    require_once '../invoice/config.php'; 
    $recordid = $_GET["id"]; 
    echo $recordid; 
    $snoozedate = $_POST['snoozeReminderDate']; 
    echo $snoozedate; 
    $snoozeQuery = "UPDATE paymentremainder SET reminderdate='$snoozedate' WHERE id = $recordid";   
    if (mysqli_query($con, $snoozeQuery)) { 
     $message = 'Reminder Snoozed Successfully'; 
     echo "<SCRIPT type='text/javascript'> 
     alert('$message'); 
     window.location.replace('index.php'); 
     </SCRIPT>"; 
    } else { 
     return ""; 
    } 
?> 

После выполнения этого кода также, запрос на обновление не уволят. Есть ли способ, которым я могу использовать Ajax или что-то в этом роде. Может кто-то помочь с этим.

ответ

1

С текущим подходом, есть несколько ошибок в <form>

  1. Не публикуйте id вместе с формой действия URL action="saveSnoozeReminder.php?id='<?php echo $reserver ?>'", создать hidden вход и добавить id значения его, разместить его вместе с формой
  2. не disable вход использовать readonly

Форма HTML

<form id="modal-form" data-remote="true" method="post" action="saveSnoozeReminder.php" > 
<input type="hidden" name="id" value="<?php echo $reserver ?>"> 
    <div class="modal-body"> 
     <p>SELECT DATE FOR REMINDER </p> 
     <label>date</label> 
     <input type="date" name="snoozeReminderDate" /> 
     <label>amount</label> 
     <input type="text" name="amt" value="<?php echo $row['amount']; ?> " readonly > 
    </div> 
    //You don't need to close the modal `data-dismiss="modal"` when submitting the form, it will be auto closed 
    <div class="modal-footer"> 
     <button type="submit" class="btn btn-default" value="submit">Snooze</button> 
     <button type="button" class="btn btn-default" data-dismiss="modal" onClick="window.location.reload()">Close</button> 
    </div> 
</form> 

и в PHP, замените $_GET с $_POST и использовать isset функцию

<?php 
    require_once '../invoice/config.php'; 
    if(isset($_POST['id'])) { //isset function 
     $recordid = $_POST["id"]; //replace $_GET with $POST 
     echo $recordid; 
     $snoozedate = $_POST['snoozeReminderDate']; 
     echo $snoozedate; 
     $snoozeQuery = "UPDATE paymentremainder SET reminderdate='$snoozedate' WHERE id = '$recordid'"; 
     if (mysqli_query($con, $snoozeQuery)) { 
      $message = 'Reminder Snoozed Successfully'; 
       echo "<SCRIPT type='text/javascript'> 
       alert('$message'); 
       window.location.replace('index.php'); 
       </SCRIPT>"; 
     } else { 
      return ""; 
     } 
    } 
?> 

Это исправит проблемы, когда запрос на обновление не уволят.

Решение с Ajax

Вы просили альтернативного решения Ajax.

  1. тип изменения Snooze кнопки из submit в button так форма не будет представлять bydefault и нет необходимости использовать e.preventdefault или return false в методе Ajax
  2. удалить action="saveSnoozeReminder.php" из <form>
  3. дают ids для ввода вы хотите передать значения через Ajax и кнопку Snooze, чтобы связать ее с функцией jQuery click

Форма HTML

<form id="modal-form" data-remote="true" method="post"> 
<input type="hidden" name="id" id="reserverid" value="<?php echo $reserver ?>"> 
    <div class="modal-body"> 
     <p>SELECT DATE FOR REMINDER </p> 
     <label>date</label> 
     <input type="date" id="snoozeReminderDate" name="snoozeReminderDate" /> 
     <label>amount</label> 
     <input type="text" name="amt" id="amt" value="<?php echo $row['amount']; ?> " readonly > 
    </div> 
    //You don't need to close the modal `data-dismiss="modal"` Snooze button, otherwise it will close the modal 
    <div class="modal-footer"> 
     <button type="button" class="btn btn-default" value="submit" id="Snooze">Snooze</button> 
     <button type="button" class="btn btn-default" data-dismiss="modal" onClick="window.location.reload()">Close</button> 
    </div> 
//Ajax message here 
<div id="message"></div> 
</form> 

Теперь Ajax вызова метода

$(document).ready(function() { 
    $("#Snooze").click(function() { 
     var snoozeid = $('#reserverid').val(); //id of row 
     var snoozeReminder = $('#snoozeReminderDate').val(); //date value 
     var dataString = 'snoozeid=' + snoozeid + '&snoozeReminder=' + snoozeReminder; 
     alert(dataString); 
     $.ajax({ 
      type: "POST", 
      url: "saveSnoozeReminder.php", 
      data: dataString, 
      cache: false, 
      success: function (data) { 
       $("#message").html(data); 
      } 
     }); 
    }); 
}); 

$("#message").show(data); внутри формы HTML, который будет отображаться на ответ Ajax с PHP saveSnoozeReminder.php

и PHP saveSnoozeReminder.php будет

<?php 
    require_once '../invoice/config.php'; 
    if(isset($_POST['snoozeid'])) { 
     $recordid = $_POST["snoozeid"]; 
     $snoozedate = $_POST['snoozeReminder']; 
     $snoozeQuery = "UPDATE paymentremainder SET reminderdate='$snoozedate' WHERE id = '$recordid'"; 
     if (mysqli_query($con, $snoozeQuery)) { 
       echo "<strong>Success!</strong> Everything Is Good."; 
     } else { 
       echo "<strong>Error!</strong> Something Went Wrong."; 
     } 
    } 
?>