2017-12-04 7 views
-2

誰でも、単一のフォーム(ビュー)を作成するコントローラ、モデル、およびビューの作成に役立つことができます。 idかどうか、それに応じて同じものを挿入して更新するかどうかによって決まります。Codeigniterを使用して同じフォームからデータを挿入および更新する方法

+0

https://www.codeigniter.com/userguide3/tutorial/index.htmlチュートリアルを実行すると、そのプロセスの仕組みを理解できるはずです。 – sintakonte

+0

実際に私は多くの編集更新を使用していますが、同じフォームのために私はガイドを使用していますが、@ sintakonteを取得していません –

+0

これまでに何を書いていますか? – TimBrownlaw

答えて

0

基本的には、データベースに隠されたIDが存在するかどうかをチェックするだけです。それがなければinsert、あなたならupdateです。一般に、これはあなたがそれを行う方法です。

<?php 

class some_controller extends CI_Controller { 

    /** 
    * Submits the form 
    * 
    * @return boolean 
    */ 
    public function submit_form() { 
     $id = $this->input->post('id'); 
     $data = array(
      'somedata' => $this->input->post('somedata'), 
      'someotherdata' => $this->input->post('someotherdata') 
     ); 
     $this->load->model('some_model'); 
     if (!is_null($id) && $this->some_model->id_exists($id)) { 
      return $this->db->update('sometable', array('id' => $id), $data); 
     } else { 
      // assumes sometable autoincrements id 
      // otherwise $data = array_merge(array('id' => $id), $data); 
      return $this->db->insert('sometable', $data); 
     } 
    } 

} 

class some_model extends CI_Model { 

    /** 
    * Checks if id exists in sometable 
    * 
    * @return boolean TRUE if item with $id exists in sometable 
    */ 
    public function id_exists($id) { 
     $this->db->where('id', $id); 
     return $this->db->count_all_results('sometable') > 0; 
    } 

} 

ご注意:良い練習がモデルに(実際にはすべてのクエリ)の挿入および更新を移動するためのを呼び出します。これは単なる例です。

+0

そのIDに関して既に詳細がある場合は、入力名を表示する方法。 @Alexを編集するとき –

+0

Hey there、あなたはすでにそれらの詳細を持っている場合、入力フィールドにどのように入力するのですか?あなたはすべてのフィールド 'isset($ _ POST ['field_name'])に対して行うことができますか? $ _POST ['field_name']:$ row-> field_name'なので、フィールド名が '$ _POST'データから出ていれば、データベースから' $ field_name'を表示します。これには、ページをロードする前にデータベースからフィールドを取得する必要があります。しかし、それはあなたがそれがアップデートだと確信しているなら、あなたがやりたいことだけになります! – Alex

+0

私は三項演算@Alexを忘れてしまった –

関連する問題