Лучший способ добавить несколько заметок в базу данных с помощью динамически php

В настоящее время у меня есть веб-сайт, который должен иметь возможность делать заметки из пользовательского ввода и сохранять их в базе данных. Я ищу несколько советов о том, как лучше всего этого достичь.

На веб-сайте должны отображаться только самые последние заметки, которые были добавлены, но все остальные заметки должны быть сохранены (но скрыты). Я не знаю, сколько раз пользователь будет вводить заметки. Первоначально я думал, что нужно динамически добавлять столбец в базу данных каждый раз, когда пользователь вводит заметки, но потом я получу новый столбец для каждой записи заметок. Стоит отметить, что заметки связаны с именем файла, поэтому быть много строк в базе данных, которые будут иметь разные заметки.

Метод dbforge был тем способом, который я собирался использовать, но он будет неоднократно пытаться добавить "заметки" в базу данных (которая уже будет существовать после одного шага).

$fields = array(
            ('notes') => array('type' => 'TEXT','constraints' =>'255')
        );
        $this->dbforge->add_column('mytable', $fields);

Кто-нибудь знает лучший способ сделать это? Я использую php и рамки codeigniter. Вся помощь очень ценится!

1 ответ

Решение

У меня была бы таблица примечаний, в которой хранятся идентификатор пользователя, примечание и дата добавления.

По вашему мнению, ваша форма будет указывать на это в вашем контроллере:

public function addNote($user_id)
{
    $this->form_validation->set_rules('note', 'Note', 'required');

    if ($this->form_validation->run() == true) {

        $array = array (
            'user_id'   => $user_id,
            'note'      => $this->input->post('note')
        );

        $this->your_model->addRecord('notes', $array);
    }
}

addRecord() Функция в вашей модели будет выглядеть так:

public function addRecord($table, $array)
{
    $this->db   ->insert($table, $array);

    return $this->db->insert_id();
}

Затем вы можете сделать запрос, подобный этому, и передать результаты обратно на просмотр:

public function getLatestNoteByUser($user_id) 
{
    $this->db->select('id, note')
             ->from('notes')
             ->where('note_added_by', $user_id)
             ->order_by('date_added', desc)
             ->limit(1);

    return $this->db->get()->row();
}

Это вернет только последнюю заметку, добавленную указанным пользователем. Вы можете установить ограничение на любое значение и вернуть row_array() вместо row(), Вы могли бы даже пройти $limit, в параметрах функций и использования ->limit($limit),

Другие вопросы по тегам