質問

ユーザーメッセージングシステムからのユーザーの受信ボックスで、ユーザーが電子メールメッセージをお気に入りのメッセージにすることができる機能を構築しています。

メッセージモデルに2つのメソッドを作成しました。 1つは「メッセージ」テーブルの0を更新します。「お気に入り」列を1に更新します。これは、ユーザーがメッセージをお気に入りにしたいことを意味します。また、ユーザーがクリックしてメッセージを灰色から色に変える画像。

次に、ユーザーがメッセージをお気に入りにしたい場合、これと同じプロセスを再度行います。 1は0に更新され、画像は再びグレーになります。

以下は、ボックスがチェックされている場合(画像の色)、ボックスがチェックされていない場合(画像グレイアウト)場合の何かを基本的に行うjQuery/javaScriptです。

// favourite check box
    $('input.favourite:checkbox').simpleImageCheck({
  image: '<?php echo base_url()?>images/messages/check.png',
  imageChecked: '<?php echo base_url()?>images/messages/unchecked.png',
  afterCheck: function(isChecked) {
    if (isChecked) {
  //query to db from php to update favourite number to 1
    }
    else (!isChecked)
        {
            //query to db from php to update favourite number to 0
        }
  }
});

私が理解しようとしているのは、私のモデルで私の2 dBクエリを呼ぶ最良の方法です:

public function favourite_checked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 1 WHERE id = $message_id AND to_user = '$username'");    
}

    public function favourite_unchecked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 0 WHERE id = $message_id AND to_user = '$username'");    
}

これを行うための最良の方法は何でしょうか?ビューでモデルを直接呼ぶのは悪い練習ですね。

それで、どうすれば自分が達成したいことを達成できますか?

コントローラーは中間人として機能する可能性がありますか?

もしそうなら、どのようにしてJavaScript関数のコントローラーを呼び出すことができますか?

ここで与えられたアドバイスにいつも感謝しています。前もって感謝します

役に立ちましたか?

解決

jQueryでは、codeigniterコントローラーにajax get requestを使用します。コントローラーがユーザーと呼ばれ、機能がupdate_favoritesと呼ばれるとします。 jQueryコールは次のようになるかもしれません:

$.get('http://mysite.com/users/update_favorites/user_id/message_id');

コントローラーは、user_idとmessage_idのURL引数を見つけ、モデルをそれらの引数でロードします。モデルはデータベースを変更します。

幸運を!

他のヒント

夏の$ .getメソッドに加えて、jqueryの$ .post()メソッドをほぼ同じ方法で使用できます。 Codeigniterは、Get Requestsよりも投稿リクエストを支持するために書かれたため、Postを使用するのが好きです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top