dongxian3852 2019-02-02 19:37
浏览 55
已采纳

单击“提交”按钮时,数据不会更新

When i click on submit button it does not update data in database. I have looked many times to figure out what the problem is. I think problem is not with the code. It may be because of XAMPP. I'm using phpstorm and i have given database connection in both files. If you need additional information please let me know. Thanks

"This is supplier list file"

<table class="table-bordered table-striped table-highlight text-center">
                <tr class="bg-dark text-white">
                    <th>Sid</th>
                    <th>Name</th>
                    <th>Contact</th>
                    <th>Action</th>
                </tr>
                <?php
                    $q = "SELECT * FROM supplier";
                    $result = mysqli_query($db, $q) or die(mysqli_error($db));
                    while ($row = mysqli_fetch_array($result))
                {
                ?>
                <tr>
                    <td data-toggle="modal" data-target="#<?php echo $row[0];?>"><?php echo $row[0]; ?></td>
                    <td data-toggle="modal" data-target="#<?php echo $row[0];?>"><?php echo $row[1]; ?></td>
                    <td data-toggle="modal" data-target="#<?php echo $row[0];?>"><?php echo $row[3]; ?></td>
                    <td>
                        <button id="action" class="btn-primary"><a href="update.php?id=<?php echo $row[0]; ?>"> update </a></button>
                        <button id="danger" class="btn-danger"><a href="delete.php?id=<?php echo $row[0]; ?>"> delete </a></button>
                    </td>
                </tr>
          </table>

"This is update file" In update file in first php tag the data will be submitted upon clicking the save button and it should update data in database which is not happening and it is the main problem. In second php tag the code is actually fetching the data form database and is being displayed in texatbox.

<?php
    include ('../../../includes/connection.php');
    ob_start();
    if (isset($_POST['save'])){
        $id = $_POST['id'];
        $newName = $_POST['newname'];
        $newAddress = $_POST['newaddress'];
        $newContact = $_POST['newcontact'];

        $q = "UPDATE supplier SET name='$newName', address='$newAddress', contact='$newContact' WHERE sid='$id' ";
        $result = mysqli_query($db, $q) or die(mysqli_error($db));
        header('location:viewSupplierList.php');
    }
    ob_end_clean();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Update</title>
    <link type="text/css" rel="stylesheet" href="../../../css/menu.css">
    <link type="text/css" rel="stylesheet" href="../../../css/hover.css">
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" media="all">
</head>

<body>
    <form class="form" method="POST" action="update.php">
        <h3>Update Supplier Details</h3>
        <?php
            if (isset($_GET['id'])){
                $id = $_GET['id'];
                $q = "SELECT * FROM supplier WHERE sid='$id'";
                $result1 = mysqli_query($db, $q) or die(mysqli_error($db));
                $row = mysqli_fetch_array($result1);
            }
        ?>

        <label for="id">ID</label>
        <input type="text" id="id" name="id" value="<?php echo $row[0];?>" disabled>
        <label for="name">Name</label>
        <input type="text" id="name" name="newname" value="<?php echo $row[1];?>" title="Enter at least 5 characters!" required pattern="[a-zA-Z ]{5,20}" oninvalid="this.setCustomValidity('Only alphabets are allowed!')" oninput="this.setCustomValidity('')">
        <label for="address">Address</label>
        <input type="text" id="address" name="newaddress" value="<?php echo $row[2];?>" title="Enter at least 10 characters!" required pattern="[a-zA-Z0-9- ]{10,100}" oninvalid="this.setCustomValidity('Only alphanumerics are allowed!')" oninput="this.setCustomValidity('')">
        <label for="contact">Contact</label>
        <input type="text" id="contact" name="newcontact" value="<?php echo $row[3];?>" title="Enter at least 12 number!" required pattern="[0-9-]{11,12}" oninvalid="this.setCustomValidity('Numbers with or without hyphen are allowed!')" oninput="this.setCustomValidity('')">

        <input class="hvr-bubble-float-top" type="submit" name="save" value="save">
        <input class="hvr-bubble-float-top" type="submit" name="cancel" value="cancel">
    </form>
</body>
<script type="text/javascript" src="../../../js/menu.js" ></script>
</html>

Supplier table schema

sid|    name     |      address      | contact
--------------------------------------------------
 1 | Supplier A  | street abc blah.. | 038157575714
 2 | Supplier B  | street abc blah.. | 038157575714
 3 | Jhon        | street abc blah.. | 038157575714
 4 | Smith       | street abc blah.. | 038157575714
 5 | Michael     | street abc blah.. | 038157575714
  • 写回答

1条回答 默认 最新

  • dtz88967 2019-02-02 20:47
    关注

    So the problem here is that you have disabled the ID input. When a filed is disabled, it's not posted. Your update query receives an empty ID and there for does not execute the save. What you should do is make the input hidden instead.

    <label for="id">ID: <?php echo $row[0];?></label>
    <input type="text" id="id" name="id" value="<?php echo $row[0];?>" style="display:none">
    

    On a side not, You should really use the browser developper tools. When you send a POST/GET request, it's saved in the network tab. You can use that to see the submitted values in the request headers and there for, you would have seen that id is missing and that's why your query is not working ;-)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计