Почему запись после редактирования в форме не записывается в базу данных?

0

Почему запись после редактирования в форме не записывается в базу данных?

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

Где искать ошибку?

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');

} }
codeigniter

9 ответов

0

Что в модели $this->sneki_model->updateSneki написано?

0

Проверить обновления так можно: Вручную заполнить данные из метода 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, а также поля в базе данных, какие есть или нет. 

0
ничего не меняется

если нет, тогда проверяй документацию по update, а также поля в базе данных, какие есть или нет. 

где проверить документацию по update?

На страницах с видеоуроками есть ссылки на документацию или через google.

0

Я бы сделал так. Взял работающий метод updateNews, скопировал и назвал updateNews2, потом создал бы таблицу в базе news2 и проверил, что работает вставка в news2. Далее я бы начал по одному добавлять/изменять в таблице news2 поля и пробовал делать вставку. Примерно так.

0
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));
}
0

И потом попробуй запустить метод еще раз с вручную заполненными данными. Есть вставка в базу? - ничего не меняется

где проверить документацию по update?

public function updateNews($slug, $title, $text){

$data=array(
'title'=>$title,
'slug'=>$slug,
'text'=>$text
);
return $this->db->update('news', $data, array('slug'=>$slug));

}

эта функция у меня работает, а та - нет((

0

В БД все есть поля, которые описаны в коде, лишних нет

0

public function updateNews($slug, $title, $text){

$data=array(
'title'=>$title,
'slug'=>$slug,
'text'=>$text
);
return $this->db->update('news', $data, array('slug'=>$slug));

}

эта функция у меня работает, а та - нет((

0

спасибо, нашла ошибку.....

Sign up or Log in to write an answer