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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里