Как я могу сделать универсальный счетчик кликов?

У меня есть gif на моей веб-странице, который зацикливается только один раз, и я установил его так, чтобы он перезагружался каждый раз, когда я щелкаю по нему (используя эффект onclick). Я дал этому эффекту onclick время восстановления 800 мс, то есть продолжительность GIF, так что вы не можете перезагрузить GIF, пока он не закончится. Я также добавил эффект клик-клинтера к этому гифу, чтобы он показывал +1 на счетчике каждый раз, когда его нажимали. В целях точности и качества, я также дал эффекту clickcounter время восстановления 800 мс, что означает, что вы не можете добавлять больше (+1) каждые 0,8 секунды. Я использовал следующий скрипт:

Javascript

<script>
$(function(){
    var update_count = function () {
        $('#count-block').html("<h3><b>The rabbit has jumped " + image.click_count + " meters.</b></h3>");
    }
    var image = new Image();
    image.in_action = false;
    image.duration = 800;
    image.click_count = 0;
    update_count();
    image.src ='transparent.gif';
    $('#img').click(function(){
        if (!image.in_action) {
           image.in_action = true;
           image.click_count += 1;
           update_count();
           $(this).attr('src',image.src);
            window.setTimeout(function() {
                image.in_action = false;
            }, image.duration);

        }
    });
});
</script>

Это прекрасно работает, как вы можете видеть из этой ссылки на мою веб-страницу, но я хотел бы сделать эффект клик-контура универсальным. Под этим я подразумеваю то, что я хотел бы, чтобы клики были сохранены в папке (возможно, в моей основной папке в моей базе данных), чтобы каждый клик учитывался друг за другом, что означает, что клики будут накапливаться. Например, если я нажимаю кнопку 10 раз, а кто-то другой (на совершенно другом компьютере / сети / области) нажимает кнопку 12 раз, общее количество нажатий будет 22 и т. Д.

Вы можете найти ссылку JSFiddle на мою веб-страницу здесь

Я довольно плохо знаком со сценариями, HTML и т. Д., Поэтому понадобятся грубые объяснения. Я еще не опробовал таблицы стилей или что-либо, связанное со сторонним элементом / папкой и т. Д. (Что, я считаю, требуется для этого проекта), так что я бы оценил, если бы вы могли обсудить этот процесс.

Я пойду дальше в деталях и разработаю мои предпочтения, если это необходимо! Не стесняйтесь использовать ссылку JSFiddle и проверить веб-страницу в ее текущем состоянии

Спасибо всем заранее!

(кстати, для чего это стоит, моя база данных работает на PHP)

1 ответ

Вот мое предложение, и я не проверял его, поэтому я не уверен на 100%, что это работает, но создаю скрытое поле ввода с помощью jQuery(я предполагаю, что это библиотека, которую вы используете, основанная на первой функции).

$("#img").append("<input type='hidden' name='counter' id='counter' value='" +image.click_count +"' />

Затем в PHP опубликуйте значение поля ввода. Затем вставьте это значение в вашу базу данных, например.

PHP

    $counter = $_POST["counter"];
    **INSERTING THE CLICK COUNTS**
    mysqli_query($dbconnection, "INSERT INTO 'clicks'(`clicks`) VALUES('" .$counter ."');

$query = mysqli_query($dbconnection, "SELECT SUM(clicks) AS 'Clicks' FROM 'clicks');
while($row = mysqli_fetch_assoc($query){
    $clickNumber = "{$row['clicks']}";
}

Конечно, это всего лишь "черновик", и вам придется изменить его в соответствии с вашими потребностями, но он должен помочь вам начать. Вам также придется заменить имена таблиц и полей на то, что находится в вашей базе данных, но это общая идея.

Другие вопросы по тегам