Почему запись после редактирования в форме не записывается в базу данных?
Почему запись после редактирования в форме не записывается в базу данных?
вся запись вызывается из базы данных в форму, редактируется, но не записывается в БД.
Где искать ошибку?
public function edit($slug = NULL) {
if(!$this->dx_auth->is_admin()) {
show_404();
}
$this->data['title'] = 'Редактировать модели';
$this->data['sneki_item'] = $this->sneki_model->getSneki($slug, FALSE, FALSE );
if (empty($this->data['sneki_item'])) {
show_404();
}
$this->data['id_sneki'] = $this->data['sneki_item']['id'];
$this->data['slug_sneki'] = $this->data['sneki_item']['slug'];
$this->data['title_sneki'] = $this->data['sneki_item']['title'];
$this->data['descriptions_sneki'] = $this->data['sneki_item']['descriptions'];
$this->data['price_sneki'] = $this->data['sneki_item']['price'];
$this->data['size_sneki'] = $this->data['sneki_item']['size'];
$this->data['poster_sneki'] = $this->data['sneki_item']['poster'];
$this->data['poster1_sneki'] = $this->data['sneki_item']['poster1'];
$this->data['poster2_sneki'] = $this->data['sneki_item']['poster2'];
$this->data['poster3_sneki'] = $this->data['sneki_item']['poster3'];
$this->data['add_date_sneki'] = $this->data['sneki_item']['add_date'];
$this->data['category_nal_sneki'] = $this->data['sneki_item']['category_nal'];
$this->data['category_color_sneki'] = $this->data['sneki_item']['category_color'];
if($this->input->post('slug') && $this->input->post('title') && $this->input->post('descriptions') && $this->input->post('price') && $this->input->post('size') && $this->input->post('poster') && $this->input->post('poster1') && $this->input->post('poster2') && $this->input->post('poster3') && $this->input->post('add_date') && $this->input->post('category_nal') && $this->input->post('category_color')) {
$id = $this->data['sneki_item']['id'];
$slug = $this->input->post('slug');
$title = $this->input->post('title');
$descriptions = $this->input->post('descriptions');
$price = $this->input->post('price');
$size = $this->input->post('size');
$poster = $this->input->post('poster');
$poster1 = $this->input->post('poster1');
$poster2 = $this->input->post('poster2');
$poster3 = $this->input->post('poster3');
$add_date = $this->input->post('add_date');
$category_nal_sneki = $this->input->post('category_nal');
$category_color = $this->input->post('category_color');
if($this->sneki_model->updateSneki($id, $slug, $title, $descriptions, $price, $size, $poster, $poster1, $poster2, $poster3, $add_date, $category_nal, $category_color)) {
$this->data['title'] = 'Успешно обновлено';
$this->load->view('templates/header', $this->data);
$this->load->view('sneki/edited');
$this->load->view('templates/footer');
}
}
else{
$this->data['title'] = 'Не обновлено';
$this->load->view('templates/header', $this->data);
$this->load->view('sneki/edit', $this->data);
$this->load->view('templates/footer');
} }
После редактирования выполняется else
else{
$this->data['title'] = 'Не обновлено';
$this->load->view('templates/header', $this->data);
$this->load->view('sneki/edit', $this->data);
$this->load->view('templates/footer');
} }
9 ответов
Что в модели $this->sneki_model->updateSneki написано?
Проверить обновления так можно: Вручную заполнить данные из метода updateSneki, примерно так:
$data = array(
'id' => 538,
'slug' => "asdasdasdasd",
'title' => "test",
'descriptions' => "test desc",
'price' => 50,
'size' => 100,
'poster' => "poster",
'poster1' => "poster1",
'poster2' => "poster2",
'poster3' => "poster3",
'add_date' => "25.06.2020",
'category_nal' => "1",
'category_color' => "red"
);
И потом попробуй запустить метод еще раз с вручную заполненными данными. Есть вставка в базу? Если есть, тогда смотри, какие данные приходят из контроллера, если нет, тогда проверяй документацию по update, а также поля в базе данных, какие есть или нет.
ничего не меняется
если нет, тогда проверяй документацию по update, а также поля в базе данных, какие есть или нет.
где проверить документацию по update?
На страницах с видеоуроками есть ссылки на документацию или через google.
Я бы сделал так. Взял работающий метод updateNews, скопировал и назвал updateNews2, потом создал бы таблицу в базе news2 и проверил, что работает вставка в news2. Далее я бы начал по одному добавлять/изменять в таблице news2 поля и пробовал делать вставку. Примерно так.
public function updateSneki($id, $slug, $title, $descriptions, $price, $size, $poster, $poster1, $poster2, $poster3, $add_date, $category_nal, $category_color) {
$data = array(
'id' => $id,
'slug' => $slug,
'title' => $title,
'descriptions' => $descriptions,
'price' => $price,
'size' => $size,
'poster' => $poster,
'poster1' => $poster1,
'poster2' => $poster2,
'poster3' => $poster3,
'add_date' => $add_date,
'category_nal' => $category_nal,
'category_color' => $category_color
);
return $this->db->update('sneki', $data, array('id' => $id));
}
И потом попробуй запустить метод еще раз с вручную заполненными данными. Есть вставка в базу? - ничего не меняется
где проверить документацию по update?
public function updateNews($slug, $title, $text){
$data=array(
'title'=>$title,
'slug'=>$slug,
'text'=>$text
);
return $this->db->update('news', $data, array('slug'=>$slug));
}
эта функция у меня работает, а та - нет((
В БД все есть поля, которые описаны в коде, лишних нет
public function updateNews($slug, $title, $text){
$data=array(
'title'=>$title,
'slug'=>$slug,
'text'=>$text
);
return $this->db->update('news', $data, array('slug'=>$slug));
}
эта функция у меня работает, а та - нет((
спасибо, нашла ошибку.....