Showing posts with label PHP สร้าง WebBoard. Show all posts
Showing posts with label PHP สร้าง WebBoard. Show all posts

Sunday, September 30, 2012

PHP สร้าง WebBoard


PHP สร้าง WebBoard กระดานถาม-ตอบ และเว็บบอร์ดสำหรับเว็บด้วย PHP และ MySQL บทความนี้เป็นตัวอย่างการใช้ php สร้าง webboad หรือกระดานถามตอบเพื่อติดในเว็บไซต์ต่าง ๆ จัดเก็บข้อมูลลงในฐานข้อมูล mysql ซึ่งประกอบด้วย 2 ตารางด้วยกัน คือ webboard และ reply ในตัวอย่างจะมีการเก็บคำถาม จำนวนคนอ่าน และ จำนวนคนตอบในแต่ล่ะกระทู้ เมื่อคลิกเข้าไปในแต่ล่ะกระทู้จะ แสดงรายละเอียดพร้อมทั้งสามารถแสดงความคิดเห็นในกระทู้นั้น ๆ ได้ ในตัวอย่างนี้ใช้การเขียนแบบง่าย ๆ สามารถนำไปศึกษาหรือดัดแปลงแก้ไข ฝึกทักษะการเขียนโปรแกรมด้วย php กับ mysql ได้เป็นอย่างดี หากต้องการดาวน์โหลด Code ก็สามารถดาวน์โหลดได้จากข้างล่างสุดของบทความ

Screenshot

Create Webboard PHP MySQL

ตัวอย่างหน้าจอ Webboard ของ PHP กับ MySQL


คุณสมบัติและความสามารถของตัวอย่างนี้
- จัดเก็บกระทู้คำถามโดยใช้ mySQL Database
- แสดงกระทู้คำถาม จำนวนคนอ่าน จำนวนคนตอบ
- แสดงรายละเอียดความคิดเห็นของแต่ล่ะกระทู้
- แสดงหน้าจอสำหรับตั้งกระทู้ถาม

ตารางประกอบด้วย 2 ตารางคือ
- webboard (เก็บคำถามหรือกระทู้)
- reply (เก็บรายละเอียดของการแสดงความคิดเห็น)



