簡體   English   中英

通過 PHP 通過 HTML 表單顯示和更新 MYSQL 數據

[英]Display and update MYSQL data via HTML form via PHP


我試圖弄清楚如何在一頁中顯示數據庫表的所有行,所有值都是可編輯的,並且在它的末尾有一個提交按鈕。 我已經弄清楚了一半的等式,但由於某種原因它仍然無法正常工作。
我目前擁有的是一個表,顯示了 MYSQL 表的所有內容,並且所有字段都是可編輯的。 每個字段都有一個提交按鈕(這不是我想要的,但如果必須的話我願意解決),但是在從數據庫字段中編輯某些內容時,它會將我帶到一個頁面,該頁面給我一個語法錯誤:


以下來自FORM.PHP

<?php
include('config.php');
$result = mysqli_query($connect,"SELECT * FROM table123");
?>
<html>
<table>
<?php while ($res = mysqli_fetch_array($result)) { ?>
<tr>
        <form action="test.php" method="post">
            <td><input type="text" name="ret" value="<?php echo $res['ret']; ?>"></td>
            <td><input type="text" name="code" value="<?php echo $res['code']; ?>"></td>
            <td><input type="text" name="status" value="<?php echo $res['status']; ?>"></td>
            <td><input type="hidden" name="idnum" value="<?php echo $res['idnum']; ?>"></td>
            <td><input type="submit" name="update" value="Submit"></td>
        </form>
    </tr>
    <?php } ?>
</table>
</html>

以下來自 TEST.PHP

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$connect = mysqli_connect($servername, $username, $password, $dbname);
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['update'])) {
$sql = "UPDATE ssoretailerlist SET ret = '$_POST[ret]', code = '$_POST[code]', status = '$_POST[status]', WHERE idnum = '$_POST[idnum]'";
} else {
echo "Nothing was posted";
}
if (mysqli_query($connect, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($connect);
}
mysqli_close($connect);

語法錯誤是因為您有一個額外的逗號。 刪除 WHERE 之前的逗號,你應該沒問題。

$sql = "UPDATE ssoretailerlist
        SET ret = '$_POST[ret]', code = '$_POST[code]', status = '$_POST[status]'
        WHERE idnum = '$_POST[idnum]'";

每個字段都有一個提交按鈕 不是為循環內的每一行創建一個新表單並提交,而是在循環外手動一次。

<?php
include('config.php');
$result = mysqli_query($connect, "SELECT * FROM table123");
?>
<html>
<table>
<form action="test.php" method="post">
<?php while ($res = mysqli_fetch_array($result)) { ?>
    <tr>
    <td><input type="text" name="ret" value="<?php echo $res['ret']; ?>"/></td>
    <td><input type="text" name="code" value="<?php echo $res['code']; ?>"/></td>
    <td><input type="text" name="status" value="<?php echo $res['status']; ?>"/></td>
    <td><input type="hidden" name="idnum" value="<?php echo $res['idnum']; ?>"/></td>
    </tr>
<?php } ?>
</table>
<input type="submit" name="update" value="Submit"/>
</form>
</html>

您可能還想處理插入到表單中的輸出。 如果數據中有雙引號,它可能會破壞您的 HTML。 查看htmlspecialchars() 根據您的專欄標題,我認為不會,但始終牢記。

但是,每一行都具有完全相同的輸入名稱 這是個問題。 它如何知道選擇哪個retcodestatusidnum並將其關聯在一起? 首先,您要將名稱轉換為數組 然后,您希望遍歷idnum數組並執行多個UPDATE查詢以訪問其他數組中的相同鍵位置。 如果您遇到困難,請發布一個新問題。

最后你的 config.php 文件是非常必要的 您可能想閱讀有關 require_once() 與 include() 的此線程 如果包含失敗,最好拋出錯誤並處理它,而不是繼續處理腳本的其余部分。

暫無
暫無

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

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