更新記錄會同時用到 UPDATE 指令與 SELECT 指令,請先開啟 detail.php,我們要為輸出標題的那個儲存格加上動態連結。
<td><?php echo $row['nTitle']; ?> [<a href="edit.php?id=<?php echo $row['nIndex']; ?>">編輯</a>] [<a href="delete.php?id=<?php echo $row['nIndex']; ?>">刪除</a>] </td>
接著就能開始撰寫 edit.php 的 PHP 程式碼了,我們要先用 SELECT 指令搭配 URL 參數篩選並建立資料集,再用 UPDATE 指令更新記錄。我們已經準備好 edit.php 的表單了,以下是它的程式碼,請跟著本文的指示操作:
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> <table> <tr><td colspan="2">編輯訊息<input type="hidden" name="Index"/> </td></tr> <tr><td>標題</td><td><input type="text" name="Title"/></td></tr> <tr><td>作者</td><td><input type="text" name="Name"/></td></tr> <tr><td>內容</td><td><textarea name="Content"></textarea></td></tr> <tr><td colspan="2"><input type="submit" value="更新"/></td></tr> </table> </form>
我們要為 edit.php 加入 SELECT 指令與 UPDATE 指令,並修改網頁的 HTML 程式碼,完成後如下所示。我們將主鍵值儲存在隱藏欄位「Index」裡,提供 UPDATE 指令的 WHERE 子句使用。
<?php require_once 'lib_mysql.php'; $db = new Mysql; $db -> init('localhost', 'root', 'root', 'web_announce', '', 'utf8mb4_general_ci'); if (isset($_POST['Index'])) { foreach ($_POST as $value) if (empty($value)) die('<p style="color: red;">請填寫所有欄位</p>'); $value = $db -> checkValues($_POST); $value = "nTitle=$value[Title], nName=$value[Name], nContent=$value[Content]"; $db -> update('news', $value, "nIndex=$value[Index]"); header("Refresh: 0; url=index.php"); exit; } $index = isset($_GET['id']) ? intval($_GET['id']) : -1; $result = $db -> select('*', 'news', "nIndex=$index"); ?>
<?php $row = $result -> fetch_assoc(); ?> <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> <table> <tr><td colspan="2">編輯訊息 <input type="hidden" name="Index" value="<?php echo $row['nIndex']; ?>"/></td></tr> <tr><td>標題</td> <td><input type="text" name="Title" value="<?php echo $row['nTitle']; ?>"/></td></tr> <tr><td>作者</td> <td><input type="text" name="Name" value="<?php echo $row['nName']; ?>"/></td></tr> <tr><td>內容</td> <td><textarea name="Content"><?php echo $row['nContent']; ?> </textarea></td></tr> <tr><td colspan="2"><input type="submit" value="更新"/></td></tr> </table> </form> <?php $result -> free(); ?>