codeigniter — лучший способ динамически добавлять несколько заметок в базу данных с помощью 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),

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]