2016-03-03 2 views
1

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

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

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

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

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

ответ

3

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

На ваш взгляд, ваша форма будет указывать на это в контроллер:

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).

+0

Спасибо, миллион! – user

+0

См. Обновленный ответ – DinosaurHunter

 Смежные вопросы

  • Нет связанных вопросов^_^