【问题标题】:Form inside bootstrap modal not updating values in mysql引导模式内的表单不更新mysql中的值
【发布时间】:2016-01-09 15:28:05
【问题描述】:

我的页面中有一个表格,其中显示有关某个请求的数据。

当我单击“添加 Cedula 编号”按钮时,它会显示引导模式。而在它里面,有一个表格。

ID 中的值 14 是该行的 ID,它来自以下代码:

<td class=" ">
    <button class="btn btn-primary btn-xs" id="<?php echo $data['idPerson'];?>" data-toggle="modal" data-target="#myModal"> Add Cedula Number </button>
</td>

现在,为了在模态中传递值,我使用了以下代码:

<script>
    $('#myModal').on('show.bs.modal', function (e) {
        $(this).find('.modal-body').html('   <div class="form-group"><label class="col-sm-3 control-label">ID</label><div class="col-sm-9"><input type="text" value = ' + e.relatedTarget.id +' class="form-control" id="person_id" name="person_id" readonly="readonly"></div></div>          <div class="form-group"> <label class="col-sm-3 control-label">Date</label><div class="col-sm-9"><input type="date" readonly="readonly" class="form-control" id="cedula_date" value="<?php echo date("Y-m-d");?>" name="cedula_date"></div></div>           <div class="form-group"> <label class="col-sm-3 control-label">Cedula Number</label><div class="col-sm-9"><input type="number" class="form-control" id="cedula_number" name="cedula_number"/></div></div>' );
    })
</script>

这是我的模态代码:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
            </div>
            <form id="addCedula" action="paid_cedula.php" class="form-horizontal calender" name = "addCedula" enctype="multipart/form-data" method="post" role="form">
            <div class="modal-body"></div>
            <div class="modal-footer" style="margin:0;">
            <button type="button" class="btn btn-default" 
                            data-dismiss="modal">Close</button>
            <button id="send" type="submit" class="btn btn-success" name="addCedula">Save Record</button>
             </div>
             </form>
        </div>
    </div>
</div>

我的 php 代码是这样的:

<?php
    include 'config.php';
        if(isset($_POST['addCedula'])){
        $id = $_POST['person_id'];
        $date = $_POST['cedula_date'];
        $number = $_POST['cedula_number'];                  
        $sql = mysqli_query($conn, "UPDATE person SET dateOfCedulaPayment='$date' AND cedulaNumber='$number' WHERE idPerson='$id';");
        mysqli_close($conn);                    
        }   
?>

我已经尝试查找错误几个小时了。我真的找不到在哪里。该值不会在数据库中更新。我哪里做错了?您的帮助将不胜感激。谢谢。

【问题讨论】:

  • 这不是 UPDATE 的工作方式dev.mysql.com/doc/en/update.htmlphp.net/manual/en/mysqli.error.php 会告诉你语法错误。
  • 嗨。所以我的查询有问题?
  • 您的查询肯定有问题。 RTM 带有我留给你的手动链接。
  • 你好。我发现了我的错误。是的,我的查询肯定是错误的。我删除了“AND”并更新了。它现在工作正常。非常感谢。
  • 不客气,干杯

标签: javascript php mysql twitter-bootstrap sql-update


【解决方案1】:

@Fred 的回答解决了问题(更新查询中的错误),这是我的 2 美分

这个脚本将数据传递给模态是多余的。

<script>
$('#myModal').on('show.bs.modal', function (e) {
    $(this).find('.modal-body').html('   <div class="form-group"><label class="col-sm-3 control-label">ID</label><div class="col-sm-9"><input type="text" value = ' + e.relatedTarget.id +' class="form-control" id="person_id" name="person_id" readonly="readonly"></div></div>          <div class="form-group"> <label class="col-sm-3 control-label">Date</label><div class="col-sm-9"><input type="date" readonly="readonly" class="form-control" id="cedula_date" value="<?php echo date("Y-m-d");?>" name="cedula_date"></div></div>           <div class="form-group"> <label class="col-sm-3 control-label">Cedula Number</label><div class="col-sm-9"><input type="number" class="form-control" id="cedula_number" name="cedula_number"/></div></div>' );
})

您只需将id="&lt;?php echo $data['idPerson'];?&gt;" 更改为data-id="&lt;?php echo $data['idPerson'];?&gt;",然后执行 3 到 4 行脚本即可完成相同的工作。

$(document).ready(function(){
    $('#myModal').on('show.bs.modal', function (e) {
        var id = $(e.relatedTarget).data('id');
        alert(id);
        $("#person_id").val(id);
     });
});

模态 HTML

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
            </div>
            <form id="addCedula" action="paid_cedula.php" class="form-horizontal calender" name = "addCedula" enctype="multipart/form-data" method="post" role="form">
                <div class="modal-body">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">ID</label>
                        <div class="col-sm-9">
                            <input type="text" value = "" class="form-control" id="person_id" name="person_id" readonly="readonly">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">Date</label>
                        <div class="col-sm-9">
                            <input type="date" readonly="readonly" class="form-control" id="cedula_date" value="<?php echo date("Y-m-d");?>" name="cedula_date">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">Cedula Number</label>
                        <div class="col-sm-9">
                            <input type="number" class="form-control" id="cedula_number" name="cedula_number"/>
                        </div>
                    </div>
                </div>
            <div class="modal-footer" style="margin:0;">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button id="send" type="submit" class="btn btn-success" name="addCedula">Save Record</button>
            </div>
            </form>
        </div>
    </div>
</div>

【讨论】:

  • 这绝对比我提供的代码好。我更新了我的代码,它的工作原理是一样的,而且这段代码要好得多。非常感谢。我真的不知道我可以使用 jquery 在几行中传递值。这次真是万分感谢。我永远感激不尽。
【解决方案2】:

您的查询不正确。这不是 UPDATE 的工作方式。您需要使用逗号而不是 AND 逻辑运算符 http://dev.mysql.com/doc/en/logical-operators.html

UPDATE person SET dateOfCedulaPayment='$date', cedulaNumber='$number' WHERE idPerson='$id';

参考:

检查查询中的错误会触发语法错误:

旁注:要查看您的查询(更新)是否真正成功,请使用mysqli_affected_rows()

如果不这样做,您可能会得到误报。

注意:

您当前的代码对SQL injection 开放。使用prepared statements,或PDOprepared statements

【讨论】:

  • 是的,我也被告知我的查询不正确。非常感谢你。
  • @WandaMaximoff 我在我的答案中添加了一些内容,这将有所帮助。
  • @WandaMaximoff 我想我也会为这个问题的未来访问者发布答案。
  • 感谢您的链接。我绝对需要复习 mysql 语法!!这些链接很有帮助!
  • @WandaMaximoff 我相信我在这里回答了真正的问题,但不客气。
猜你喜欢
  • 2019-08-18
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
相关资源
最近更新 更多