Как вызвать запрос базы данных моделей в функции JavaScript в представлении?

StackOverflow https://stackoverflow.com/questions/4726934

Вопрос

На моем почтовом ящике из моей системы обмена сообщениями пользователь я создаю функцию, в которой пользователь может сделать электронное сообщение любимым сообщением.

Я создал 2 метода в моей модели сообщений. Один обновляет 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 вы будете использовать запрос AJAX GET для контроллера CodeIgniter. Скажем, ваш контроллер называется пользователями, а ваша функция называется update_favorites. Вызов jQuery может выглядеть так:

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

Затем ваш контроллер найдет аргументы URL для user_id и message_id и загрузит вашу модель с этими аргументами. Модель внесет изменения в базу данных.

Удачи!

Другие советы

В дополнение к методу Summer's $ .get, вы можете использовать метод jQuery $ .post () во многом таким же образом. Мне нравится использовать POST лучше, потому что CodeIgniter был записан, чтобы предположить запросы на публикацию по запросам GET.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top