Hey everyone,

So I'm starting a new thread because my other thread was solved and I had forgotten it was. Anyway, I am creating a forum stite from scratch as a side project and I have a main forum page that "includes" two tables that get data from three different tables in one database.

My issue is when I go to the main forum page, ..the reply field seems to automatically update, even if there are no added comments/posts or if there are none at all. I think I know generally where the issue is but I dont know how to fix it.

My goal is for a query to gather all of the current total number of posts per "topic" and display that total in the reply field of the table, but having the correct total of posts, as well as updating if there are more posts per topic. Here is the code for the general area where I think the issue is:

<?php

$host="**********"; // Host name 
$username="*******"; // Mysql username 
$password=""; // Mysql password 
$db_name="forum"; // Database name 
$tbl_name="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['id'];
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<html>
<body>
<p><b><center>Topics:</center></b></p>
<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']; ?></td>
</tr>

<tr>
<td bgcolor="#F8F7F1"><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>
<p><center>Go back to the <a href="main_forum.php">Forum</a></center><p>
<p><center><b>Comments:</b></center></p>
<?php

$tbl_name2="answer"; // Switch to table "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
}

// select view from table
$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);

//reply field
$sql6="SELECT reply FROM $tbl_name WHERE id='$id'";
$result6=mysql_query($sql6);
$rows=mysql_fetch_array($result6);
$reply=$rows['reply'];

if(empty($reply)){
    $reply=1;
    $sql7="INSERT INTO $tbl_name(reply) VALUES('$reply') WHERE id='$id'";
    $result7=mysql_query($sql7);
}

// count more replies
$addreply=$reply+1;
$sql8="UPDATE $tbl_name set reply='$addreply' WHERE id='$id'";
$result8=mysql_query($sql8);
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="<?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>
</body>
</html>

I believe the issue starts around line 110 if that narrows it down, instead of having to look throughout the whole code. Thanks in advance!

-Geneh23

Recommended Answers

All 5 Replies

no event is called in submit button. So its getting insert automatically. Try to use the insert query under submit button click event

I'm sorry rpv_sen, what do you mean?

Member Avatar for LastMitch

@geneh23

My goal is for a query to gather all of the current total number of posts per "topic" and display that total in the reply field of the table, but having the correct total of posts, as well as updating if there are more posts per topic. Here is the code for the general area where I think the issue is:

Since the identify the issue:

//reply field
$sql6="SELECT reply FROM $tbl_name WHERE id='$id'";
$result6=mysql_query($sql6);
$rows=mysql_fetch_array($result6);
$reply=$rows['reply'];

if(empty($reply)){
$reply=1;
$sql7="INSERT INTO $tbl_name(reply) VALUES('$reply') WHERE id='$id'";
$result7=mysql_query($sql7);
}

// count more replies
$addreply=$reply+1;
$sql8="UPDATE $tbl_name set reply='$addreply' WHERE id='$id'";
$result8=mysql_query($sql8);
mysql_close();

This query is to show you how to gather all the replies by using mysql_num_rows() function:

$sql6="SELECT reply FROM $tbl_name WHERE id='$id'";
$number=mysql_num_rows($sql6);
$result6=mysql_query($sql6);
$rows=mysql_fetch_array($result6);
$reply=$rows['reply'];

This query shows you how to echo the total post:

echo "Total reples= ". $number; 

This query shows you how to update the total post:

UPDATE $tbl_name SET reply='$reply' WHERE id='$id'";

This is what I get when I echo "Total replies= " .$number;

"Warning: mysql_num_rows() expects parameter 1 to be resource, string given in C:\Program Files (x86)\EasyPHP-12.1\www\Forum\view_topic.php on line 112
Total replies= "

Member Avatar for LastMitch

@geneh23

"Warning: mysql_num_rows() expects parameter 1 to be resource, string given in C:\Program Files (x86)\EasyPHP-12.1\www\Forum\view_topic.php on line 112
Total replies= "

It's getting late.

It means there's something wrong with the query.

The issue is here:

$result6=mysql_query($sql6);

Another words there is something wrong in here, it can't select:

$sql6="SELECT reply FROM $tbl_name WHERE id='$id'";

That's why you are getting that error.

Did you make sure all of your databases and tables, columns are there? Meaning connected?

It's getting late. I really have to go to bed.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.