[英]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:(£)</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:(£)</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>";
}
}
}
}
嘗試將輸入字段的name
和id
分別設置為相同的值。 我看到您在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.