貓城
BLACKCAT CASTLE

如何用PHP跟MySQL做出留言板(採用PDO語法)

   59 VIEWS
如何用PHP跟MySQL做出留言板(採用PDO語法)

因工作忙碌,本篇暫無截圖跟排版,暫時先用文字簡單紀錄,有空會回來更新:

首先先在 MySQL 資料庫中新增資料表,命名為「comment」,接著新增需要的欄位:
※ 為了方便管理我習慣加上前贅字做為區分,以留言板為例就統一加上「cmt_」代表 comment 的縮寫
  1. id(這個是我的習慣,基本上 id 可有可無)
  2. cmt_username(帳號)
  3. cmt_nick(暱稱)
  4. cmt_url(該頁網址)
  5. cmt_msg(留言訊息)
  6. cmt_rep(回覆訊息)
  7. cmt_msg_datetime(留言時間)
  8. cmt_rep_datetime(回覆時間)
  9. cmt_hide(隱藏訊息)

請依照自身需求決定欄位,如果不需要會員制,就把帳號那欄移除。「網址」是區分不同頁面的留言,而「隱藏訊息」是我用來預設所有留言送出時不顯示,需管理員審核後才顯示。

PHP程式碼:

try{
//連線資料庫
$db = new PDO('mysql:host=localhost;dbname=資料庫名稱','root','');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//如果連線資料庫失敗就跳出,並印出錯誤報告
}catch(PDOException $e){
print "couldn't connect to the database:". $e->getMessage();
}

<!-- Comment -->
<?php
// 創建新留言
// 設定當前檔案路徑
$cmt_url_old = 自定義變數;

// 設定留言時間
date_default_timezone_set('Asia/Taipei');
$cmt_datetime=date("Y-m-d H:i:s");
$cmt_username=$_SESSION['username'];
$cmt_nick=$_SESSION['nick']; //轉換html標籤防止有人惡意使用網頁程式語言
$cmt_msg=htmlentities($_POST['cmt_msg']); //轉換html標籤防止有人惡意使用網頁程式語言

$comment_success=false;

// 如果按下送出鍵(cmt_hide=1表示預設隱藏,改2才顯示)
if(isset($_POST['submit_comment'])==true) {
//創建資料
$creat = $db->prepare("INSERT INTO comment (cmt_url,cmt_username,cmt_nick,cmt_msg,cmt_msg_datetime,cmt_hide) VALUES (?,?,?,?,?,?,?)");
$creat->execute(array($cmt_url,$cmt_username,$cmt_nick,$cmt_msg,$cmt_datetime,1));
$comment_success=true;
}

// 判斷這頁是否需要留言板,如果是首頁就顯示
if($cmt_url=='/') {
$comment_page=ture;
}else{
$comment_page=false;
}


if($comment_page) {
?>

<div style="margin-top: 100px">
</div>
<h2 id="comment" style="text-align: center;margin-bottom: 10px">留言</h2>

<?php if($comment_success) {?>
<div style='color:#28ee8b;text-align: center;padding: 1em;'><i class='far fa-check-circle'></i> 您已成功送出訊息,此內容須經管理員審核通過之後才會顯示。</div>
<?php }?>

<div style="text-align: center;">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>#comment" method="POST">
<div class="form-group">
<!-- <input type="text" class="form-control" style="width: 90%;" id="cmt_nick" name="cmt_username" panel placeholder="Name" required="TRUE"> -->
帳號:<?php echo $_SESSION['username'] ;?><br>
暱稱:<?php echo $_SESSION['nick'] ;?><br>
</div>
<div class="form-group">
<textarea type="text" class="form-control" name="cmt_msg" style="font: 20px/2 'Microsoft JhengHei',Tahoma,Helvetica,'mingliu',sans-serif;width: 90%;height: 150px;" placeholder="Comment"></textarea>
</div>

<div style="max-width: 180px;margin: 0 auto;">
<button typy="button" style="background-color: #44637b;color:#fff;width: 120px;height:40px;border-radius: 5px;margin-left: 3px;" name="submit_comment"/>POST COMMENT</button>
</div>
</form>
</div>

<div>
<p>
<span class="mfa-bg" style="color:#949494"><i class="fas fa-notes-medical"></i>COMMENTS</span>
</p>
<table style="font-size: 16px;">
<tbody>
<?php
//讀取資料
$que_comment = $db->query("SELECT * FROM comment WHERE cmt_url='$cmt_url'");
// while迴圈查找,當所有資料列都被取回過後,fetch()會回傳false
while ($row_comment = $que_comment->fetch()) {
if($row_comment['cmt_hide']=='2'){
echo

'
<tr style="background-color:#202020;">

<td style="width:40px;">
'<span style="font-weight:600;color: #79aed7;">'.$row_comment['cmt_nick'].'</span> <span style="float:right;">'.$row_comment['cmt_msg_datetime'].'</span>

</td>
</tr>
<tr>
<td>
'.$row_comment['cmt_msg'].'
</td>
</tr>

';
}
}
?>
</tbody>
</table>
</div>
<?php }?>



時雨 時雨,時雨の町-日文學習園地站長,為了紀錄網站維護的日誌而架設本網站,並以家中黑貓命名為黑貓城,順道分享各種架站知識與相關的網頁程式語言,如果你喜歡我的文章,請幫我按讚哦(*´ω`*)。也歡迎各位到我的日語教學網站學習日文 :)

LEAVE A REPLY

COMMENTS