Хочу реализовать что то такое: Имеем на сайте кнопку и имеем счётчик:
После того как я нажал на "Добавить в любимые", становится так +1: После того как нажал "Удалить из любимых" -1 стало.
В JS я понял как это всё реализовать. Добавляет и удаляет "+1", "-1". Но я не могу понять как сделать, чтоб оно записалось и пользователи видели "кто сколько нажал" в общем кликов. Для каждого товара, свой счётчик получается.
Таблица: ok_products
Столбец сделал: loves
Структура:
Подскажите идеи, может кто такое реализовывал???
размета html где счётчик
<span class="loves" id="loves_{$product->id}">
<span name="loves">{$product->loves}</span>
Влюблёны
</span>
Разметка кнопки нажатия
<div class="whilist">
<div>
<span class="fn_wishlist wishlist_button-right serdce"></span>
{if $smarty.get.module != "WishlistView"}
{if $product->id|in_array:$wished_products}
<a href="#" data-id="{$product->id}" class="fn_wishlist wishlist_button selected like" title="{$lang->remove_favorite}" data-result-text="{$lang->add_favorite}">
<span class="buttom-delete">Удалить из любимыx</span>
</a>
{else}
<a href="#" data-id="{$product->id}" class="fn_wishlist wishlist_button" title="{$lang->add_favorite}" data-result-text="{$lang->remove_favorite}">
<span class="buttom-add">{$lang->dobavit_v_lyubimye_}</span>
</a>
{/if}
{/if}
</div>
</div>
Сам Jquery который делает накидал временно так: Добавление +1
$(document).on('click', '.wishlist_button', function(e) {
e.preventDefault();
var lovesAmmount = $("[name='loves']");
$('.loves span').html(lovesAmmount.val() + 1);
});
Удаление -1
$(document).on('click', '.wishlist_button.selected', function(e) {
e.preventDefault();
var lovesAmmount = $("[name='loves']");
$('.loves span').html(1 - 1);
});
Сайт сам ссылка
Ajax сделал:
$(".wishlist_button").click(function() {
$.ajax({
url: 'ajax/loves.php', /* Куда пойдет запрос */
method: 'post', /* Метод передачи (post или get) */
dataType: 'html', /* Тип данных в ответе (xml, json, script, html). */
data: {name: $("#name").val()}, /* Параметры передаваемые в запросе. */
success: function(data){ /* функция которая будет выполнена после успешного запроса. */
$('#result').html(data);
}
});
});
Сайт loves.php:
if (isset($_POST['name']) && isset($_POST['name'])) {
//$product_id = intval(str_replace('product_', '', $_POST['id']));
$name = $_POST['name'];
//$name = "321";
$query = $okay->db->placehold("UPDATE ok_products SET loves = '.$name.' WHERE id = '214'");
$okay->db->query($query);
//$product = $okay->db->result();
}
Разметка html:
<input type="text" id="name">
В итоге имеем кнопку и имеем input, где ввожу любое число и где сердце закрашенное выводит, только в запросе 1 товар
$query = $okay->db->placehold("UPDATE ok_products SET loves = '.$name.' WHERE id = '214'");
У вас тут в запросе ошибка, а именно там где точки возле переменной .$name., я так понимаю, вы хотели сделать конкатенацию строк? Правильный вариант:
$query = $okay->db->placehold("UPDATE ok_products SET loves = '" . $name . "' WHERE id = '214'");
Возможно после этих изменений все заработает. Ведь этим запросом, вы пытались сделать вставку строки .$name.
в поле, у которого тип int, и база данных скорее всего выдавала вам ошибку.
Так же, рекомендую обратить внимание на название переменных - они явно не совсем хорошо названы, например переменная $name
казалось бы, что там должно быть какое-то имя/название а там я так понимаю значение количества лайков.
Добавил переменную
$id = $_POST['id'];
Добавил запрос
$query = $okay->db->placehold("UPDATE ok_products SET loves = '$plus_love' WHERE id = '$id'");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как обратиться к группе пользователей на opencart через short_name? Версия 23
Не могу разобраться как привести в обычный текстИмею результат в виде строки json, вот кусок