我打算在我的网站上建立一个类似墙贴的系统。我正在研究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> ' + value.message+'<br/><br/><a href="#">Like</a> · <a href="#">Comment</a> · '+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 ;
答案 0 :(得分:0)
您是否考虑过使用DisQus这样的第三方组件,它可以在您的网页上提供评论/活动,而不必实施比自定义HTML元素更多的内容以及包含javascript链接?
答案 1 :(得分:0)
如果您要使用js构建html,则应考虑使用backbone.js
或batman.js
之类的内容,这些内容将允许您构建模板并以更加可控的方式工作。他们是客户端MVC js框架,将提供大量的力量..
我的两分钱..否则,我会在帖子ID
之前添加所有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>
答案 2 :(得分:0)
你需要做一些事情:
viewdetails.php?activity_id=<some id>
之类的方式调用,返回那些注释和喜欢的特定活动ID <div id="post_<post id>">
并使用类来设置样式(id应该是唯一的,类在元素之间共享)来实现。<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 ); });
$("#" + response.activity_id + "_comments").html(response.comments)
,而response.activity_id的活动ID为它和response.comments有评论的html)我不知道将html放入json是最佳做法,所以你也可以让你的php脚本只返回有关注释的信息,并使你的javascript解析成可读的东西。