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

カスタム HTML 要素や JavaScript リンクを含めるだけでなく、Web ページにコメントやアクティビティを提供するDisQusなどのサードパーティ コンポーネントの使用を検討したことはありますか?

于 2012-04-27T14:00:38.737 に答える
0

js を使用して html を構築する場合は、backbone.jsまたは などの使用を検討する必要がありbatman.jsます。これらにより、テンプレートを構築し、より制御された方法で作業できます。それらは、多くの機能を提供するクライアント側の MVC js フレームワークです。

私の2セント..そうでなければ、すべての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>
于 2012-04-27T14:00:45.053 に答える
0

いくつかのことを行う必要があります。

  • activity_id に基づいてテーブルから行を選択するメソッドを使用して、テーブルのモデルを作成します
  • viewdetails.php?activity_id=<some id>特定のアクティビティ ID に対するコメントやいいね! を返すような方法で呼び出される PHP スクリプトを作成します。
  • 投稿コンテナーの 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 を解析し、元の activity_id にリンクされた ID を持つ div に配置する必要があります ($("#" + 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 に答える