WEB ◆ TS Library ◆ 熱衷分享 ◆ 享受教學相長 ◆ 無形的網絡擁有熱情溫度的傳遞

2-6. mysqli 擴展函式 修改留言

顯示內容的旁邊加上修改的連結

<p>
  留言者:[<?php echo $row_RS_mb['mb_id']; ?>]
  <?php echo $row_RS_mb['mb_name']; ?>
  [<?php echo $row_RS_mb['mb_time']; ?>]
  <a href="mb_modify.php?mb_id=<?php echo $row_RS_mb['mb_id']; ?>">修改</a>
</p>

設計修改內容的表單

修改內容的表單相當於新增的表單, 可以拷貝過來再修改。

<form method="post" action="mb_modify.php" class="mbForm">
  <input type="text" name="mb_name" maxlength="20" require placeholder="請輸入留言者姓名">
  <textarea name="mb_content" rows="5" require placeholder="請輸入留言內容....."></textarea>
  <input type="submit" value="確定更新留言">
  <input type="reset" value="清除重寫">
  <input type="hidden" name="mb_id" value="">
</form>

CSS的部份與mb_index.php相同, 可以拷貝過來。

連線資料庫, 取得要修改內容的記錄

<?php
require_once('../shared/conn.php');
include('../shared/assist.php');
//如果沒有需要時區及session功能, 那麼 assist.php 檔案也可以不引入
 
//查詢出要修改的資料==============
$mb_id = -1;
if( isset($_GET['mb_id']) ){
  $mb_id = $_GET['mb_id'];
}
 
$sql_str = "SELECT * 
            FROM mb 
            WHERE mb_id = $mb_id";
$RS_mb = mysqli_query($conn, $sql_str);
$row_RS_mb = mysqli_fetch_assoc($RS_mb);
print_r($row_RS_mb);
?>

將取得的資料放在表單中

<h1>修改[<?php echo $row_RS_mb['mb_id']; ?>]留言</h1>
 
<form method="post" action="mb_modify.php" class="mbForm">

  <!-- 在留言者欄位中加上 value 屬性 -->
  <input type="text" name="mb_name" maxlength="20" require placeholder="請輸入留言者姓名" 
         value="<?php echo $row_RS_mb['mb_name']; ?>">

  <!-- 在留言內容標籤之中加上 留言內容 的資料,標籤頭尾之間即為內容,程式碼不適合換行及空格 -->
  <textarea name="mb_content" rows="5" require 
            placeholder="請輸入留言內容....."><?php echo $row_RS_mb['mb_content']; ?></textarea>

  <input type="submit" value="確定更新留言">
  <input type="reset" value="清除重寫">
  <input type="hidden" name="mb_id" value="<?php echo $row_RS_mb['mb_id']; ?>">
</form>

確定更新記錄

在 mb_modify.php 檔案的最上方設計更新資料庫的資料,
這個部份與新增資料的概念是接近的,也可以自 mb_index.php 將新增資料的程式碼拷貝過來修改。

//判斷是否來自表單送出了資料, 要更新資料============
if( isset($_POST['mb_name']) ){
 
  //接收表單輸入的資料
  $mb_name = $_POST['mb_name'];
  $mb_content = $_POST['mb_content'];
  $mb_id = $_POST['mb_id'];
 
  //組合更新資料庫這一筆記錄的語法
  $sql_str = "UPDATE mb SET mb_name = '$mb_name', 
                            mb_content = '$mb_content'
                            WHERE mb_id = $mb_id";
  $result = mysqli_query($conn, $sql_str);
  header('Location:mb_index.php');
}

可以測試修改留言工作了!

最後

</html>
 
<?php
mysqli_free_result($RS_mb);   //釋放資料資
mysqli_close($conn);     //關閉資料庫的連線
?>

回顧反思

 

 

go TOP