Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New Coder
    Join Date
    Apr 2011
    Posts
    92
    Thanks
    26
    Thanked 0 Times in 0 Posts

    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.

  • #2
    New Coder
    Join Date
    Apr 2011
    Posts
    92
    Thanks
    26
    Thanked 0 Times in 0 Posts
    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?


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •