Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Доработать запрос в БД


kuripka2222

Recommended Posts

Всем привет) 
Вопрос для знающих php и js

Как сделать проверку по IP?

Сейчас на сайте я сделал добавления лайка (мне нравится товар) , при клике на кнопку в базу данных добавляется значение + 1, но если кликнуть на кнопку 20 раз, то и значение в базе увеличится на 20. Как мне доработать всю эту конструкцию таким способом, чтобы при клике проверялось ip пользователя и если он ранее уже нажимал, то в таком случае чтобы из базы вычиталось 1 значение. 




В модели 

public function updateLike($product_id) {
	$this->db->query("UPDATE " . DB_PREFIX . "product SET likes = (likes + 1) WHERE product_id = '" . (int)$product_id . "'");
}

В контроллере 

public function setLike() {
		$this->load->language('product/product');
		$this->load->model('catalog/product');

		if (isset($this->request->post['product_id'])) {
			$product_id = $this->request->post['product_id'];
		} else {
			$product_id = 0;
		}
  
		$updateLike = $this->model_catalog_product->updateLike($product_id);
 
		$likessd = $this->model_catalog_product->getProduct($product_id);
 
		$json = array();
 
		$json['likes'] = sprintf($this->language->get('text_likes'), $likessd['likes']);
 
		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
    }

В виде 

<button class="btn btn-default" id="like" data-loading-text="{{ text_loading }}" onclick="addLike({{ product_id }});">{{ text_like }}
<span class="like_count">{{ likes }}</span></button>

<script>
function addLike(product_id) {
	var product_id = product_id;
	$.ajax({
		url: 'index.php?route=product/product/setLike',
		type: 'post',
		data: 'product_id=' + product_id,
		dataType: 'json',
		beforeSend: function () {
			$('#like').button('loading');
		},
		complete: function () {

		},
		success: function (json) {
			setTimeout(function () {
				$('#like').html('<span class="like_count">{{ text_like }} ' + json['likes'] + '</span>');
			}, 100);
		},
		error: function (xhr, ajaxOptions, thrownError) {
			alert(thrownError + '\r\n' + xhr.statusText + '\r\n' + xhr.responseText);
		},
	});
}
</script>

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.