2016-06-11 2 views
2

У меня проблема немного отличается от this и this. В моем классе модели мне пришлось отделить удаление и сохранить в две разные функции следующим образом.База данных Codeigniter удаляет и вставляет несколько записей

#save advanced preferences 
function savePreference($preferences){ 

    $this->db->insert('bingo_advanced_preferences', $preferences); 
    echo $this->db->last_query(); 

} 

#delete advanced preferences 
function deletePreference($user_id,$criteria){ 
return $this->db->delete('bingo_advanced_preferences', array('bingo_user_id' => $user_id,'adv_criteria' =>$criteria)); 

} 

, если я вызываю эти функции с контроллера, как это, удаление, обновление работает.

//language preferences 


      if($this->input->post('language') && count($this->input->post('language')) > 0): 
       $this->Bingo_advanced_preferences->deletePreference($user,'15'); 
       for ($i=0; $i < count($this->input->post('language')); $i++) { 
        $language_options = array(
        'bingo_user_id' => $user, 
        'adv_criteria' => 15, //languages 
        'adv_criteria_value' => $this->input->post('language')[$i], 
        'adv_date_created' => date('Y-m-d H:i:s') 
        ); 
       $this->Bingo_advanced_preferences->savePreference($language_options); 
       } 
      endif; 

Однако это не угождать для сценария, где кто-то снимает выделение все так правильный порядок должен быть.

$this->Bingo_advanced_preferences->deletePreference($user,'15'); 

    if($this->input->post('language') && count($this->input->post('language')) > 0): 

      for ($i=0; $i < count($this->input->post('language')); $i++) { 
       $language_options = array(
       'bingo_user_id' => $user, 
       'adv_criteria' => 15, //languages 
       'adv_criteria_value' => $this->input->post('language')[$i], 
       'adv_date_created' => date('Y-m-d H:i:s') 
       ); 
      $this->Bingo_advanced_preferences->savePreference($language_options); 
      } 
     endif; 

Это удаляет все записи с помощью adv_criteria = 15 и никогда не обновляется (выполните последующую экономию). Конечно, я решил проблему с выражением if else, поэтому мой вопрос в том, почему это не работает? Как мы можем это сделать?

+0

Я не понял эту часть из последнего абзаца - «Это только удаляет все записи и никогда не обновляется ». – BlackBurn027

+0

Я уточнил вопрос –

+0

Хорошо, давайте попробуем, если ничего не выбрано, в дальнейшем ничего не сохранится. если что-то выбрано, я не вижу никаких проблем с последующим сохранением. так что все выглядит хорошо для меня: o исправьте меня, если я ошибаюсь – BlackBurn027

ответ

1

Для Delete, Вы можете сделать это на вид файла как

<input type='checkbox' name='tableId[]' value='<?php echo $value->tableId; ?>"'> 

Тогда на контроллере, как этот

function delete_multiple() { 
    // Retrive Multiple Id List From Form 
    $check_id = $this->input->post('tableId[]'); 

     // Multiple Delete Loop For Id 
     foreach($check_id as $checkId) { 
      $this->db->where('tableId', $checkId); 
      $this->db->delete('TableName'); 
     } 
} 

Для вставки, вы можете сделать это на вид файла такой же, как выше Тогда на контроллер такой как

function multiple_add() { 
    $table_Id = $this->input->post('tableId[]'); 

    foreach($table_Id as $tableId) { 

    $data_some = array(
    'tableId' => $tableId, 
    'blah' => $this->input->post('blah') 
    ); 

    // Insert Data Function Call 
    $this->db->insert('TableName', $data_some); 
    } 
} 
+1

нет запросов в контроллере! это «Контроллер», а не «Модель». Сначала получите основы правильно. – BlackBurn027

Смежные вопросы