Скрипт подсчета нажатия кнопки

12
S8
На сайте с 24.10.2011
Offline
18
5046

Всем здравствуйте, нужна помощь со скриптом:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jq.."></script>

<button class="but">+</button>

<span id="span"></span>

<script>

window.onload = function () {

span = document.getElementById('span');

var count = 0; //сюда записываем текущее значение

span.innerHTML = count;

document.body.onclick = function (e) {

e = e || event;

var target = e.target || e.srcElement;

if (target.className == 'but') {

count++;

span.innerHTML = count;

//здесь отсылаем новые данные на сервер

}

}

}

</script>

суть в чем: скрипт считает сколько раз была нажата кнопка, но при обновлении страницы счетчик сбрасывается на 0, нужно как то сохранить это значение, плюс к этому нужно чтобы если другой пользователь нажав на кнопку я со своей страницы видел что число прибавилось без перезагрузки страницы, ну и сделать ограничение на подсчет уникальным пользователям, т.е. каждый уник может нажать хоть сто кнопок но в зачет должно пойти только значение 1, желательно по айпи без срока давности. Кто может реализовать пишите сюда или в ПМ, работу оплачу.

R
На сайте с 18.12.2009
Offline
92
#1

Вам необходимо хранить данные в куках, например и все.

maldivec
На сайте с 04.11.2008
Offline
160
#2
rerighter:
Вам необходимо хранить данные в куках, например и все.

И что вы будете там хранить? Хотелось бы узнать.

ТС, конечно у вас будет все обнуляться, если вы делаете вот так:

var count = 0; //сюда записываем текущее значение

В этом месте переменной надо присвоить значение, взятое из БД.

Вы ведь в БД данные отправляете вот в этом месте:

//здесь отсылаем новые данные на сервер

Что мешает эти данные оттуда сначала взять, а потом уже обновлять?

И значение в

span.innerHTML = count;

тоже обновляйте только после отправки данных БД, при этом же запрашивайте новое значение и вставляйте на страницу, тогда юзер и будет видеть сразу актуальное значение, если в этот момент еще кто-то успел кликнуть.

Ну и фильтруйте клики тоже с помощью БД, засчитывайте только один клик с уникального IP, например.

R
На сайте с 18.12.2009
Offline
92
#3
maldivec:
Что мешает эти данные оттуда сначала взять, а потом уже обновлять?

Да, что мешает данные из "куков" брать?

Что и как должно работать в итоге не понятно. Если бы пользователь проходил регистрацию на сайте - было бы логично присваивать ему значения для его id. А в итоге куча мусора в базе от непонятных IP.

Но может так и надо, суть задачи не раскрыта полностью.

B1
На сайте с 13.12.2012
Offline
28
#4
rerighter:
Но может так и надо, суть задачи не раскрыта полностью.

именно так и надо.

хранить надо в БД а не в куках, иначе накрутят.

maldivec
На сайте с 04.11.2008
Offline
160
#5
rerighter:
Да, что мешает данные из "куков" брать?

Какие данные-то вы оттуда брать собрались?

Я зашел, увидел ноль, нажал на + и добавил значение, оно у меня в куку прописалось. Ок. Теперь я буду видеть там свою единичку.

Вы зашли на тот же сайт, увидели, естественно, тоже ноль, кликнули, добавили значение себе в куку.

Третий человек зашел - добавил значение себе в куку.

На сайте тем временем остается ноль.

Толк от этой ерунды какой?

R
На сайте с 18.12.2009
Offline
92
#6

Естественно данные при заходе на сайт будут из "куков" вставляться в форму (вместо нуля). Речь не об этом. Я говорю о том, где эти данные хранить. В любом случае, Ваш вариант не плох, да и ТСу подходит. Меня отталкивает реализация с базой, так как она создает много мусора в базе. Да и хранением только одного IP адреса, при том, что только у меня он меняется по 3 раза в день. Хотябы идентификацию юзера как-то к кукам привязать, вдогонку к проверке IP.

Станислав
На сайте с 27.12.2009
Offline
247
#7
Меня отталкивает реализация с базой, так как она создает много мусора в базе.

И где тут мусор? Мусор это бесполезная хранимая инфа, которая никому и никогда не пригодится. Вы что то путаете.

А реализовывать нужно и с записью в куки и с сохранением айпишника юзера в базу, разве это сложно?

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

Мы там, где рады нас видеть.
akishev
На сайте с 21.05.2011
Offline
35
#8

Даже занесение в БД не полностью решает задачу:

плюс к этому нужно чтобы если другой пользователь нажав на кнопку я со своей страницы видел что число прибавилось без перезагрузки страницы
Станислав
На сайте с 27.12.2009
Offline
247
#9
akishev:
Даже занесение в БД не полностью решает задачу:

На js написать обновление блока каждую секунду например, тогда все будет норм.

maldivec
На сайте с 04.11.2008
Offline
160
#10
Ms-Dred:
На js написать обновление блока каждую секунду например, тогда все будет норм.

Именно так.

То же самый Ajax и по таймеру обновляем значение из базы. Другой вопрос, нужно ли это. Но если хочется - все решаемо.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий