【问题标题】:Retrieve value from modal form and update database php从模态表单中检索值并更新数据库php
【发布时间】:2017-07-25 12:03:41
【问题描述】:

不确定我是否正确地处理了这个问题,但基本上我正在尝试使用模式编辑表格中的一行。到目前为止,我有 3 个类,它们是 createUser.php,它们具有表并处理检索行并将数据传递给 getuser.php 的请求。这将显示模态,现在我正在尝试从模态表单中检索值并相应地更新数据库。这就是getuser.php atm 的样子:

    <script type="text/javascript">
   $(document).ready(function(){

$("#edit-user").submit(function(e){

 e.preventDefault();

var uid = $('input[name="userid"]').val();
var username = $('input[name="username-update"]').val();
var password = $('input[name="password-update"]').val();
var role = $('input[name="role-update"]').val();

$.ajax({
  url: 'updateUser.php',
  type: 'POST',
  data: {
  id : uid, 
  username: username,
  password: password, 
  role: role
  },
  dataType: 'html'
 })
 .done(function(data){
  console.log(data); 
  $('#update-username').html(data.username);
  $('#update-password').html(data.password);
  $('#update-role').html(data.role);
})

}); 

</script>   
 <?php

  require_once 'database.php';


if (isset($_REQUEST['id'])) {

 $id = intval($_REQUEST['id']);
 $query = "SELECT * FROM users WHERE userid=:id";
 $stmt = $db->prepare($query);
 $stmt->execute(array(':id'=>$id));
 $row=$stmt->fetch(PDO::FETCH_ASSOC);
 extract($row);
  ?>

    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content row">
            <div class="modal-header custom-modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h4 class="modal-title">Edit Staff User Details</h4>
            </div>

            <div class="modal-body">


                                <form name="info_form" class="form-inline" action="createUser.php" method="post">
                                    <input type="hidden" name="userid" id="update-id" value="<?php echo $_REQUEST['id'] ?>">
                    <div class="form-group col-sm-12">
                                                <label>Username</label>
                                                    <input type="text" class="form-control" name="username-update" id="update-username" value="<?php echo $username ?>">
                    </div>
                    <div class="form-group col-sm-12">
                                                <label>Password</label>
                        <input type="text" class="form-control" name="password-update"  id="update-password" value="<?php echo $password ?>">
                    </div>
                    <div class="form-group col-sm-12">
                                                <label>Confirm Password</label>
                        <input type="text" class="form-control" name="confirmpass" id="update-confirmpassword" placeholder="Confirm Password">
                    </div>
                                            <div class="form-group col-sm-12">
                                                    <label>Role</label>
                                                    <select class="form-control" name="role-update" id="update-role" class="field-select">
                                                    <?php if($role == "staff"){ ?>
                                                    <option value="staff">Staff</option>
                                                    <option value="admin">Admin</option>
                                                    <option value="customer">Customer</option>
                                                    <?php }
                                                    else if($role == "admin") { ?>

                                                    <option value="admin">Admin</option>
                                                    <option value="staff">Staff</option>
                                                    <option value="customer">Customer</option>
                                                    <?php } else{ ?>
                                                    <option value="customer">Customer</option>
                                                    <option value="staff">Staff</option>
                                                    <option value="admin">Admin</option>
                                                    <?php } ?>

                                                    </select>
                                            </div>

                    <div class="form-group col-sm-12">
                        <button type="submit" class="btn btn-default pull-right" id="edit-user">Update</button>
                                                    <input type="hidden"    name="submit" value="TRUE" />
                    </div>

                </form>


                            </div>

        </div>

    </div>


<?php
 }
  ?>

另外我应该提到,出于某种奇怪的原因,我不得不两次编写该模态代码(一次在createUser.php 中,然后再次在getuser.php 中),否则模态不会弹出。这是我在updateUser.php 中的SQL 代码,我希望将数据发送到该代码。

<?php

require_once 'database.php';

  if(isset($_REQUEST['id'])){
     $row = intval($_REQUEST['id']);
     $updateUsername = $_REQUEST['username'];
     $updatePassword = $_REQUEST['password'];
   //$confirmpass = $_REQUEST['confirmpassword'];
     $updateRole = $_REQUEST['role'];

     $query = "UPDATE users SET username=$updateUsername,   password=$updatePassword, role=$updateRole WHERE userid=$row ";
    $stmt = $db->prepare($query);
    $stmt->execute();


}


 ?>

谁能看出我哪里出错了?还应该提到我在这里学到了一些新东西。此外,当我检查检查元素时,表单数据实际上是在提交时发送的。任何帮助深表感谢! :D

【问题讨论】:

    标签: javascript php jquery mysql twitter-bootstrap


    【解决方案1】:

    我认为您需要像这样将数据作为对象发送:

    data: {
          id : uid, 
          username: username,
          password: password, 
          role: role
      }
    

    我认为你的选择器也错了,试试这个:

     var uid = $('input[name="userid"]').val();
     var username = $('input[name="username-update"]').val();
     var password = $('input[name="password-update"]').val();
     var role = $('input[name="role-update"]').val();
    

    【讨论】:

    • 我进行了更改,但实际数据库并未更新,在我发送请求时在检查元素的表单数据中..实际数据在那里..有没有另一种方法来检索它表单数据?
    • 您能否分享您在网络选项卡中对此请求的回复?
    • 刚刚检查了响应中没有任何内容,但是调用了 updateUser.php 并且包含的​​表单数据是:id:5 用户名:Akeeb 密码:Testing1234 角色(这是一个下拉框
    • 我设法获得了下拉值,现在它只是实际提取该数据并在查询中使用它:/
    • 嘿@FraserReid,我设法弄明白了.. 感谢您的所有帮助好友,非常感谢,我非常感谢! :D
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多