簡體   English   中英

嘗試在php中更新mysql數據庫形式

[英]Trying to update mysql database form in php

當我從上一頁導航時,數據庫設法檢索值。 當我點擊“更新產品”按鈕時,

更新產品

出現。 我想要的是,當我單擊“更新產品”按鈕並事先修改了一條記錄時,我希望也使用這些值來更新數據庫,並顯示一條確認消息以確認這一點。

碼:

 <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>"; } } } } 

因此,我需要數據庫更新我輸入的新值,並且一旦按下“更新產品”按鈕,就會顯示原始值,並且該值不會在數據庫中更新。 為什么是這樣? 我沒有收到任何錯誤消息。 謝謝

錯誤是您不發布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>";
                                }
                                                                                        }
                                                    }
        }

嘗試將輸入字段的nameid分別設置為相同的值。 我看到您在php中從一個調用ID並從另一個輸入字段命名,這可能會導致函數失敗。

例如,例如:

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

您應該使用$_POST[]很好,因為表單的方法是POST (如果將其更改為GET,它將把所有值都放在url中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM