2012-09-16 5 views
0

나는 ajax로 만든 반응 시스템을 사용하고 있습니다. 따라서 사용자가 반응을 게시하면 Ajax 요청에 의해 처리되고 즉시 반응이 표시됩니다. 지금 그는 초기로드 된 반응 아래에 새로운 반응 (아약스 요청에 의해 추가됨)을 배치합니다. 그러나 초기로드 된 반응은 데이터베이스에서 DESC 순서로 쿼리되므로 새로운 반응은 초기로드 된 반응 위에 위치해야합니다. 내 코드 :이전에로드 된 콘텐츠 위의 콘텐츠를 표시 하시겠습니까?

HTML :

   <div id="messages"> 

      <? 

      $sql = "SELECT * 
        FROM items_comments, users 
        WHERE items_comments.item_id = '".$id."' 
        AND items_comments.user_id = users.user_id 
        ORDER BY comment_id DESC"; 
      $result = $Db->sQuery($sql); 
      while($row = mysql_fetch_array($result)){ 

      ?> 

      <div id="com_loaded"> 
       <div id="com_loaded_height"></div> 
       <div id="com_loaded_userpic"><a href="#" class="tooltip"><img src="<?=$row['user_pic']?>" class="img_poster" /><span><?=$row['user_name']?></span></a></div> 
       <div id="com_loaded_content"> 
        <div id="com_loaded_poster"><a href="#"><?=$row['user_name']?></a></div> 
        <div id="com_loaded_text"><?=$row['comment_text']?></div> 
       </div> 
       <div id="com_loaded_divide"></div> 
      </div> 
      <? 

      } 

      ?> 


      </div> 

JS :

$(function() { 
     $(".submit-comment").click(function() { 

      var text = $(".txtinput").val(); 
      var itemid = "<?=$id?>"; 
      var userid = "<?=$_SESSION['user_id']?>"; 
      var dataString = 'text=' + text + '&userid=' + userid + '&itemid=' + itemid; 

      if(text == '') { 
       $('#content_error1').fadeIn(250); 
       $('#content_error1').delay(1500).fadeOut(500); 
      } else { 



      $.ajax({ 
       type: "POST", 
       url: "/ajax/comments.php", 
       data: dataString, 
       success: function(html){ 
        $("#messages").append(html); 

       } 
      }); 
      } 
      return false; 
     }); 
    }); 

PHP 스크립트 아약스

<? session_start(); 

require_once("../include/database.php"); 
$Db = new Database(); 

     $text = $Db->escape($_POST['text']); 
     $itemid = $_POST['itemid']; 
     $userid = $_POST['userid']; 
     $date = date('Y-m-d'); 

     $sql = "SELECT comment_id 
       FROM items_comments 
       ORDER BY comment_id DESC LIMIT 1"; 
     $result = $Db->sQuery($sql); 
     $row = mysql_fetch_array($result); 

     $comment_id = ($row['comment_id'])+1; 

     $sql = "INSERT INTO items_comments (comment_id, item_id, user_id, comment_date, comment_text) 
      VALUES('$comment_id', '$itemid', '$userid', '$date', '$text')"; 
     $Db->uidQuery($sql); 

     $sql = "SELECT * 
       FROM items_comments, users 
       WHERE items_comments.comment_id = '".$comment_id."' 
       AND items_comments.user_id = users.user_id 
       ORDER BY comment_date DESC"; 
     $result = $Db->sQuery($sql); 
     $row = mysql_fetch_array($result); 
     $Db->closeConnection(); 

?> 

      <div id="com_loaded"> 
       <div id="com_loaded_height"></div> 
       <div id="com_loaded_userpic"><a href="#" class="tooltip"><img src="<?=$row['user_pic']?>" class="img_poster" /><span><?=$row['user_name']?></span></a></div> 
       <div id="com_loaded_content"> 
        <div id="com_loaded_poster"><a href="#"><?=$row['user_name']?></a></div> 
        <div id="com_loaded_text"><?=$row['comment_text']?></div> 
       </div> 
       <div id="com_loaded_divide"></div> 
      </div> 

답변

1

사용을 호출 prepend() :

success: function(html){ 
    $("#messages").prepend(html); 
} 
+0

Moonwave99, 정말 훌륭합니다! 고마워. 나는 prepend()에 대해 몰랐다. – Stefan

관련 문제