2011-01-18 5 views
0

내 사용자의 메시징 시스템에서 내 사용자의받은 편지함에서 나는 사용자가 전자 메일 메시지를 좋아하는 메시지로 만들 수있는 기능을 구축하고 있습니다.보기에서 javascript 함수에서 models 데이터베이스 쿼리를 호출하는 방법은 무엇입니까?

내 메시지 모델에 2 가지 방법을 만들었습니다. 하나는 '메시지'테이블의 '0'을 '즐겨 찾기'열을 1로 업데이트합니다.이 열은 사용자가 메시지를 즐겨 찾기로 사용하기를 원합니다. 또한 사용자가 메시지를 좋아하는 것으로 만들기 위해 클릭하는 이미지는 회색에서 색상으로 바뀝니다.

그런 다음 사용자가 즐겨 찾기가 아닌 메시지를 만들고 싶다면이 과정을 다시 수행하십시오. 1이 0으로 업데이트되고 이미지가 회색으로 다시 바뀝니다.

다음은 상자가 선택되어 있으면 이미지가 색상으로 표시되고 상자가 선택되어 있지 않으면 (이미지가 회색으로 표시되는) 기본적으로 무언가를 수행하는 jquery/javascript입니다.

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'");  
} 

것은 무엇 이렇게하는 가장 좋은 방법이 될 것입니다 :

// 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 
     } 
    } 
}); 

내가 알아 내려고 시도하고 내 모델에서 내 2dB 쿼리를 호출하는 가장 좋은 방법은 무엇입니까? 보기에서 모델을 직접 호출하는 것은 좋지 않은가요?

그래서 어떻게 달성하고 싶습니까?

컨트롤러가 중간 남자 역할을 할 수 있습니까?

그렇다면 어떻게 자바 스크립트 함수에서 컨트롤러를 호출할까요?

항상 여기에 제공된 조언에 감사드립니다. 미리 감사드립니다.

답변

4

jQuery에서는 CodeIgniter 컨트롤러에 Ajax get 요청을 사용합니다. 컨트롤러가 사용자라고하고, 함수의 이름이 update_favorites라고합시다. JQuery와 호출은 다음과 같습니다

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

컨트롤러는 USER_ID와 MESSAGE_ID에 대한 URL의 인자를 발견하고 그 인수와 함께 모델을로드합니다. 모델은 데이터베이스를 변경합니다.

행운을 빈다.

+0

아주 감사합니다. – LondonGuy

1

Summer의 $ .get 메소드 외에도 jQuery의 $ .post() 메소드를 거의 동일한 방식으로 사용할 수 있습니다. Codehipiter가 요청을 통해 게시 요청을 선호했기 때문에 게시를 사용하는 것이 좋습니다.

관련 문제