Go Back   CodingForums.com > :: Client side development > JavaScript programming > JavaScript frameworks

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 04-17-2012, 08:22 PM   PM User | #1
Juniper747
New Coder

 
Join Date: Apr 2011
Posts: 92
Thanks: 26
Thanked 0 Times in 0 Posts
Juniper747 is an unknown quantity at this point
Comment System - On a Concatenated List!

I am using a comment system from (which I modified slightly):
http://www.9lessons.info/2009/09/com...th-jquery.html

I have a concatenated list like so:
Code:
$my_list .= '
<div>
' . $user_story . '
</div>
<div class="floatleft">
' . $commenter_name . '
</div>
<form action="#" method="post">
	<textarea name="comment" id="comment"></textarea>
	<input type="hidden" name="story_id"  id="story_id" value=' . $story_id . ' />
	<input type="hidden" name="member_id" id="member_id" value=' . $member_id . ' />
	<input type="submit" class="submit" value="Comment " />
</form>
<div id="main">
	<ol  id="update" class="timeline"></ol>
	<div id="flash" align="left"  ></div>
	<li class="box"></li>
</div>
And here is the html/script:

Code:
<head>
<script type="text/javascript">
$(function() {
	$(".submit").click(function() {
		var story_id = $("#story_id").val();
		var member_id = $("#member_id").val();
		var comment = $("#comment").val();
		var dataString = 'story_id='+ story_id + '&member_id=' + member_id + '&comment=' + comment;	
		if(comment=='') {
			alert('Please enter a valid comment');
		} else {
			$("#flash").show();
			$("#flash").fadeIn(400).html('<span class="loading">Loading Comment...</span>');
			$.ajax({
				type: "POST",
	  			url: "commentajax.php",
	   			data: dataString,
	  			cache: false,
	  			success: function(html){
					$("ol#update").append(html);
				 	$("ol#update li:last").fadeIn("slow");
					document.getElementById('story_id').value='';
	   				document.getElementById('member_id').value='';
					document.getElementById('comment').value='';
					$("#comment").focus();
	  				$("#flash").hide();
	  			}
	 		});
		}
		return false;
	});
});
</script>
</head>
<body>
<?php echo $my_list; ?>
The commentajax.php is basically:

Code:
<?php
include_once (database...);
if($_POST) {
	$story_id = $_POST['story_id'];
	$member_id = $_POST['member_id'];
	$comment = $_POST['comment'];

	$lowercase = strtolower($email);
	$image = md5( $lowercase );
  
	mysql_query("INSERT INTO database........);
}
?>
<li class="box">
	<?php echo $comment; ?>
</li>
So here is what's happening:

Everything visually appears in the right place. However, if I comment in any of the text areas other than the first in the list, I get the alert(Please enter a valid comment). If I enter a comment on the first post in the list, it then appears in ALL of the posts in the list, instead of just the one post.

What I want to happen:

Each comment to appear next to the appropriate post/story.
Juniper747 is offline   Reply With Quote
Old 04-18-2012, 08:18 AM   PM User | #2
Juniper747
New Coder

 
Join Date: Apr 2011
Posts: 92
Thanks: 26
Thanked 0 Times in 0 Posts
Juniper747 is an unknown quantity at this point
I believe the problem is that in the concatenated list, everything in that code would not have a unique ID for the html tag.... Since the id can only have one relation... So I would have to use a class instead. So how would I go about giving each div in the concatenated list a unique class?
Juniper747 is offline   Reply With Quote
Reply

Bookmarks

Tags
ajax, comment, concatenated

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:21 AM.


Advertisement
Log in to turn off these ads.