1

現在、ユーザー入力からメモを取り、データベースに保存できるWebサイトがあります。これを達成するための最良の方法についてのガイダンスを探しています。

Web サイトには、追加された最新のメモのみを表示する必要がありますが、他のすべてのメモは引き続き保存する必要があります (非表示にする必要があります)。ユーザーが何回メモを入力するかわかりません。私の最初の考えは、ユーザーがメモを入力するたびにデータベースに列を動的に追加することでしたが、メモのエントリごとに新しい列を作成することになりました.メモはファイル名に関連付けられていることに言及する価値があるので、すべて異なるメモを持つデータベース内の多くの行になります。

dbforge メソッドは、私が行おうとしていた方法でしたが、データベースに「メモ」を繰り返し追加しようとします (一度行った後は既に存在します)。

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

これを行うより良い方法を知っている人はいますか?私はphpとcodeigniterフレームワークを使用しています。すべてのヘルプは大歓迎です!

4

1 に答える 1

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)

于 2016-03-03T09:20:42.737 に答える