如何在评论时获取帖子的当前id

时间:2015-10-17 07:06:47

标签: php mysql ajax

我正在尝试发布帖子和评论部分,用户可以发布和评论。为此我有2个表:帖子,评论

在我的帖子表中有两列:id和posts;它是这样的:

    id | post
----------------------

    1  | lo;l;l
-----------------------

    2  | i am feeling well

在我的评论表中有三列:id,comment和post_id( ,这是用户评论的帖子的ID,因此我可以每次动态检索每个帖子的评论< / em>

我管理了帖子部分但无法弄清楚如何在评论时获取特定帖子的ID。 我不想要任何直接解决方案,而是PDO中关于如何执行此操作的工作大纲 。在这方面的任何帮助将不胜感激

这是我迄今为止所管理的内容(可能有点长,但理解起来非常简单。我没有提供我的数据库查询页面以保持帖子更小。我需要知道如何在我评论时得到特定的post_id)

我还没有写一个在ajax调用中的insertComment.php页面。但我希望我的评论插入和检索功能去那里

<?php
      session_start();
      require_once 'myDB.php';
      if(isset($_POST['post']) && !empty($_POST['post'])){
           $post=$_POST['post'];
           $_SESSION['post']=$_POST['post'];

           try{
               $newComment=DB::getInstance();
               $newComment->insert('post',array('posts'=>$post));
              }catch(Exception $e){
                 echo $e->getMessage();
              }
           header('HTTP/1.1 303 see other');
           header('Location:'.$_SERVER['PHP_SELF']);
        }    
?>
<html>
<head>
<style>
    #formdiv{width:347px;height:120px;background:#dfe3ee;position:relative;border:1px dashed black;top:0px;left:300px;padding:5px; margin-bottom:3px;

    }
    #cmntbox{
        width:347px;background:#dfe3ee;position:relative;border:1px solid black;left:300px;padding:5px;
    }
    .repText{
        width:100%;background:#f7f7f7;position:relative;border:1px solid black;padding:3px;resize:none;}
    }
</style>
</head>
</body>
<div id='formdiv'>
    <form action='' method='POST'>
        <textarea name='post' placeholder="what's on your mind !" cols='40' rows='3'></textarea>
        <input type='submit' name='submit' value='post comment' style='float:right;width:100px;height:30px;background:#3b5998;color:white;'>
    </form>
</div>
<?php 

      $newComment=DB::getInstance();
      $results=$newComment->getComment('SELECT','post','posts')->result();

      foreach($results as $result=>$val){
?>
    <div  id='cmntbox'><?php 
         echo $val->posts;
         echo '</br><hr>';?>
         <form>
             <textarea name='myrep' id='myreply' class='repText'></textarea>
             <input type='button' class='reply' value='reply' style='width:50px;height:30px;background:#3b5998;color:white;' >
         </form>
    </div>
<?php 
      }
?>
<script>
   var reply=document.getElementsByClassName('reply');
   var repText=document.getElementsByClassName('repText');
   for(i=0;i<reply.length;i++){
       (function(i){
            reply[i].addEventListener('click',function(e){
                  var xmlHttp=new XMLHttpRequest();
                  xmlHttp.onreadystatechange=function(){
                      if(xmlHttp.readyState==4 && xmlHttp.status==200){
                           //do nothing
                      }else{
                           alert('there was a problem ');
                      }

                  }  
                  var parameters='myrep='+document.getElementById('myreq').value
                  xmlHttp.open("POST", "insertcomment.php", true);
                  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                  xmlHttp.send(parameters);
                  }
            });
       })(i);

   }
</script>
</body>
</html>

enter image description here

1 个答案:

答案 0 :(得分:2)

您的页面加载时会有帖子ID,因此在html中绘制评论框时,您可以将帖子ID设置为某个html元素的属性或隐藏字段

所以在你的情况下更新以下脚本

<div  id='cmntbox'><?php 
     echo $val->posts;
     echo '</br><hr>';?>
     <form>
         <textarea name='myrep' id='myreply' class='repText'></textarea>
         <input type='button' class='reply' value='reply' style='width:50px;height:30px;background:#3b5998;color:white;' >
     </form>
</div>

<div  id='cmntbox'><?php 
     echo $val->posts;
     echo '</br><hr>';?>
     <form id="<?php echo $val->postId ?>">
         <textarea name='myrep' id='myreply' class='repText'></textarea>
         <input type='button' class='reply' value='reply' style='width:50px;height:30px;background:#3b5998;color:white;' >
     </form>
</div>

OR

<div  id='cmntbox'><?php 
     echo $val->posts;
     echo '</br><hr>';?>
     <form>
         <input type="hidden" name="postId" value="<?php echo $val->postId ?>" />
         <textarea name='myrep' id='myreply' class='repText'></textarea>
         <input type='button' class='reply' value='reply' style='width:50px;height:30px;background:#3b5998;color:white;' >
     </form>
</div>