Create a Simple Forum in PHP
Now days people trying to get forums and searching on net free open source forum etc. Today i am going to make a simple script of forum for all of you and its very simple you can easily implement it on your system.
Overview
Create bellow 5 files
- new_topic.php
- add_new_topic.php
- main_forum.php
- view_topic.php
- add_answer.php
[wpdm_file id=10]
Steps
Follow these steps
Create table name “fquestions” and “fanswer” in database “myforum”.
Create file new_topic.php.
Create file add_new_topic. php.
Create file main_forum.php
Create file view_topic.php
Create file add_answer.php
Step 1: Database:
Create database “myforum” and make 2 tables “fquestions” and “fanswer”
CREATE DATABASE /*!32312 IF NOT EXISTS*/`myforum` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `myforum`; /*Table structure for table `fanswer` */ DROP TABLE IF EXISTS `fanswer`; CREATE TABLE `fanswer` ( `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`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `fquestions` */ DROP TABLE IF EXISTS `fquestions`; CREATE TABLE `fquestions` ( `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`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
Step 2: Create file new_topic.php
<!DOCTYPE html> <html> <head> </head> <body> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form id="form1" name="form1" method="post" action="add_new_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> </td> <td> </td> <td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td> </tr> </table> </td> </form> </tr> </table> </body> </html>
Step 3: Create file add_new_topic.php
<?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="myforum"; // Database name $tbl_name="fquestions"; // 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['topic']; $detail=$_POST['detail']; $name=$_POST['name']; $email=$_POST['email']; $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(); ?>
Step 4: Create file main_forum.php
<?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="myforum"; // Database name $tbl_name="fquestions"; // 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 // Start looping table row while($rows = mysql_fetch_array($result)){ ?> <tr> <td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td> <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<?php echo $rows['id']; ?>"><?php echo $rows['topic']; ?></a><BR></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['view']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['reply']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['datetime']; ?></td> </tr> <?php // Exit looping and close connection } mysql_close(); ?> <tr> <td colspan="5" align="right" bgcolor="#E6E6E6"><a href="new_topic.php"><strong>Create New Topic</strong> </a></td> </tr> </table>
Step 5: Create file view_topic.php
<?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="myforum"; // Database name $tbl_name="fquestions"; // 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['id']; $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><?php echo $rows['topic']; ?></strong></td> </tr> <tr> <td bgcolor="#F8F7F1"><?php echo $rows['detail']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>By :</strong> <?php echo $rows['name']; ?> <strong>Email : </strong><?php echo $rows['email'];?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/time : </strong><?php echo $rows['datetime']; ?></td> </tr> </table></td> </tr> </table> <BR> <?php $tbl_name2="fanswer"; // 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"><?php echo $rows['a_id']; ?></td> </tr> <tr> <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td> <td width="5%" bgcolor="#F8F7F1">:</td> <td width="77%" bgcolor="#F8F7F1"><?php echo $rows['a_name']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Email</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_email']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Answer</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_answer']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/Time</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_datetime']; ?></td> </tr> </table></td> </tr> </table><br> <?php } $sql3="SELECT view FROM $tbl_name WHERE id='$id'"; $result3=mysql_query($sql3); $rows=mysql_fetch_array($result3); $view=$rows['view']; // 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> </td> <td><input name="id" type="hidden" value="<?php 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>
Step 6: Create file add_answer.php
<?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="myforum"; // Database name $tbl_name="fanswer"; // 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['id']; // 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['Maxa_id']+1; } else { $Max_id = 1; } // get values that sent from form $a_name=$_POST['a_name']; $a_email=$_POST['a_email']; $a_answer=$_POST['a_answer']; $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="fquestions"; $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'"; $result3=mysql_query($sql3); } else { echo "ERROR"; } // Close connection mysql_close(); ?>
Tutorial Categories:
can i use this to my system in company?
@7d1d19d7df4ebe5a46ea2e785d8e36d9:disqus you can use this code and very soon its new version i am going to publish i hope that will also very helpful for you.
thanks… 😀
nice
Is this the same tutorial that is on phpeasystep?
This code is great, however, when i go to respond to a topic I can fill the form out, submit it, and it shows that a comment was added, but when I go and look at the topic no response is shown. All I can see is the original post no comment.
Thanks!!
“; echo “View your topic”; } else { echo “ERROR”; } mysql_close(); ?>
me too
if this system has one spam code for validation and write IP in DB, will be very good
sss
ccc
nice conversation
fdfffff
this forum sux … no threads, no pagination, no security or atleast required fields checkup.
i expected some effort into this script since you call yourself PHP developer.
Looks more like a comments section rather than a forum.
hello
i got this when i try and post somthing “ERROR”
I Also Got This On main_forum.php “Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u404949692/public_html/main_forum.php on line 31”
wow… this is so outdated… even for a 2012 article … my opinion : Google should review their algoritm by comparing their search results with the php deprecated functions list … lol
kkkklkvmdlksdlk
cannot add more then one answer to a question
cannot add more then one answer to a question
What did u do then ?even I’m getting same problem
I cannot daily attendances php & mysql any body help me & send source code my email : [email protected] Pls …………..
Thank you so much Huzoor Bux! I was searching the reply coding for my project as to how to implement and your coding worked! 🙂
What should I add for localhost? The web server host name?
thank you sir ; jo apne ye plugin lagai h esa system hum khud nhi bana skte hain ????? reply p reply
شكر لك
Upload the image to the database and view it???????????????
Hi,
I need help from you. NOW I WATCH YOUR TUTORIAL WITH COMMENTS, I CAN NOT GO TO HOW TO USER EDIT OR DELETE YOUR COMMENT.
IN FACT THAT THE USER OF LOGIN SHOULD EDIT OR DELETE THE COMMENTER ONLY WHO HAD WAITED AND CAN NOT OTHER COMMENTERS.
E.G:
$_SESSION[‘USER’] == ‘USER’;
$sql = “SELECT * FROM coment WHERE id=’$_SESSION[user]'”;
$res = mysqli_query($conn,$sql)
Thanks in advance,
Greetings ,
Vladimir