2016-03-03 44 views
1

我目前有一个网站,它应该能够记录用户输入的笔记并将其保存到数据库中。我正在寻找一些关于实现这一目标的最佳途径的指导。动态地将多个笔记添加到数据库的最佳方式

该网站应该只显示最近添加的笔记,但所有其他笔记仍应保存(但隐藏)。我不知道用户输入音符的次数。我最初的想法是每次用户输入音符时动态添加一列到数据库,但最后我会为每个音符条目添加一个新列。值得一提的是音符与文件名相关联,所以可能会有在数据库中会有很多行,都会有不同的注释。

dbforge方法是我打算去做的方式,但是它会反复尝试向数据库添加“注释”(这将在一次后已经存在)。

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

有人会知道更好的方法吗?我使用php和codeigniter框架。 所有帮助非常感谢!

回答

3

我将有一个注释表,其中存储用户ID,注释和添加日期。

在你看来,你的表格会指向这个在您的控制器

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

相关问题