Jump to content

Php Forum Code Not Displaying the Forum


Go to solution Solved by Ch0cu3r,

Recommended Posts

Am still a baby so please forgive me for too many Question. 

I have a simple forum Script. That is working very fine the problem is with viewing the posted topic

I have 3 major file that anchor the forum my create_topic.php, add_topic.php and main_forum.php. All of them seem fine to except the main_forum.php for it is suppose to display the forum post but when ever i post a topic and try to view it i only get a blank table. The Post are stored in my local host database. These are the Scripts

create_topic.php

<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> </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>

Next is add_topic.php

<?php

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="online"; // 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['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();
?>

and finally main_forum.php

<?php

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="online"; // 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
 
// Start looping table row
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['view']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['reply']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['datetime']; ?></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> 

mysql script

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; 

Please My magic Programmers Help me out.Thanks In advance

Link to comment
https://forums.phpfreaks.com/topic/283753-php-forum-code-not-displaying-the-forum/
Share on other sites

You need to also check that the query actually added a row to the table using mysql_affected_rows. In add_topic.php use this code when checking the query has added the topic to the table.

$sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql);
 
if($result){
   if(mysql_affected_rows($result)) {
      echo "Successful<BR>";
      echo "<a href=main_forum.php>View your topic</a>";
   }
   else {
      echo 'Topic not added to table';
   }
}
else {
echo "ERROR";
}

You will also want to be santizing your user input before your use it in your queries. Using raw $_POST data in your SQL queries will lead to SQL injection vulnerabilities either use mysql_real_escape_string or upgrade your code to use the MySQL Improved function library and use prepared queries to help prevent SQL injection attacks. Also note the standard mysql function library is deprecated and could soon be removed, so I recommend you change to mysqli now.

Edited by Ch0cu3r

actually, sorry I left that out, the topic is added successfully to the data base. When i preview it in phpmyadmin portal i can see the post there but to view it is now the problem. But I will still check your script out. Thanks for more help.  

  • Solution

 

I tried out the code it gave an error

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\forum\add_topic.php on line 25
Topic not added to table

Remove $result from    mysql_affected_rows($result)   I always forget it requires the link resource not the result resource.

 

 

 

When i preview it in phpmyadmin portal i can see the post there but to view it is now the problem.

Try changing    <? echo  to   <?php echo

 

The <? ?> tags may not work if a setting called short_open_tag is enabled in the php.ini

Edited by Ch0cu3r

Remove $result from    mysql_affected_rows($result)   I always forget it requires the link resource not the result resource.

 

 

Try changing    <? echo  to   <?php echo

 

The <? ?> tags may not work if a setting called short_open_tag is enabled in the php.ini

i remove d result resouc it b4 using bt d same thing it shows blank and i fix it back it gave the error

 

i want to try changing the ? to php

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.