ตาราง webboard และ reply
CREATE TABLE `webboard` (
`QuestionID` int(5) unsigned zerofill NOT NULL auto_increment,
`CreateDate` datetime NOT NULL,
`Question` varchar(255) NOT NULL,
`Details` text NOT NULL,
`Name` varchar(50) NOT NULL,
`View` int(5) NOT NULL,
`Reply` int(5) NOT NULL,
PRIMARY KEY (`QuestionID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE `reply` (
`ReplyID` int(5) unsigned zerofill NOT NULL auto_increment,
`QuestionID` int(5) unsigned zerofill NOT NULL,
`CreateDate` datetime NOT NULL,
`Details` text NOT NULL,
`Name` varchar(50) NOT NULL,
PRIMARY KEY (`ReplyID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


นำ Query นี้ไปรันเพื่อสร้างตารางบน phpMyAdmin หรืออื่น ๆ


Create Webboard PHP MySQL

โครงสร้างตาราง question จัดเก็บกระทู้คำถาม


Create Webboard PHP MySQL

โครงสร้างตาราง reply เก็บรายละเอียดของการแสดงความคิดเห็นแต่ล่ะกระทู้

ไฟล์ทั้งหมด
- Webboard.php (แสดงกระทู้คำถาม)
- NewQuestion.php (หน้าจอตั้งกระทู้คำถาม)
- ViewWebboard.php (หน่าจอแสดงรายละเอียดกระทู้และหน้าจอสำหรับแสดงความคิดเห็น)

Webboard.php
01.<html>
02.<head>
03.<title>ThaiCreate.Com</title>
04.</head>
05.<body>
06.<a href="NewQuestion.php">New Topic</a>
07.<?
08.$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
09.$objDB = mysql_select_db("mydatabase");
10.$strSQL = "SELECT * FROM webboard ";
11.$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
12.$Num_Rows = mysql_num_rows($objQuery);
13. 
14.$Per_Page = 10;   // Per Page
15. 
16.$Page = $_GET["Page"];
17.if(!$_GET["Page"])
18.{
19.$Page=1;
20.}
21. 
22.$Prev_Page = $Page-1;
23.$Next_Page = $Page+1;
24. 
25.$Page_Start = (($Per_Page*$Page)-$Per_Page);
26.if($Num_Rows<=$Per_Page)
27.{
28.$Num_Pages =1;
29.}
30.else if(($Num_Rows % $Per_Page)==0)
31.{
32.$Num_Pages =($Num_Rows/$Per_Page) ;
33.}
34.else
35.{
36.$Num_Pages =($Num_Rows/$Per_Page)+1;
37.$Num_Pages = (int)$Num_Pages;
38.}
39. 
40.$strSQL .=" order  by QuestionID DESC LIMIT $Page_Start , $Per_Page";
41.$objQuery  = mysql_query($strSQL);
42.?>
43.<table width="909" border="1">
44.<tr>
45.<th width="99"> <div align="center">QuestionID</div></th>
46.<th width="458"> <div align="center">Question</div></th>
47.<th width="90"> <div align="center">Name</div></th>
48.<th width="130"> <div align="center">CreateDate</div></th>
49.<th width="45"> <div align="center">View</div></th>
50.<th width="47"> <div align="center">Reply</div></th>
51.</tr>
52.<?
53.while($objResult = mysql_fetch_array($objQuery))
54.{
55.?>
56.<tr>
57.<td><div align="center"><?=$objResult["QuestionID"];?></div></td>
58.<td><a href="ViewWebboard.php?QuestionID=<?=$objResult["QuestionID"];?>"><?=$objResult["Question"];?></a></td>
59.<td><?=$objResult["Name"];?></td>
60.<td><div align="center"><?=$objResult["CreateDate"];?></div></td>
61.<td align="right"><?=$objResult["View"];?></td>
62.<td align="right"><?=$objResult["Reply"];?></td>
63.</tr>
64.<?
65.}
66.?>
67.</table>
68. 
69.<br>
70.Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
71.<?
72.if($Prev_Page)
73.{
74.echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
75.}
76. 
77.for($i=1; $i<=$Num_Pages; $i++){
78.if($i != $Page)
79.{
80.echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
81.}
82.else
83.{
84.echo "<b> $i </b>";
85.}
86.}
87.if($Page!=$Num_Pages)
88.{
89.echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
90.}
91.mysql_close($objConnect);
92.?>
93.</body>
94.</html>



ViewWebboard.php
01.<?
02.$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
03.$objDB = mysql_select_db("mydatabase");
04. 
05.if($_GET["Action"] == "Save")
06.{
07.//*** Insert Reply ***//
08.$strSQL = "INSERT INTO reply ";
09.$strSQL .="(QuestionID,CreateDate,Details,Name) ";
10.$strSQL .="VALUES ";
11.$strSQL .="('".$_GET["QuestionID"]."','".date("Y-m-d H:i:s")."','".$_POST["txtDetails"]."','".$_POST["txtName"]."') ";
12.$objQuery = mysql_query($strSQL);
13. 
14.//*** Update Reply ***//
15.$strSQL = "UPDATE webboard ";
16.$strSQL .="SET Reply = Reply + 1 WHERE QuestionID = '".$_GET["QuestionID"]."' ";
17.$objQuery = mysql_query($strSQL);  
18.}
19.?>
20.<html>
21.<head>
22.<title>ThaiCreate.Com</title>
23.</head>
24.<body>
25.<?
26.//*** Select Question ***//
27.$strSQL = "SELECT * FROM webboard  WHERE QuestionID = '".$_GET["QuestionID"]."' ";
28.$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
29.$objResult = mysql_fetch_array($objQuery);
30. 
31.//*** Update View ***//
32.$strSQL = "UPDATE webboard ";
33.$strSQL .="SET View = View + 1 WHERE QuestionID = '".$_GET["QuestionID"]."' ";
34.$objQuery = mysql_query($strSQL);  
35.?>
36.<table width="738" border="1" cellpadding="1" cellspacing="1">
37.<tr>
38.<td colspan="2"><center><h1><?=$objResult["Question"];?></h1></center></td>
39.</tr>
40.<tr>
41.<td height="53" colspan="2"><?=nl2br($objResult["Details"]);?></td>
42.</tr>
43.<tr>
44.<td width="397">Name : <?=$objResult["Name"];?> Create Date : <?=$objResult["CreateDate"];?></td>
45.<td width="253">View : <?=$objResult["View"];?> Reply : <?=$objResult["Reply"];?></td>
46.</tr>
47.</table>
48.<br>
49.<br>
50.<?
51.$intRows = 0;
52.$strSQL2 = "SELECT * FROM reply  WHERE QuestionID = '".$_GET["QuestionID"]."' ";
53.$objQuery2 = mysql_query($strSQL2) or die ("Error Query [".$strSQL."]");
54.while($objResult2 = mysql_fetch_array($objQuery2))
55.{
56.$intRows++;
57.?> No : <?=$intRows;?>
58.<table width="738" border="1" cellpadding="1" cellspacing="1">
59.<tr>
60.<td height="53" colspan="2"><?=nl2br($objResult2["Details"]);?></td>
61.</tr>
62.<tr>
63.<td width="397">Name :
64.<?=$objResult2["Name"];?>      </td>
65.<td width="253">Create Date :
66.<?=$objResult2["CreateDate"];?></td>
67.</tr>
68.</table><br>
69.<?
70.}
71.?>
72.<br>
73.<a href="Webboard.php">Back to Webboard</a> <br>
74.<br>
75.<form action="ViewWebboard.php?QuestionID=<?=$_GET["QuestionID"];?>&Action=Save" method="post" name="frmMain" id="frmMain">
76.<table width="738" border="1" cellpadding="1" cellspacing="1">
77.<tr>
78.<td width="78">Details</td>
79.<td><textarea name="txtDetails" cols="50" rows="5" id="txtDetails"></textarea></td>
80.</tr>
81.<tr>
82.<td width="78">Name</td>
83.<td width="647"><input name="txtName" type="text" id="txtName" value="" size="50"></td>
84.</tr>
85.</table>
86. 
87.<input name="btnSave" type="submit" id="btnSave" value="Submit">
88.</form>
89.</body>
90.</html>
91.<?
92.mysql_close($objConnect);
93.?>



NewQuestion.php
01.<?
02.$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
03.$objDB = mysql_select_db("mydatabase");
04. 
05.if($_GET["Action"] == "Save")
06.{
07.//*** Insert Question ***//
08.$strSQL = "INSERT INTO webboard ";
09.$strSQL .="(CreateDate,Question,Details,Name) ";
10.$strSQL .="VALUES ";
11.$strSQL .="('".date("Y-m-d H:i:s")."','".$_POST["txtQuestion"]."','".$_POST["txtDetails"]."','".$_POST["txtName"]."') ";
12.$objQuery = mysql_query($strSQL);
13. 
14.header("location:Webboard.php");
15.}
16.?>
17.<html>
18.<head>
19.<title>ThaiCreate.Com</title>
20.</head>
21.<body>
22. 
23.<form action="NewQuestion.php?Action=Save" method="post" name="frmMain" id="frmMain">
24.<table width="621" border="1" cellpadding="1" cellspacing="1">
25.<tr>
26.<td>Question</td>
27.<td><input name="txtQuestion" type="text" id="txtQuestion" value="" size="70"></td>
28.</tr>
29.<tr>
30.<td width="78">Details</td>
31.<td><textarea name="txtDetails" cols="50" rows="5" id="txtDetails"></textarea></td>
32.</tr>
33.<tr>
34.<td width="78">Name</td>
35.<td width="647"><input name="txtName" type="text" id="txtName" value="" size="50"></td>
36.</tr>
37.</table>
38. 
39.<input name="btnSave" type="submit" id="btnSave" value="Submit">
40.</form>
41.</body>
42.</html>
43.<?
44.mysql_close($objConnect);
45.?>




Screenshot

Create Webboard PHP MySQL

หน้าจอสำหรับการตั้งกระทู้ใหม่


Create Webboard PHP MySQL

หน้าจอสำหรับแสดงกระทู้


Create Webboard PHP MySQL

หน้าจอสำหรับแสดงกระทู้คำถาม และ รายละเอียดความคิดเห็น



Download Code !!