สำหรับไฟล์ที่ใช้ในบทความนี้ จะมีอยู่ 3 ไฟล์ คือ showboard.php (แสดงกระทู้จากหมวดกระทู้ที่เลือกจากเว็บหลัก (Home Page)) , board_add.php (ตั้งกระทู้) , viewboard.php (แสดงเนื้อหากระทู้ และสามารถแสดงความคิดเห็น(ตอบกระทู้)ได้จากหน้านี้)
1.เริ่มที่ไฟล์ showboard .php (แสดงกระทู้) กันก่อนครับ เราจะใช้คำสั่งดังนี้
<?php session_start(); require('bin/connectdb.php'); $show_board = ''; $chk_rows_board = 0; $rs_board = ''; if (!empty($_GET['id'])) { $rs_cg = mysql_query('SELECT cg_name FROM tbl_category WHERE cg_id=' . $_GET['id']); //นั $show_board = mysql_fetch_assoc($rs_cg); //นับจำนวนแถวของหมวดกระทู้ if (!empty($show_board['cg_name'])) {//ถ้าชื่อหมวดไม่เป็นค่าว่างแสดงว่ามีหมวดนี้อยู่ในฐานข้อมูลจริงๆ // Join 2 เทเบิล tbl_board และ tbl_member เพื่อดึงค่าของกระทู้,ข้อมูลของสมาชิกมาแสดง //โดยเรียงตามข้อมูลของกระทู้ที่อัพเดทล่าสุด (board_time_update) $rs_board = mysql_query("SELECT b.board_id,b.board_topic,b.board_views,b.board_replies,m.mem_name FROM tbl_board As b LEFT JOIN tbl_member As m ON b.mem_id=m.mem_id WHERE b.cg_id='" . $_GET['id'] . "' AND b.board_parent_id=0 ORDER BY b.board_time_update DESC"); $chk_rows_board = mysql_num_rows($rs_board); //นับจำนวนแถวของกระทู้ } else {//ถ้าเป็นค่าว่าง แสดงว่าไม่มีหมวดนี้อยู่ในฐานข้อมูล ให้Redirectไปหน้า index.php header('Location:index.php'); } } else {//ไม่พบพารามิเตอร์ $_GET['id'] .ให้กลับไปหน้าแรก header('Location:index.php'); exit(); } ?> <html> <head> <?php require('head.php'); ?> <title><?php echo $show_board['cg_name']; ?></title> </head> <body> <?php require('menu.php'); ?> <div class="container"> <?php require('header.php'); ?> <div class="row ws-content"> <ol class="breadcrumb"> <li><a href="index.php">Home</a></li> <li class="active"><?php echo $show_board['cg_name']; ?></li> </ol> <h1><?php echo $show_board['cg_name']; ?></h1> <table class="table table-bordered table-hover"> <thead> <?php if (!empty($_SESSION['mem_id'])) { ?> <tr> <th colspan="3"><span class="btn btn-default" ><a href="board_add.php?id=<?php echo $_GET['id'] ?>">ตั้งกระทู้</a></span></th> </tr> <?php } ?> <tr> <th>หัวข้อกระทู้</th><th class="hidden-xs">ความคิดเห็น</th><th class="hidden-xs">เข้าชม</th></tr> </thead> <tbody> <?php if ($chk_rows_board > 0) {//จำนวนแถวมากกว่า 0 แสดงว่ามีข้อมูล while ($show_board = mysql_fetch_assoc($rs_board)) { $board_id = $show_board['board_id']; $mem_name = $show_board['mem_name']; $board_topic = $show_board['board_topic']; $board_views = $show_board['board_views']; $board_replies = $show_board['board_replies']; ?> <tr> <td style="width:80%"> <a href="viewboard.php?id=<?php echo $board_id; ?>"><?php echo $board_topic; ?></a> <br />โพสโดย : <?php echo $mem_name; ?> </td> <td style="width:10%" class="hidden-xs"><?php echo $board_replies; ?></td> <td style="width:10%" class="hidden-xs"><?php echo $board_views; ?></td> </tr> <?php } } else { //ไม่มีข้อมูลหมวดกระทู้ ?> <tr> <td colspan="3" align="center"><strong>ไม่พบกระทู้</strong></td> </tr> <?php } ?> </tbody> </table> </div> <?php require('footer.php'); ?> </div> </body> </html>
เมื่อรันไฟล์ขึ้นมา โดยจะต้องคลิกเลือกหมวดกระทู้ หมวดใดหมวดหนึ่ง จากหน้าหลักก่อนนะครับ จึงจะได้ผลลัพธุ์ดังนี้
2.ไฟล์ board_add.php (ตั้งกระทู้) เป็นหน้าที่ต่อจากหน้าแสดงกระทู้ showboard.php ครับ สมาชิกเท่านั้นที่สามารถตั้งกระทู้ได้ เราจะใช้คำสั่งดังนี้
<?php session_start(); if (empty($_SESSION['mem_id'])) {//ไม่พบค่าเซสชั่น mem_id แสดงว่าไม่ใช่สมาชิก จึงไม่สามารถตั้งกระทู้ได้ header('Location:index.php'); } require('bin/connectdb.php'); //เรียกไฟล์เชื่อมต่อกับฐานข้อมูล if (!empty($_POST['btSave'])) {//มีการคลิกที่ปุ่มบันทึกตั้งกระทู้ $msgError = ''; if (!empty($_POST['board_topic']) || !empty($_POST['board_detail'])) { $cg_id = $_GET['id']; //รหัสหมวดกระทู้ $board_topic = trim($_POST['board_topic']); //หัวข้อกระทู้ $board_detail = nl2br($_POST['board_detail']); //รายละเอียดกระทู้ mysql_query("INSERT INTO tbl_board(cg_id,board_topic,board_detail,board_time_add,board_time_update,mem_id) VALUES($cg_id,'$board_topic','$board_detail',SYSDATE(),SYSDATE()," . $_SESSION['mem_id'] . ")") or die(mysql_error()); mysql_query("UPDATE tbl_category SET cg_topic_totals=cg_topic_totals+1 WHERE cg_id=$cg_id"); header("Location:showboard.php?id=" . $_GET['id'] . '¬view=1'); } else { $msgError.='กรุณากรอกหัวข้อกระทู้และรายละเอียดของกระทู้ด้วย<br />'; } if (empty($msgError)) { //หากสมาชิกพิมพ์ข้อมูลถูกต้อง ให้Redirect หน้าไปที่ไฟล์ category.php header("Location:showboard.php?id=" . $_GET['id']); } else { //หากกรอกข้อมูลไม่ถูกต้อง ให้สร้างตัวแปร session มารับค่าเพื่อแจ้งให้ทราบถึงปัญหาที่เกิดขึ้น $_SESSION['message_error'] = $msgError; } } $show_board = ''; if (!empty($_GET['id'])) { $rs_cg = mysql_query('SELECT cg_name,cg_id FROM tbl_category WHERE cg_id=' . $_GET['id']); $show_board = mysql_fetch_assoc($rs_cg); //นับจำนวนแถวของหมวดกระทู้ if (empty($show_board['cg_name'])) { header('Location:index.php'); } } else {//ไม่พบพารามิเตอร์ $_GET['id'] .ให้กลับไปหน้าแรก header('Location:index.php'); } ?> <html> <head> <?php require('head.php'); ?> <link rel="stylesheet" type="text/css" href="btvalidate/dist/css/bootstrapValidator.min.css"/> <script type="text/javascript" src="btvalidate/dist/js/bootstrapValidator.min.js"></script> <title>ตั้งกระทู้ห้อง <?php echo $show_board['cg_name']; ?></title> </head> <body> <?php require('menu.php'); ?> <div class="container"> <?php require('header.php'); ?> <div class="row ws-content"> <ol class="breadcrumb"> <li><a href="index.php">Home</a></li> <li><a href="showboard.php?id=<?php echo $show_board['cg_id']; ?>"><?php echo $show_board['cg_name']; ?></a></li> <li class="active">ตั้งกระทู้</li> </ol> <div class="col-md-7 col-sm-7 col-md-offset-2 col-sm-offset-2"> <h1>ตั้งกระทู้</h1> <?php if (!empty($_SESSION['message_error'])) { //แสดงปัญที่เกิดขึ้นจากการไม่กรอกชื่อหมวดกระทู้ ?> <div class="alert alert-danger" role="alert"> <?php echo $_SESSION['message_error']; ?> </div> <?php $_SESSION['message_error'] = ''; } ?> <form method="post" enctype="multipart/form-data" id="boardForm" name="boardForm" action=""> <div class="form-group"> <label for="Category Name">หัวข้อกระทู้</label> <input type="text" class="form-control" id="board_topic" name="board_topic" placeholder="หัวข้อกระทู้"> </div> <div class="form-group"> <label for="Category Description">รายละเอียด</label> <textarea class="form-control" id="board_detail" name="board_detail" placeholder="รายละเอียดของกระทู้" rows="10"></textarea> </div> <div class="form-group"> ตั้งกระทู้โดย : <b><?php echo $_SESSION['mem_name']; ?></b> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" name="btSave" value="บันทึกตั้งกระทู้" > </div> </form> </div> </div> <?php require('footer.php'); ?> </div> <script> $(document).ready(function() { $('#boardForm').bootstrapValidator({ feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { board_topic: { validators: { notEmpty: { message: 'กรุณากรอก หัวข้อกระทู้ ด้วย' } } }, board_detail: { validators: { notEmpty: { message: 'กรุณากรอก รายละเอียดของกระทู้ ด้วย' } } } } }); }); </script> </body> </html>
ถ้าจะให้ไฟล์นี้ทำงาน จะต้องล็อกอินเข้าสู่ระบบก่อนครับ แล้วไปที่หน้าหลัก (Home Page) คลิกเลือกหมวดกระทู้หมวดใดหมวดหนึ่ง แล้วจะโชว์ลิงค์ชื่อว่า ตั้งกระทู้ ขึ้นมา ให้คลิกที่ลิงค์ตั้งกระทู้ จะได้ผลลัพธุ์ ดังนี้
3.ไฟล์ viewboard.php สำหรับแสดงเนื้อหากระทู้ และแสดงความคิดเห็น (ตอบกระทู้) ให้ใช้คำสั่งดังนี้
<?php session_start(); require('bin/connectdb.php'); //เรียกไฟล์เชื่อมต่อกับฐานข้อมูล $show_topic_view = ''; $rs_board = ''; if (isset($_POST['btSaveRep'])) {//มีการคลิกที่ปุ่ม แสดงความคิดเห็น if (empty($_SESSION['mem_id'])) {//ถ้าไม่ใช่สมาชิก header('Location:index.php'); //ให้กลับไปหน้าหลัก exit(); //หยุดทำงานถึงบรรทัดตรงนี้ } $id = $_GET['id']; $mem_id = $_SESSION['mem_id']; if (!empty($_POST['board_detail'])) { $boardDetail = $_POST['board_detail']; mysql_query("INSERT tbl_board(board_parent_id,mem_id,board_detail,board_time_add) VALUES($id,$mem_id,'$boardDetail',SYSDATE()) "); mysql_query('UPDATE tbl_board As b LEFT JOIN tbl_category As c ON b.cg_id=c.cg_id SET b.board_replies=b.board_replies+1,c.cg_replie_totals=c.cg_replie_totals+1,b.board_time_update=SYSDATE() WHERE b.board_id=' . $id); //Update จำนวนความคิดเห็นในกระทู้นั้นๆ } header('Location:viewboard.php?id=' . $id); exit(); } if (isset($_GET['id'])) {//พบว่ามีส่งเมธอดชื่อ id เข้ามา $rs_topic_view = mysql_query('SELECT b.board_id,b.board_topic,b.board_detail,b.board_time_add,c.cg_id,c.cg_name FROM tbl_board As b LEFT JOIN tbl_category As c ON b.cg_id=c.cg_id WHERE b.board_id=' . $_GET['id']); $show_topic_view = mysql_fetch_assoc($rs_topic_view); if (empty($show_topic_view['board_id'])) {//ฟิลด์ board_id เป็นค่าว่างแสดงว่าไม่มีกระทู้นี้อยู่ในฐานข้อมูล header('Location:index.php'); //ให้กลับไปหน้าหลัก } else { //mysql_query('UPDATE tbl_board SET board_views=board_views+1 WHERE board_id='.$_GET['id']); //Update จำนวนผู้เข้าชมของกระทู้นั้น } } else {//ไม่พบค่า id ที่ส่งมา header('Location:index.php'); //กลับไปหน้าหลัก } ?> <html> <head> <?php require('head.php'); ?> <link rel="stylesheet" type="text/css" href="btvalidate/dist/css/bootstrapValidator.min.css"/> <script type="text/javascript" src="btvalidate/dist/js/bootstrapValidator.min.js"></script> <title><?php echo $show_topic_view['board_topic']; ?></title> </head> <body> <?php require('menu.php'); ?> <div class="container"> <?php require('header.php'); ?> <div class="row ws-content"> <ol class="breadcrumb"> <li><a href="index.php">Home</a></li> <li><a href="showboard.php?id=<?php echo $show_topic_view['cg_id']; ?>"><?php echo $show_topic_view['cg_name']; ?></a></li> <li class="active"><?php echo $show_topic_view['board_topic']; ?></li> </ol> <div> <h1><?php echo $show_topic_view['board_topic']; ?></h1> <?php $rs_board = mysql_query('SELECT b.board_id,b.board_topic,b.board_detail,b.board_time_add,c.cg_id,c.cg_name,m.mem_name,m.mem_image FROM tbl_board As b LEFT JOIN tbl_category As c ON b.cg_id=c.cg_id LEFT JOIN tbl_member As m ON b.mem_id=m.mem_id WHERE b.board_id=' . $_GET['id'] . ' OR b.board_parent_id=' . $_GET['id'] . ' ORDER BY b.board_time_add ASC'); while ($show_board = mysql_fetch_assoc($rs_board)) { ?> <div class="panel panel-default"> <div class="panel-heading"> <div style="display:table-cell;padding-right:5px;" class="hidden-xs"> <?php $userIcon = 'usericon.jpg'; if (!empty($show_board['mem_image'])) $userIcon = $show_board['mem_image']; ?> <img src="images/member/<?php echo $userIcon; ?>" width="50" height="50"> </div> <div style="display:table-cell;vertical-align:top;width:100%;"> <div style="text-align:right;color:#C8C8C8;border-bottom:1px dashed #C8C8C8;padding-bottom:4px;"> By : <span style="color:#060"><?php echo $show_board['mem_name'] ?></span> Date : <?php echo $show_board['board_time_add']; ?> </div> <div style="padding-top:4px;"> <?php echo $show_board['board_detail']; ?> </div> </div> </div> </div> <?php } ?> <?php if (!empty($_SESSION['mem_name'])) { ?> <div class="col-md-7 col-sm-7 col-md-offset-2 col-sm-offset-2"> <h4>แสดงความคิดเห็น</h4> <form method="post" enctype="multipart/form-data" id="boardReplieForm" name="boardReplieForm" action=""> <div class="form-group"> <label for="Category Description">รายละเอียด</label> <textarea class="form-control" id="board_detail" name="board_detail" placeholder="ใส่ความคิดเห็นตรงนี้" rows="10"></textarea> </div> <div class="form-group"> แสดงความคิดเห็นโดย : <span style="color:#963"><?php echo $_SESSION['mem_name']; ?></span> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" name="btSaveRep" value="แสดงความคิดเห็น" > </div> </form> </div> <?php } ?> </div> </div> <?php require('footer.php'); ?> </div> <script> $(document).ready(function() { $('#boardReplieForm').bootstrapValidator({//ตรวจสอบการกรอกแสดงความคิดเห็น feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { board_detail: { validators: { notEmpty: { message: 'กรุณากรอกข้อความด้วย' } } } } }); }); </script> </body> </html>
ไฟล์นี้จะได้ผลลัพธุ์ดังนี้
ปล.ถ้าไม่ได้เข้าสู่ระบบ (Log In) ช่องแสดงความคิดเห็นจะถูกซ่อนไว้ ที่แสดงเพราะว่าผมได้Login เข้าไปนั่นเองครับ
บทความหน้าจะสอนเก็บรายละเอียดอีกเล็กน้อย เป็นบทความสุดท้าย ผมจะสอนเรื่องของ การแก้ไขกระทู้ของสมาชิก/Admin , แก้ไขความคิดเห็นของสมาชิก/Admin , ลบกระทู้ของสมาชิก/Admin , ลบความคิดเห็นของสมาชิก/Admin
เออเรอเยอะมากคับ มีไฟร์ให้ดาวโหลดไหมคับ
ตอบลบตั้งแต่ ตอนที่ 1 เลยคับ
ลบถึงหน้า board_add.php (ตั้งกระทู้) แล้วมันเด้งไปยัง user คนแรกตลอดเลยครับ มันไม่จำ session
ตอบลบ