0

レコードを更新するために使用しているモーダルにフォームがあります。フォームは問題なく送信され、ブラウザーの URL は正しい場所 (domain.net/cities/update_city/1) を指していますが、ビューが表示されず、レコードが更新されません。私はインターネットを検索しましたが、ほとんどのチュートリアルは、更新をざっと見ているか、更新する ID をハードコーディングしているようです。CI を使用して 1 週間しか経っていません。

型式コード

// Edit City
function edit_city($city_id) {
    $data = array('city_name' => $this->input->post('city_name'));
    $this->db->where('city_id', $city_id);
    $this->db->update('cities', $data);
}

コードを表示 (フォームはモーダルで、jQuery によって追加された city_id を取得します)

<div class="modal-body">
    <?php $this->load->helper('form'); ?>
        <?php echo form_open('/cities/update_city/'); ?>
        <label class="control-label" for="name">City</label>
        <input type="text" name="city_name" id="city_name" value=""/><br />
        <input type="submit" name="submit" class="btn-small btn-primary" value="Edit City" />
        <button class="btn-small" data-dismiss="modal">Cancel</button>
    <?php echo form_close(); ?>
</div>
<script>
  // scripts for modal windows
      $(document).on("click", ".edit-modal", function () {
      var city_name = $(this).data('name');
      var city_id = $(this).data('id');
      $(".modal-body #city_name").val( city_name );
      //set the forms action to include the city_id
      $(".modal-body form").attr('action','/cities/update_city/'+city_id);
      $('#editCityDialog').modal('show');
  });       

コントローラーコード

// Update City
function update_city($city_id) {
$this->load->model('cities_model');

    if ($this->input->post('submit')) {
        $data = array('city_name' => $this->input->post('city_name'));

        $this->cities_model->edit_city('cities', array('city_id' => $city_id),$data);
        redirect('/cities');
    }
}
4

1 に答える 1

1

以下に例を示します。これを使用して簡単に更新できます (英語が苦手です。申し訳ありません)。

モデル:

class Cities_model extends CI_Model{
    function edit($table,$where,$data){
       foreach ($where as $key => $value){
            $this->db->where($key,$value);
        }
        $this->db->update($table,$data);        
    }
}

コントローラ:

    function update_city($city_id){
    $this->load->model('cities_model');
         if($this->input->post('submit'){
         $data = array('city_name' => $this->input->post('city_name'));

         $this->cities_model->edit('cities',array('city_id' => $city_id),$data); //(table,where,data); see in model.
         redirect(''); 
         }
     }

* "http://......update_city/2" としてリンクし、関数 update_city($city_id) に移動すると、$city_id は "2" として受信され、$city_id を取得するために uri_segment を記述する必要はありません. あなたを助けることを願っています

編集 :

コントローラ:

function update_city($city_id) {
$this->load->model('cities_model');

if ($this->input->post('submit')) {
    $this->cities_model->edit_city($city_id);
    redirect('/cities');
}

}

于 2012-11-14T02:09:18.480 に答える