从模态表单中检索值并更新数据库php

Posted

技术标签:

【中文标题】从模态表单中检索值并更新数据库php【英文标题】:Retrieve value from modal form and update database 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

【问题讨论】:

【参考方案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

以上是关于从模态表单中检索值并更新数据库php的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MySQL 数据库中获取最后一个插入值并更新 Access 中的字段?

在 access 2007 中更新组合框值

在表单之间传递值并从数据库中检索数据

我无法使用 PHP 和 jQuery 将表单数据更新到 MySQL

检索数据表单数据库后列表视图不更新

根据表单输入更新数据库