Creating a simple PHP forum tutorial



In this tutorial create 5 files
1. create_topic.php
2. add_topic.php
3. main_forum.php
4. view_topic.php
5. add_answer.php

Steps
1. Create table name "forum_question" and "forum_answer" in database "test".
2. Create file create_topic.php.
3. Create file add_topic. php.
4. Create file main_forum.php
5. Create file view_topic.php
6. Create file add_answer.php

Set up database

رمز PHP:
<code style="white-space:nowrap"> <code> Table forum_question
CREATE TABLE
`forum_question` (
`
id` int(4) NOT NULL auto_increment,
`
topic` varchar(255) NOT NULL default '',
`
detail` longtext NOT NULL,
`
name` varchar(65) NOT NULL default '',
`
email` varchar(65) NOT NULL default '',
`
datetime` varchar(25) NOT NULL default '',
`
view` int(4) NOT NULL default '0',
`
reply` int(4) NOT NULL default '0',
PRIMARY KEY (`id`)
)
TYPE=MyISAM AUTO_INCREMENT=1 ;

Table forum_answer
CREATE TABLE
`forum_answer` (
`
question_id` int(4) NOT NULL default '0',
`
a_id` int(4) NOT NULL default '0',
`
a_name` varchar(65) NOT NULL default '',
`
a_email` varchar(65) NOT NULL default '',
`
a_answer` longtext NOT NULL,
`
a_datetime` varchar(25) NOT NULL default '',
KEY `a_id` (`a_id`)
)
TYPE=MyISAM;
</code> </code>


Create file create_topic.php

رمز PHP:
<code style="white-space:nowrap"> <code> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<
tr>
<
form id="form1" name="form1" method="post" action="add_topic.php">
<
td>
<
table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<
tr>
<
td colspan="3" bgcolor="#E6E6E6"><strong>Create New Topic</strong> </td>
</
tr>
<
tr>
<
td width="14%"><strong>Topic</strong></td>
<
td width="2%">:</td>
<
td width="84%"><input name="topic" type="text" id="topic" size="50" /></td>
</
tr>
<
tr>
<
td valign="top"><strong>Detail</strong></td>
<
td valign="top">:</td>
<
td><textarea name="detail" cols="50" rows="3" id="detail"></textarea></td>
</
tr>
<
tr>
<
td><strong>Name</strong></td>
<
td>:</td>
<
td><input name="name" type="text" id="name" size="50" /></td>
</
tr>
<
tr>
<
td><strong>Email</strong></td>
<
td>:</td>
<
td><input name="email" type="text" id="email" size="50" /></td>
</
tr>
<
tr>
<
td>&nbsp;</td>
<
td>&nbsp;</td>
<
td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</
tr>
</
table>
</
td>
</
form>
</
tr>
</
table>
</code> </code>

Create file add_topic.php

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
$host
="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_question"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// get data that sent from form
$topic=$_POST&#91;'topic'&#93;;
$detail=$_POST&#91;'detail'&#93;;
$name=$_POST&#91;'name'&#93;;
$email=$_POST&#91;'email'&#93;;

$datetime=date("d/m/y h:i:s"); //create date time

$sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql);

if(
$result){
echo
"Successful<BR>";
echo
"<a href=main_forum.php>View your topic</a>";
}
else {
echo
"ERROR";
}
mysql_close();
?>
</code> </code>

Create file main_forum.php

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
$host
="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_question"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
?>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Views</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Replies</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Date/Time</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){ // Start looping table row
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows&#91;'id'&#93;; ?></td>
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows&#91;'id'&#93;; ?>"><? echo $rows&#91;'topic'&#93;; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows&#91;'view'&#93;; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows&#91;'reply'&#93;; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows&#91;'datetime'&#93;; ?></td>
</tr>

<?php
// Exit looping and close connection
}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>Create New Topic</strong> </a></td>
</tr>
</table>
</code> </code>

view_topic.php

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
$host
="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_question"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar
$id=$_GET&#91;'id'&#93;;

$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);

$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong><? echo $rows&#91;'topic'&#93;; ?></strong></td>
</tr>

<tr>
<td bgcolor="#F8F7F1"><? echo $rows&#91;'detail'&#93;; ?></td>
</tr>

<tr>
<td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows&#91;'name'&#93;; ?> <strong>Email : </strong><? echo $rows&#91;'email'&#93;;?></td>
</tr>

<tr>
<td bgcolor="#F8F7F1"><strong>Date/time : </strong><? echo $rows&#91;'datetime'&#93;; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?php
$tbl_name2
="forum_answer"; // Switch to table "forum_answer"

$sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'";
$result2=mysql_query($sql2);

while(
$rows=mysql_fetch_array($result2)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong>ID</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows&#91;'a_id'&#93;; ?></td>
</tr>
<tr>
<td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td>
<td width="5%" bgcolor="#F8F7F1">:</td>
<td width="77%" bgcolor="#F8F7F1"><? echo $rows&#91;'a_name'&#93;; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Email</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows&#91;'a_email'&#93;; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Answer</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows&#91;'a_answer'&#93;; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Date/Time</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows&#91;'a_datetime'&#93;; ?></td>
</tr>
</table></td>
</tr>
</table><br>

<?
}

$sql3="SELECT view FROM $tbl_name WHERE id='$id'";
$result3=mysql_query($sql3);

$rows=mysql_fetch_array($result3);
$view=$rows&#91;'view'&#93;;

// if have no counter value set counter = 1
if(empty($view)){
$view=1;
$sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'";
$result4=mysql_query($sql4);
}

// count more value
$addview=$view+1;
$sql5="update $tbl_name set view='$addview' WHERE id='$id'";
$result5=mysql_query($sql5);

mysql_close();
?>
<BR>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="add_answer.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="18%"><strong>Name</strong></td>
<td width="3%">:</td>
<td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="a_email" type="text" id="a_email" size="45"></td>
</tr>
<tr>
<td valign="top"><strong>Answer</strong></td>
<td valign="top">:</td>
<td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="id" type="hidden" value="<? echo $id; ?>"></td>
<td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</code> </code>

add_answer.php

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
$host
="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_answer"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get value of id that sent from hidden field
$id=$_POST&#91;'id'&#93;;

// Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);

// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
$Max_id = $rows&#91;'Maxa_id'&#93;+1;
}
else {
$Max_id = 1;
}

// get values that sent from form
$a_name=$_POST&#91;'a_name'&#93;;
$a_email=$_POST&#91;'a_email'&#93;;
$a_answer=$_POST&#91;'a_answer'&#93;;

$datetime=date("d/m/y H:i:s"); // create date and time

// Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2);

if(
$result2){
echo
"Successful<BR>";
echo
"<a href='view_topic.php?id=".$id."'>View your answer</a>";




// If added new answer, add value +1 in reply column
$tbl_name2="forum_question";
$sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
$result3=mysql_query($sql3);

}
else {
echo
"ERROR";
}

mysql_close();
?>
</code> </code>