Как избавиться от дублирования записи в базу данных при каждом обновлении страницы?

0

Приветствую!

Суть вопроса вот в чем. 

Проходу в данный момент курс по Codeigniter. Поставленная задача, создать функционал отправки коментариев со страницы просмотра фильма в базу данных. Сам функционал я создал, в базу коментарии отправляются. Но при каждом обновлении страницы после отправки комента, это самый комент дублируется в базе данных. Для решения этой проблеммы создал костыль (после отправки комента идет редирект на страницу "comment_success". Отрывок кода из контроллера Movies прилагается. 

Так вот, как можно сделать так, чтобы при успешной отправке коментария я остался на этой же странице и при этом небыло дублирования записей в БД при обновлении этой страницы? 

Заранее спасибо за ответ

if($this->input->post('text')) {

	$user_id = $this->dx_auth->get_user_id();
	$movie_id = $movie_slug['id'];
	$comment_text = $this->input->post('text');
			
	if($this->comments_model->setComments($user_id, $movie_id, $comment_text)) {
		$this->load->view('templates/header', $this->data);
		$this->load->view('movies/comment_success', $this->data);
		$this->load->view('templates/footer');				
	}
}

$this->load->view('templates/header', $this->data);
$this->load->view('movies/view', $this->data);
$this->load->view('templates/footer');
codeigniter

2 ответов

0

Спасибо, добрый человек. все заработало просто отлично!

Вот мое решение:

if($this->input->post('text')) {

	$user_id = $this->dx_auth->get_user_id();
	$movie_id = $movie_slug['id'];
	$comment_text = $this->input->post('text');
			
	if($this->comments_model->setComments($user_id, $movie_id, $comment_text)) {
					
		header("Location: " . $_SERVER['REQUEST_URI']);
     	        exit();	
     					
	}
}

$this->load->view('templates/header', $this->data);
$this->load->view('movies/view', $this->data);
$this->load->view('templates/footer');

1

Посмотри решение в этом вопросе, мне помогло:

https://fructcode.com/ru/qa/pochemu-pri-kajdom-obnovlenii-tablisi/

Sign up or Log in to write an answer