View comments on profile page need help.

Ask about a PHP problem here.
Post Reply
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

View comments on profile page need help.

Post by Smg »

ok recently i have been trying to make a simple view comments kind of like facebook like say...
when you post a comment on the users profile under the comment will be a link to see all the comments posted onto that one comment.
things i got to work with this...
- viewing the comment (when clicking view comments brings you to that page)

things that is not working...
- posting the comment onto the new page with the comments from the single comment on the profile page.
- also when i enter the comment it does add it to the database but its not getting the id...

ok so i need help trying to figure out how to get this to work here is what i have so far.

SQL:
user comments:
"also im using the same sql for adding comments on the profile page"
CREATE TABLE IF NOT EXISTS `user_comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `text` varchar(50) NOT NULL,
  `comment` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
the SQL that doesnt add:
INSERT INTO `user_comments` (`id`, `user_id`, `text`, `comment`) VALUES
(1, 0, 'Smg', 'Enter your comment');
view_comment.php:
<?php
include('core/init.inc.php');

$id = $_GET['id'];
if(empty($id))
	header('Location: index.php');
else {
	$query = mysql_query("SELECT * FROM user_comments WHERE id = '$id' ORDER BY id DESC");
	if (mysql_num_rows($query) == 0)
		echo 'Be the first to add a comment.<br />';
	else
	{
		while($output = mysql_fetch_assoc($query))
		{
			echo $output['text'].'<br />';
			echo $output['comment'].'<br />';
		}
	} ?>
<form method="post" action="user_comment.php?id=<?php echo $id; ?>">
	<input type="hidden" name="name" id="name" value="Name" /><br />
	<textarea name="comment" id="comment">Enter your comment</textarea><br />
	<input type="submit" name="submit" id="submit" value="Submit" />
	<input type="hidden" value="'.$id.'" name="id" id="id" />
</form>
<?php } ?>
user_comment.php:
<?php
include('core/init.inc.php');

$id = $_GET['id'];
if(empty($id))
	header('Location: index.php');
else
{
	function clear($message)
	{
		if(!get_magic_quotes_gpc())
			$message = addslashes($message);
		$message = strip_tags($message);
		$message = htmlentities($message);
		return trim($message);
	}
	if($_POST['submit'])
	{ 
		if (empty($_POST['comment']))
			die('Enter a comment.');
		$id = $_POST['id'];
		$msg_title = $_SESSION['user_username'];
		$msg_message = clear($_POST['comment']); 
		if(mysql_query("INSERT INTO `user_comments` VALUES ('', '', '{$msg_title}', '{$msg_message}')"))
			echo 'Comment Entered.';
		mysql_close(); 
	} 
}
?>
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: View comments on profile page need help.

Post by jacek »

I would set this up with two tables, one for profile_comments and another for comment_replies. Then you can just have two forms one on the profile page that adds to the profile_comments table and another under each comment that adds to the comment_replies table. then it should just be a matter of getting the data from the appropriate table. Make sense ?

You should really try to keep you SQL out of the actual pages too, so instead of doing
        $query = mysql_query("SELECT * FROM user_comments WHERE id = '$id' ORDER BY id DESC");
        if (mysql_num_rows($query) == 0)
                echo 'Be the first to add a comment.<br />';
        else
        {
                while($output = mysql_fetch_assoc($query))
                {
                        echo $output['text'].'<br />';
                        echo $output['comment'].'<br />';
                }
        }
you should have a function
        if (($comments = fetch_profile_comments($id)) == false)
        {
                echo 'Be the first to add a comment.<br />';
        }
        else
        {
                foreach ($comments as $comment)
                {
                        echo $comment['text'].'<br />';
                        echo $comment['comment'].'<br />';
                }
        }
It will make everything a lot easier to work with later on.

Function should also be kept in separate files for the same reason.
Image
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

Re: View comments on profile page need help.

Post by Smg »

ok ill do a function later but atm i want to get this to work so... so far i got the comment_replies to work in the sql database but its not grabbing the comment_id and pasting it into the database so what should i do for this to work?

SQL:
id 	int(11) 			No 	None 	AUTO_INCREMENT 
comment_id 	int(11) 	No 	None 
name 	varchar(25) 	latin1_swedish_ci 	No 	None 
reply 	varchar(100) 	latin1_swedish_ci 	No 	None
user_comment.php:
<?php
include('core/init.inc.php');

$id = $_GET['id'];
if(empty($id))
	header('Location: index.php');
else
{
	function clear($message)
	{
		if(!get_magic_quotes_gpc())
			$message = addslashes($message);
			$message = strip_tags($message);
			$message = htmlentities($message);
		return trim($message);
	}
	if($_POST['submit'])
	{ 
		if (empty($_POST['reply']))
			die('Enter a comment.');
		$id = mysql_query("SELECT * FROM `comment_replies` WHERE `comment_id` = {$_POST['comment_id']} ORDER BY id DESC");
		$comment_id = $_GET['id'];
		$msg_title = $_SESSION['user_username'];
		$msg_message = clear($_POST['reply']); 
		if(mysql_query("INSERT INTO `comment_replies` VALUES ('', '{$comment_id}', '{$msg_title}', '{$msg_message}')"))
			echo 'Comment Entered.';
		mysql_close(); 
	}
	$ref = $_SERVER['HTTP_REFERER'];
	header('refresh: 0.5; url='.$ref);
}
?>
view_comment.php:
    <!-- TemplateBeginEditable name="content" -->
	<center>
    <div align="center" class="content" id="content"><br />
	<?php
	$id = $_GET['id'];
	if(empty($id))
		header('Location: index.php');
	else {
		$query = mysql_query("SELECT * FROM comment_replies WHERE id = '$id' ORDER BY id DESC");
		if (mysql_num_rows($query) == 0)
			echo 'Be the first to add a comment.<br />';
		else
		{
		?>
		<table width="350" align="center" border="0">
		<?php
			while($output = mysql_fetch_assoc($query))
			{
			?>
			<tr>
				<td><?php echo $output['name'].'<br />'; ?></td>
				<td><?php echo $output['reply'].'<br />'; ?></td>
			</tr>
			<?php
			}
	} 
	
	$_POST['id'] = $_GET['comment_id'];
	?>
	</table>
	<form method="post" action="user_comment.php?id=<?php echo $id; ?>">
	<input type="hidden" name="name" id="name" value="Name" /><br />
	<textarea name="reply" id="reply">Enter your comment</textarea><br />
	<input type="submit" name="submit" id="submit" value="Submit" />
	<input type="hidden" value="'.$id.'" name="id" id="id" />
</form>
</div></center><br /><!-- TemplateEndEditable -->
Last edited by Smg on Fri Apr 20, 2012 1:58 am, edited 2 times in total.
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: View comments on profile page need help.

Post by jacek »

I don't see where $comment_id is defined, that could be it ?
Image
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

Re: View comments on profile page need help.

Post by Smg »

ok i got it to get the id into the database now it is not showing the comment.... so what do i do now?
i also updated the user_comment.php above where you said there was no $comment_id

also to show i got the id to work into comment_id:
id:   comment_id:            name:      reply:
1 	23                       Smg 	     Enter your comment
2 	21                       Smg 	     OMFG
3 	21                       Smg 	     Enter your comment
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: View comments on profile page need help.

Post by jacek »

Smg wrote:ok i got it to get the id into the database now it is not showing the comment....
Can you post the code that should show the comments ?

It is probably somethign simple, are you sure you are running the correct query. It could be that you are not fetching the comments for the right ID.
Image
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

Re: View comments on profile page need help.

Post by Smg »

Ok here is the code and I checked I can't figure it out

user_comment.php:
<?php
include('core/init.inc.php');

$id = $_GET['id'];
if(empty($id))
	header('Location: index.php');
else
{
	function clear($message)
	{
		if(!get_magic_quotes_gpc())
			$message = addslashes($message);
			$message = strip_tags($message);
			$message = htmlentities($message);
		return trim($message);
	}
	if($_POST['submit'])
	{ 
		if (empty($_POST['reply']))
			die('Enter a comment.');
		$id = mysql_query("SELECT * FROM `comment_replies` WHERE `comment_id` = {$_POST['comment_id']} ORDER BY id DESC");
		$comment_id = $_GET['id'];
		$msg_title = $_SESSION['user_username'];
		$msg_message = clear($_POST['reply']); 
		if(mysql_query("INSERT INTO `comment_replies` VALUES ('', '{$comment_id}', '{$msg_title}', '{$msg_message}')"))
			echo 'Comment Entered.';
		mysql_close(); 
	}
	$ref = $_SERVER['HTTP_REFERER'];
	header('refresh: 0.5; url='.$ref);
}
?>
view_comment.php:
    <!-- TemplateBeginEditable name="content" -->
	<center>
    <div align="center" class="content" id="content"><br />
	<?php
	$id = $_GET['id'];
	if(empty($id))
		header('Location: index.php');
	else {
		$query = mysql_query("SELECT * FROM comment_replies WHERE id = '$id' ORDER BY id DESC");
		if (mysql_num_rows($query) == 0)
			echo 'Be the first to add a comment.<br />';
		else
		{
		?>
		<table width="350" align="center" border="0">
		<?php
			while($output = mysql_fetch_assoc($query))
			{
			?>
			<tr>
				<td><?php echo $output['name'].'<br />'; ?></td>
				<td><?php echo $output['reply'].'<br />'; ?></td>
			</tr>
			<?php
			}
	} 
	
	$_POST['id'] = $_GET['comment_id'];
	?>
	</table>
	<form method="post" action="user_comment.php?id=<?php echo $id; ?>">
	<input type="hidden" name="name" id="name" value="Name" /><br />
	<textarea name="reply" id="reply">Enter your comment</textarea><br />
	<input type="submit" name="submit" id="submit" value="Submit" />
	<input type="hidden" value="'.$id.'" name="id" id="id" />
</form>
</div></center><br /><!-- TemplateEndEditable -->
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: View comments on profile page need help.

Post by jacek »

Should one of those pages be using a different table ? They are both using comment_replies at the moment.
Image
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

Re: View comments on profile page need help.

Post by Smg »

Not sure but it works I just need it to display the comments from comment replies
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: View comments on profile page need help.

Post by jacek »

Smg wrote:Not sure but it works I just need it to display the comments from comment replies
Okay, one of them should be the other table then. Which ever page should show the replies needs to get the data from the comments replies table.
Image
Smg
Posts: 30
Joined: Tue Feb 21, 2012 2:38 am

Re: View comments on profile page need help.

Post by Smg »

i got it fixed it was with a part of the code that i just had to remove then it started working thank you for the help :D
sevvlor
Posts: 22
Joined: Fri May 06, 2011 10:46 pm

Re: View comments on profile page need help.

Post by sevvlor »

One more thing, I cannot find the mysql_real_escape(). Which is needed to prevent MySQL injections.

You use it on any user defined value, I mean post, get and cookies.
Post Reply