试图在php中更新mysql数据库表单

时间:2015-11-26 09:14:50

标签: php mysql

当我从上一页导航时,我的数据库设法检索值。 单击“更新产品”按钮时,将显示

更新产品

行。我想要的是当我点击“更新产品”按钮,并事先修改了一条记录时,我希望用这些值更新数据库,并显示一条确认信息以确认这一点。

代码:

<form id="updateForm" name="updateForm" action="<?php echo "?mode=update&ID=" . $productDetails["ID"]; ?>" method="post">                                
                    <div>
                        <label for="updateFormProductCostPrice">ID</label>
                        <input id="updateFormProductCostPrice" name="ID" type="text" readonly 
                               value="<?php echo $productDetails["ID"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductName">Film Name</label>
                        <input id="updateFormProductName" name="FilmName" type="text" 
                                value="<?php echo $productDetails["FilmName"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductDescription">Producer</label>
                        <input id="Producer" name="productDescription" type="text" 
                                value="<?php echo $productDetails["Producer"]; ?>">                
                    </div>
                    <div>
                        <label for="updateFormProductPrice">Year Published</label>
                        <input id="updateFormProductPrice" name="YearPublished" type="text" 
                               value="<?php echo $productDetails["YearPublished"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductStock">Stock:</label>
                        <input id="updateFormProductStock" name="Stock" type="text" 
                               value="<?php echo $productDetails["Stock"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductEan">Price:(&#163)</label>
                        <input id="updateFormProductEan" name="Price" type="text" 
                               value="<?php echo $productDetails["Price"]; ?>">
                    </div>
                    <div>
                        <input id="updateSubmit" name="updateSubmit" value="Update product" type="submit">
                    </div>
                </form>

PHP:

if (((!empty($_GET["mode"])) && (!empty($_GET["ID"]))) && ($_GET["mode"] == "update")) {
               echo "<h1>Update product</h1>";
                if (isset($_POST["updateSubmit"])) {
                    if ((!empty($_POST["ID"])) && (!empty($_POST["FilmName"])) 
                            && (!empty($_POST["Producer"])) && (!empty($_POST["YearPublished"])) 
                            && (!empty($_POST["Stock"])) && (!empty($_POST["Price"]))) {
                        $query = "UPDATE ProductManagement "
                                . "SET FilmName = '" . $_POST["FilmName"] . "', "
                                . "Producer = '" . $_POST["Producer"] . "', "
                                . "YearPublished = '" . $_POST["YearPublished"] . "', "
                                . "Stock = " . $_POST["Stock"] . ", "
                                . "Price = '" . $_POST["Price"] . "' "
                                . "WHERE ID=" . $_GET['ID'] . ";";
                        $result = mysqli_query($connection, $query);

                        if ($result == false) {
                            echo "<p>Updating failed.</p>";
                        } else{
                            echo "<p>Updated</p>";
                                }
                                                                                        }
                                                    }
        }

所以我需要数据库来更新我输入的新值,一旦按下“更新产品”按钮,就会显示原始值,并且数据库上的值不会更新。为什么是这样?我没有收到任何错误消息。感谢

2 个答案:

答案 0 :(得分:1)

错误是你没有POST这个ID,但你得到了ID值。具有readonly属性的输入框不会发布值。

变化:

if ((!empty($_POST["ID"])) && (!empty($_POST["FilmName"])) 

为:

if ((!empty($_GET["ID"])) && (!empty($_POST["FilmName"])) 

修改:要使其发挥作用所需的总更改:

HTML:

<form id="updateForm" name="updateForm" action="<?php echo "?mode=update&ID=" . $productDetails["ID"]; ?>" method="post">                                
                    <div>
                        <label for="updateFormProductID">ID</label>
                        <input id="updateFormProductID" name="ID" type="text" readonly 
                               value="<?php echo $productDetails["ID"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductName">Film Name</label>
                        <input id="updateFormProductName" name="FilmName" type="text" 
                                value="<?php echo $productDetails["FilmName"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductProducer">Producer</label>
                        <input id="updateFormProductProducer" name="Producer" type="text" 
                                value="<?php echo $productDetails["Producer"]; ?>">                
                    </div>
                    <div>
                        <label for="updateFormProductYearPublished">Year Published</label>
                        <input id="updateFormProductYearPublished" name="YearPublished" type="text" 
                               value="<?php echo $productDetails["YearPublished"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductStock">Stock:</label>
                        <input id="updateFormProductStock" name="Stock" type="text" 
                               value="<?php echo $productDetails["Stock"]; ?>">
                    </div>
                    <div>
                        <label for="updateFormProductPrice">Price:(&#163)</label>
                        <input id="updateFormProductPrice" name="Price" type="text" 
                               value="<?php echo $productDetails["Price"]; ?>">
                    </div>
                    <div>
                        <input id="updateSubmit" name="updateSubmit" value="Update product" type="submit">
                    </div>
                </form>

PHP:

if (((!empty($_GET["mode"])) && (!empty($_GET["ID"]))) && ($_GET["mode"] == "update")) {
               echo "<h1>Update product</h1>";
                if (isset($_POST["updateSubmit"])) {
                    if ((!empty($_GET["ID"])) && (!empty($_POST["FilmName"])) 
                            && (!empty($_POST["Producer"])) && (!empty($_POST["YearPublished"])) 
                            && (!empty($_POST["Stock"])) && (!empty($_POST["Price"]))) {
                        $query = "UPDATE ProductManagement "
                                . "SET FilmName = '" . $_POST["FilmName"] . "', "
                                . "Producer = '" . $_POST["Producer"] . "', "
                                . "YearPublished = '" . $_POST["YearPublished"] . "', "
                                . "Stock = " . $_POST["Stock"] . ", "
                                . "Price = '" . $_POST["Price"] . "' "
                                . "WHERE ID=" . $_GET['ID'] . ";";
                        $result = mysqli_query($connection, $query);

                        if ($result == false) {
                            echo "<p>Updating failed.</p>";
                        } else{
                            echo "<p>Updated</p>";
                                }
                                                                                        }
                                                    }
        }

答案 1 :(得分:0)

尝试将输入字段的nameid设置为相同的值。我看到你从一个调用id并从你的php中的另一个输入字段命名,这可能导致该函数失败。

例如:

<label for="ID">ID</label>
<input id="ID" name="ID" type="text" readonly value="<?php echo $productDetails["ID"]; ?>">

使用$_POST[]时,您应该没问题,因为表单的方法是POST。 (如果将其更改为GET,则会将所有值都放在网址中)