Codeigniter中的博客和评论问题

时间:2014-01-23 12:46:41

标签: php codeigniter blogs

目前我的博客系统存在问题。用户会发布博客,其他会员可以发表评论。当用户打开他自己的主页时,他/她可以看到他/她写的博客,每个博客附有评论。就像这样 -

Blog 1 .Comment1 .comment2 ...

Blog 2 .Comment1 .comment2 .Comment3 ....

依此类推。我有两个关于这个的表格

  1. blog_tbl(blg_id,blg_title,blg_content,author_id,crt_date)
  2. comments_tbl(cmmnt_id,blg_id,cmnt_txt,author_id,crt_date)
  3. 现在我可以显示所有博客了。但是在显示与特定博客相关的评论时会遇到问题。 要获取评论,这些是我的步骤 -

    • 我有一个数组$blog_ids,其中包含最新的5个博客的ID。
    • $blog_ids传递给我的模特

    代码:

    public function get_comments($blog_ids) {
        foreach($blog_ids as $row) {
            $blg_post_id = $row['blg_id'];
            $this->db->where('post_id', $blg_post_id);
            $get_comments = $this->db->get('comment_tbl');
            $cmnts = $get_comments->result_array();     
        }
    
        return $cmnts;          
    }
    
    • 现在我将这个 $ cmnts 数组结果数组传递给我的视图。

    • 在此处的视图中,我无法区分有关帖子的评论

    首先$comnts保持所有评论混淆每个博客。如何辨别。其次,在foreach循环中我做错了什么,我没有显示任何东西。是因为它是一个数组数组?

    <ul class="cmmnt">
        <?php foreach($comnts as  $value){ ?>
            <li>
                <div class=cmnt_container>
                    <div class=commnt_txt>
                        <span class="h5"><?php echo $value['comment_txt'] ;?></span>
                    </div>
                </div>
    </ul>
    

2 个答案:

答案 0 :(得分:0)

您将所有评论都放在同一个变量 $ cmnts 中。你可以试试这个:

    public function get_comments($blog_ids) 
    {
      foreach($blog_ids as $row)
      {
        // First declare $cmnts as array
        $cmnts = array();
        $blg_post_id = $row['blg_id'];

        $this->db->where('post_id', $blg_post_id);
        $get_comments = $this->db->get('comment_tbl');
        // You create separate array for each blog
        $cmnts['blg_id'] = $get_comments->result_array();
      }// Now you have array of comments  
        return $cmnts;          
     }// end of get_comments

当您需要将评论与博客相关联时,请执行以下操作:

<ul class="cmmnt">
   <?php foreach($comnts as  $value)
     { 
    if($value['blg_id'] == $blg['blg_id']):
   ?>
<li>
  <div class=cmnt_container>
   <div class=commnt_txt>
     <span class="h5">
      <?php echo $value['comment_txt'] ;?>
     </span>
   </div>
    <?php endif; ?>
 </div>
</ul>

或者你可以尝试这个(我不知道你是如何展示你的博客的):

<ul class="cmmnt">
    <?php foreach($comnts[$blg_id] as  $value){?>
     <li>
      <div class=cmnt_container>
       <div class=commnt_txt>
        <span class="h5"><?php echo $value['comment_txt'] ;?>
        </span>
       </div>
     </div>
</ul>

$ blg ['blg_id'] 是您博客的ID。

答案 1 :(得分:0)

这可能会有所帮助

public function get_comments($blog_ids) 
{
    foreach($blog_ids as $row)
    {

        $blg_post_id = $row['blg_id'];
        $this->db->where('post_id', $blg_post_id);
        $get_comments = $this->db->get('comment_tbl');
        $cmnts[] = $get_comments->result_array();//append the comments

    }
    return $cmnts;          
}
// end of get_comments

请更改您的观点,如下所示

<ul class="cmmnt">
<?php 
     foreach($comnts as  $value)
     {
    foreach($value as  $value1)
    { ?>
    <li>
    <div class=cmnt_container>
    <div class=commnt_txt>
    <span class="h5"><?php echo $value1['comment_txt'] ;?></span>
    </div>
    </div>
    </li>
    <?php 
       } 
    }
 ?>