2013-02-20 2 views
0

У меня есть сайт, разрабатывающий в codeigniter, и я хочу сделать функцию, которая редактирует таблицу, но у меня есть две страницы, которые обновляют таблицу с помощью другого поля. Это моя функция в модели:Обновить все codeigniter

public function editHotel($service_id) { 
     $hotel_id = $this->getHotelByServiceId($service_id); 
     $hotel = array(
       'rating_id'=>$this->input->post('rating'), 
       'treatment_id'=>$this->input->post('treatment'), 
       'nation_id'=>$this->input->post('nation'), 
       'region_id'=>$this->input->post('region'), 
       'city_id'=>$this->input->post('city'), 
       'area_id'=>$this->input->post('area'), 
       'address'=>$this->input->post('address'), 
       'phone'=>$this->input->post('phone'), 
       'fax'=>$this->input->post('fax'), 
       'email'=>$this->input->post('email'), 
       'site'=>$this->input->post('site'), 
       'description_it'=>$this->input->post('description_it'), 
       'description_en'=>$this->input->post('description_en'), 
       'latitudine_google'=>$this->input->post('latitudine_google'), 
       'longitudine_google'=>$this->input->post('longitudine_google'), 
       'modified'=> date('Y-m-d H:i:s'), 
     ); 
     $this->db->where('service_id', $service_id); 
     $this->db->update('hotel',$hotel); 
    } 

В этой функции я имею upadtae всю таблицу, но у меня есть страница только с некоторого значения, и я хочу, чтобы обновить только это так:

public function editDescriptionHotel($service_id) { 
      $hotel_id = $this->getHotelByServiceId($service_id); 
      $hotel = array(
        'description_it'=>$this->input->post('description_it'), 
        'description_en'=>$this->input->post('description_en'), 
        'modified'=> date('Y-m-d H:i:s'), 
      ); 
      $this->db->where('service_id', $service_id); 
      $this->db->update('hotel',$hotel); 
     } 

И у меня есть другая страница, которая обновляет некоторое значение таблицы. Если я использую функцию «editHotel» на всей странице, если у меня нет входного ввода кодаигнера 0 в поле таблицы Возможно ли использовать только первую функцию «editHotel» и обновлять только те поля, которые я отправляю? Я хочу использовать только функцию на всех страницах, которые обновляют не все поля, а только те поля, которые у меня есть на странице. Возможно? Я не хочу, чтобы каждая страница обновляла таблицу, чтобы написать другое обновление функции таблицы

ответ

2

Ну, если вы сделаете так, чтобы ваши поля ввода имели то же имя, что и ваши столбцы таблицы, это легко:

public function updateHotels($service_id) 
{ 
    $hotel_id = $this->getHotelByServiceId($service_id); 
    $fields = array(); 

    foreach($this->input->post() as $k => $v){ 
    if($k != 'submit'){ //or anything you always want to esclude 
     $fields[$k] = $v; 
    } 
    } 

    $fields['modified'] = date('Y-m-d H:i:s'); 

    $this->db->where('service_id', $service_id); 
    $this->db->update('hotel', $fields); 
} 


для управления более тонкой, и лучшего повторного, вы можете передать в качестве аргумента массив escludable индексов (те, кто не хочет или не хотите, чтобы соответствовать вашим имена столбцов). И вы можете пойти еще дальше, и сделать список дополнительных полей, которые вы хотите добавил:

$exclude = array('submit', 'other_field'); 
$extra = array('modified' => date('Y-m-d H:i:s')); 

public function updateHotels($service_id, $exclude, $extra) 
    { 
     $hotel_id = $this->getHotelByServiceId($service_id); 
     $fields = array(); 

     foreach($this->input->post() as $k => $v){ 
     if(!in_array($k, $exclude){ 
      $fields[$k] = $v; 
     } 
     } 

     $columns = array_merge($fields, $extra); 

     $this->db->where('service_id', $service_id); 
     $this->db->update('hotel', $columns); 
    } 
+0

Это будет сгенерировано сообщение об ошибке, потому что кнопка 'submit' будет доступен в' Post' массива и 'обновления 'функция попытается также обновить поле' submit'. –

+0

Вы правы, не поразили меня. Я обновил свой ответ –

+0

Интересно, я попробую это решение! Я использую поле с тем же именем таблицы! –

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