2016-03-03 29 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

相關問題