0

我计划在我的网站上建立一个类似 facebook 的墙贴系统。我正在研究 codeigniter mysql 和 jQuery。

现在这是我的问题:一旦用户来到主页,我就会加载所有帖子。我创建了另外 2 个表格,分别是评论和点赞,用于帖子的点赞和评论。

如果我使用 jQuery 和 json 加载所有帖子,我将如何加载该特定帖子的所有喜欢和评论?

这是我的代码:

模型

function load_all_activities()
    {
    $this->db->select('*')->from('activity_board');
    $this->db->order_by("created_time", "desc");
    $this->db->limit(20);
    $this->db->join('profile', 'profile.user_id = activity_board.user_id');
    $query = $this->db->get();

    $data=array();
     foreach ($query->result() as $row){     
     $row->createdtime=$this->timeago($row->created_time);
    // $row->age=$this->birthday($row->birthday);
     $data[]=$row;
     }

    return $data;
    //return $query->result(); 
    }

控制器:

function load_activities(){

    $data=$this->users->load_all_activities();


    echo json_encode($data);

    }

看法:

//Jquery load activities posts
function load_activities(){

$.post("<?=base_url()?>home/load_activities", function(data){   

$(data).each(function(index, item) {
    $(item).each(function(index, value) {    
    $("#wallposts").append('<div id="postContainer"> <div id="postPic"><a href=""><img src="'+value.picture_thumb+'"/></a></div> <div id="postMsg"><a href="#"><b>'+value.first_name +'</b></a>&nbsp;' +  value.message+'<br/><br/><a href="#">Like</a> &middot; <a href="#">Comment</a> &middot; '+value.createdtime+'<div id="deleteMsg">X</div> </div></div>');
    });
 });




},"json");  

}

这是我的mysql表

CREATE TABLE `activity_board` (
 `activity_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
 `message` text NOT NULL,
 `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`activity_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;




CREATE TABLE `activity_comments` (
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
 `comment` text NOT NULL,
 `avtivity_id` int(11) NOT NULL,
 `user_id` int(11) NOT NULL,
 `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`comment_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
4

3 回答 3

0

您是否考虑过使用第三方组件,例如DisQus,它可以在您的网页上提供评论/活动,而无需实现更多的自定义 HTML 元素和包含 javascript 链接?

于 2012-04-27T14:00:38.737 回答
0

如果您打算使用 js 构建 html,您应该考虑使用类似backbone.jsor的东西batman.js,这些将允许您构建模板并以更可控的方式工作。它们是客户端 MVC js 框架,将提供强大的功能..

我的两分钱.. 否则,我会在所有 id 前面加上 post id

例如。

post_id:20

<div class="postContainer" id="20">
  <table class="message" id="message_20></table>
  <table class="likes" id="likes_20></table>
  <table class="comments" id="comments_20></table>
</div>
于 2012-04-27T14:00:45.053 回答
0

你需要做几件事:

  • 使用基于 activity_id 从表中选择行的方法为表创建模型
  • 创建一个 PHP 脚本,该脚本以某种方式调用,例如viewdetails.php?activity_id=<some id>返回特定活动 ID 的评论和点赞
  • 您的帖子容器 div 需要有某种方式来识别帖子 ID。我通常通过使 div 的 id 类似于<div id="post_<post id>">样式并使用类进行样式来做到这一点(id 应该是唯一的,类在元素之间共享)。
  • 您需要在 div 中创建一个类似于以下内容的链接:<div id="<post id>_post"> ... other stuff ... <a href="#" class="viewCommentLikeButton">View Likes and Comments</a>
  • 你需要把你的$(document).ready()功能$(".viewCommentLikeButton").click( function () { $.post('viewdetails.php?activity_id=' + $(this).parent().attr('id').substr(5), { }, someSuccessHandlerFunction ); });
  • 您的成功处理程序函数应该解析您的 json 并将其放置在某个 div 中,其 id 与原始 activity_id 相关联(例如$("#" + response.activity_id + "_comments").html(response.comments),如果您的 json 被放入 response 并且 response.activity_id 中有活动 id 并且 response.comments 有 html对于其中的评论)

我不知道将 html 放入 json 是否是最佳做法,因此您也可以让您的 php 脚本只返回有关评论的信息,并使您的 javascript 将其解析为可读的内容。

于 2012-04-27T14:10:38.307 回答