Обновление пакета с помощью CodeIgniter

Я пытаюсь сделать небольшую открытую CMS с CodeIgniter, и теперь я работаю над системой категорий.

Я действительно застрял в этом, и после многих попыток и сообщений на форуме я этого не решал.

У меня есть 2 таблицы mySQL

  • # 1: ft_categories (список всех имен категорий с двумя полями: category_name и id)
  • # 2: ft_upload_data (список всех сообщений с такими полями, как id, название, категория, дата и т. Д.)

Я хочу ОБНОВИТЬ my # 1 TABLE с данными в форме имен редакции (эта форма заполняется входом в цикле для одновременного редактирования нескольких категорий)

Вот :

if ($result != NULL) { echo form_open('admin/update_categories/'); if (isset($result) && $result != NULL) { foreach ($result as $row) { echo form_input('category_name[]' ,$row->category_name); echo anchor("admin/delete_category/$row->category_name", 'Delete category'); echo '<br /><br />'; } echo '<br /><br />'; echo form_submit('','Save'); echo form_close(); } } else { echo 'NO categories'; } 

Это форма с входами, полученными из БД, где вы можете редактировать имя.

Теперь, когда вы редактируете имена категорий, вы переходите в CONTROLLER 'update_categories', чтобы выполнить запрос UPDATE

  function update_categories(){ $i = 0; foreach ($this->input->post('category_name') as $cat) $data[$i++]['category_name'] = $cat; // The $i++ creates a multi-dimensional array to insert // multiple rows into the DB. $this->admin_model->update_categories($data); } 

Это приведет к получению полей мультипликаторов для ОБНОВЛЕНИЯ БД. И теперь я иду в МОДЕЛЬ, чтобы ОБНОВИТЬ данные в БД и ЗДЕСЬ ПРОБЛЕМА:

  function update_categories($data) { ? 

Я не знаю, что я могу сделать для правильного обновления имен с помощью чего-то типа insert_batch, но с UPDATE, потому что, хотя мне нужно ОБНОВИТЬ ТАБЛИЦУ №1, мне также НЕОБХОДИМО обновить имя в поле в TABLE # 2 Double UPDATE на 2 таблицы и 1 пакетное ОБНОВЛЕНИЕ в ТАБЛИЦЕ # 1

Очевидно, я попытался добавить еще одну ТАБЛИЦУ: ТАБЛИЦА № 3, которая получает идентификатор поля TABLE # 1 и сопоставляет его с идентификатором поля TABLE # 2, но я не могу понять, как это сделать между тремя таблицами.

Любая помощь будет очень оценена! Большое спасибо!! (Извините за мой плохой английский)


Спасибо за ответ!

Хорошо, у меня есть эта третья таблица, теперь я хотел бы получить «category_name», чтобы показать это в «post»,

У меня есть это :

  $this->db->order_by('rank', 'asc'); $this->db->select('*'); $this->db->from('ft_upload_data'); $this->db->join('ft_categories', 'assigned_categories.ft_categories_id = assigned_categories.ft_upload_data_id'); $query = $this->db->get(); return $query->result(); 

Но в нем говорится, что в разделе «on» имеется Неизвестный столбец «assign_categories.ft_categories_id»

(assign_categories – это мой третий TABLE с идентификатором сообщения и идентификатором категории)

Есть идеи?

попробуйте использовать UPDATE_BATCH

 $this->db->update_batch(); $data = array( array( 'title' => 'My title' , 'name' => 'My Name 2' , 'date' => 'My date 2' ), array( 'title' => 'Another title' , 'name' => 'Another Name 2' , 'date' => 'Another date 2' ) ); $this->db->update_batch('mytable', $data, 'title'); 

Первый параметр будет содержать имя таблицы, второй – ассоциативный массив значений, третий – ключ where.

надеюсь эта помощь ……………………

 UPDATE // Produces: // UPDATE `mytable` SET `name` = CASE // WHEN `title` = 'My title' THEN 'My Name 2' // WHEN `title` = 'Another title' THEN 'Another Name 2' // ELSE `name` END, // `date` = CASE // WHEN `title` = 'My title' THEN 'My date 2' // WHEN `title` = 'Another title' THEN 'Another date 2' // ELSE `date` END // WHERE `title` IN ('My title','Another title') 

Во-первых, вы не можете обновлять несколько строк в одном запросе, поэтому для обновлений нет ничего похожего на insert_batch () – вы должны сделать это в цикле для каждой строки. Затем вы должны использовать третью таблицу для связывания идентификатора сообщения с идентификатором категории в соотношении от одного до большого, используя внешние ключи (InnoDB, худшая производительность) ИЛИ, по крайней мере, использовать поле category_id в таблице 2, которое ссылается на идентификатор категории, поэтому вы не необходимо обновить эту таблицу в случае изменений в таблице 1.