【问题标题】:To run query from Bootstrap Modal从 Bootstrap 模式运行查询
【发布时间】:2015-11-05 10:20:53
【问题描述】:

在我的项目中,我在表格中有一个贪睡按钮,表格正在填充数据库中的值。我给那个按钮一个href,它将打开一个引导模式对话框。

在modal中,我已经调用了具体id的数量。

模态代码如下:

<?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 文件,该文件将在表单提交时调用并更新表格中该特定 ID 的提醒。

另一个文件被命名为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 什么的。有人可以帮忙吗?

【问题讨论】:

    标签: php mysql twitter-bootstrap bootstrap-modal


    【解决方案1】:

    使用您目前的方法,&lt;form&gt; 几乎没有错误

    1. 不要将id与表单操作URL action="saveSnoozeReminder.php?id='&lt;?php echo $reserver ?&gt;'"一起发布,创建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,这样表单就不会默认提交,也不需要在Ajax方法中使用e.preventdefaultreturn false
    2. &lt;form&gt; 中删除action="saveSnoozeReminder.php"
    3. ids输入你想通过Ajax传递值和Snooze按钮绑定它与jQuery点击功能

    表单 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 表单中,它将显示在来自 PHP saveSnoozeReminder.php 的 Ajax 响应中

    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.";
            }
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-11
      • 2019-03-17
      • 2022-01-10
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多