|
PHP สร้าง WebBoard กระดานถาม-ตอบ เว็บบอร์ดสำหรับเว็บ PHP กับ MySQL |
|
|
PHP สร้าง WebBoard กระดานถาม-ตอบ และเว็บบอร์ดสำหรับเว็บด้วย PHP และ MySQL บทความนี้เป็นตัวอย่างการใช้ php สร้าง webboad หรือกระดานถามตอบเพื่อติดในเว็บไซต์ต่าง ๆ จัดเก็บข้อมูลลงในฐานข้อมูล mysql ซึ่งประกอบด้วย 2 ตารางด้วยกัน คือ webboard และ reply ในตัวอย่างจะมีการเก็บคำถาม จำนวนคนอ่าน และ จำนวนคนตอบในแต่ล่ะกระทู้ เมื่อคลิกเข้าไปในแต่ล่ะกระทู้จะแสดงรายละเอียดพร้อมทั้งสามารถแสดงความคิดเห็นในกระทู้นั้น ๆ ได้ ในตัวอย่างนี้ใช้การเขียนแบบง่าย ๆ สามารถนำไปศึกษาหรือดัดแปลงแก้ไข ฝึกทักษะการเขียนโปรแกรมด้วย php กับ mysql ได้เป็นอย่างดี หากต้องการดาวน์โหลด Code ก็สามารถดาวน์โหลดได้จากข้างล่างสุดของบทความ
Screenshot
ตัวอย่างหน้าจอ 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 หรืออื่น ๆ
โครงสร้างตาราง question จัดเก็บกระทู้คำถาม
โครงสร้างตาราง reply เก็บรายละเอียดของการแสดงความคิดเห็นแต่ล่ะกระทู้
ไฟล์ทั้งหมด
- Webboard.php (แสดงกระทู้คำถาม)
- NewQuestion.php (หน้าจอตั้งกระทู้คำถาม)
- ViewWebboard.php (หน่าจอแสดงรายละเอียดกระทู้และหน้าจอสำหรับแสดงความคิดเห็น)
Webboard.php
<html>
<head>
<title>ThaiCreate.Com</title>
</head>
<body>
<a href="NewQuestion.php">New Topic</a>
<?php
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM webboard ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$Per_Page = 10; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
$strSQL .=" order by QuestionID DESC LIMIT $Page_Start , $Per_Page";
$objQuery = mysql_query($strSQL);
?>
<table width="909" border="1">
<tr>
<th width="99"> <div align="center">QuestionID</div></th>
<th width="458"> <div align="center">Question</div></th>
<th width="90"> <div align="center">Name</div></th>
<th width="130"> <div align="center">CreateDate</div></th>
<th width="45"> <div align="center">View</div></th>
<th width="47"> <div align="center">Reply</div></th>
</tr>
<?php
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?php echo $objResult["QuestionID"];?></div></td>
<td><a href="ViewWebboard.php?QuestionID=<?php echo $objResult["QuestionID"];?>"><?php echo $objResult["Question"];?></a></td>
<td><?php echo $objResult["Name"];?></td>
<td><div align="center"><?php echo $objResult["CreateDate"];?></div></td>
<td align="right"><?php echo $objResult["View"];?></td>
<td align="right"><?php echo $objResult["Reply"];?></td>
</tr>
<?php
}
?>
</table>
<br>
Total <?php echo $Num_Rows;?> Record : <?php echo $Num_Pages;?> Page :
<?php
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}
for($i=1; $i<=$Num_Pages; $i++){
if($i != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
mysql_close($objConnect);
?>
</body>
</html>
ViewWebboard.php
<?php
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
if($_GET["Action"] == "Save")
{
//*** Insert Reply ***//
$strSQL = "INSERT INTO reply ";
$strSQL .="(QuestionID,CreateDate,Details,Name) ";
$strSQL .="VALUES ";
$strSQL .="('".$_GET["QuestionID"]."','".date("Y-m-d H:i:s")."','".$_POST["txtDetails"]."','".$_POST["txtName"]."') ";
$objQuery = mysql_query($strSQL);
//*** Update Reply ***//
$strSQL = "UPDATE webboard ";
$strSQL .="SET Reply = Reply + 1 WHERE QuestionID = '".$_GET["QuestionID"]."' ";
$objQuery = mysql_query($strSQL);
}
?>
<html>
<head>
<title>ThaiCreate.Com</title>
</head>
<body>
<?php
//*** Select Question ***//
$strSQL = "SELECT * FROM webboard WHERE QuestionID = '".$_GET["QuestionID"]."' ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mysql_fetch_array($objQuery);
//*** Update View ***//
$strSQL = "UPDATE webboard ";
$strSQL .="SET View = View + 1 WHERE QuestionID = '".$_GET["QuestionID"]."' ";
$objQuery = mysql_query($strSQL);
?>
<table width="738" border="1" cellpadding="1" cellspacing="1">
<tr>
<td colspan="2"><center><h1><?php echo $objResult["Question"];?></h1></center></td>
</tr>
<tr>
<td height="53" colspan="2"><?php echonl2br($objResult["Details"]);?></td>
</tr>
<tr>
<td width="397">Name : <?php echo $objResult["Name"];?> Create Date : <?php echo $objResult["CreateDate"];?></td>
<td width="253">View : <?php echo $objResult["View"];?> Reply : <?php echo $objResult["Reply"];?></td>
</tr>
</table>
<br>
<br>
<?php
$intRows = 0;
$strSQL2 = "SELECT * FROM reply WHERE QuestionID = '".$_GET["QuestionID"]."' ";
$objQuery2 = mysql_query($strSQL2) or die ("Error Query [".$strSQL."]");
while($objResult2 = mysql_fetch_array($objQuery2))
{
$intRows++;
?> No : <?php echo $intRows;?>
<table width="738" border="1" cellpadding="1" cellspacing="1">
<tr>
<td height="53" colspan="2"><?php echonl2br($objResult2["Details"]);?></td>
</tr>
<tr>
<td width="397">Name :
<?php echo $objResult2["Name"];?> </td>
<td width="253">Create Date :
<?php echo $objResult2["CreateDate"];?></td>
</tr>
</table><br>
<?php
}
?>
<br>
<a href="Webboard.php">Back to Webboard</a> <br>
<br>
<form action="ViewWebboard.php?QuestionID=<?php echo $_GET["QuestionID"];?>&Action=Save" method="post" name="frmMain" id="frmMain">
<table width="738" border="1" cellpadding="1" cellspacing="1">
<tr>
<td width="78">Details</td>
<td><textarea name="txtDetails" cols="50" rows="5" id="txtDetails"></textarea></td>
</tr>
<tr>
<td width="78">Name</td>
<td width="647"><input name="txtName" type="text" id="txtName" value="" size="50"></td>
</tr>
</table>
<input name="btnSave" type="submit" id="btnSave" value="Submit">
</form>
</body>
</html>
<?php
mysql_close($objConnect);
?>
NewQuestion.php
<?php
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
if($_GET["Action"] == "Save")
{
//*** Insert Question ***//
$strSQL = "INSERT INTO webboard ";
$strSQL .="(CreateDate,Question,Details,Name) ";
$strSQL .="VALUES ";
$strSQL .="('".date("Y-m-d H:i:s")."','".$_POST["txtQuestion"]."','".$_POST["txtDetails"]."','".$_POST["txtName"]."') ";
$objQuery = mysql_query($strSQL);
header("location:Webboard.php");
}
?>
<html>
<head>
<title>ThaiCreate.Com</title>
</head>
<body>
<form action="NewQuestion.php?Action=Save" method="post" name="frmMain" id="frmMain">
<table width="621" border="1" cellpadding="1" cellspacing="1">
<tr>
<td>Question</td>
<td><input name="txtQuestion" type="text" id="txtQuestion" value="" size="70"></td>
</tr>
<tr>
<td width="78">Details</td>
<td><textarea name="txtDetails" cols="50" rows="5" id="txtDetails"></textarea></td>
</tr>
<tr>
<td width="78">Name</td>
<td width="647"><input name="txtName" type="text" id="txtName" value="" size="50"></td>
</tr>
</table>
<input name="btnSave" type="submit" id="btnSave" value="Submit">
</form>
</body>
</html>
<?php
mysql_close($objConnect);
?>
Screenshot
หน้าจอสำหรับการตั้งกระทู้ใหม่
หน้าจอสำหรับแสดงกระทู้
หน้าจอสำหรับแสดงกระทู้คำถาม และ รายละเอียดความคิดเห็น
Download Code !!
|
|
|
|
|
|
|
|
Score Rating : |
|
|
Create Date : |
2012-03-22 16:33:24 |
|
View : |
198,014 |
|
Download : |
No files
|
|
|
|
|
|
|
|