Задача подсчета кликов по ссылке встала передо мною, поскольку я захотел реализовать у себя на сайте что-то наподобие строк NOLIX и DAOS. О том как сделать такую строчку я уже написал в статье: "как сделать строку как у NOLIX и DAOS". Данная статья является продолжением той статьи и носит технический характер анализа полученных результатов, а именно принципа определения кликов по каждому объявлению. Однако ниже описанный метод может использоваться для подсчета кликов по любым ссылкам. Код является универсальным и его можно легко модифицировать под Ваши конкретные цели.
Подсчет кликов по ссылке описанный ниже придуман лично мною. Не удивляйтесь, если Вы сможете реализовать этот механизм ещё лучше, поскольку я не мега крутой веб-программист. Мой способ основан на использовании 4ех технологий HTML, JavaScript, PHP и MySQL. Было бы неплохо, если бы Вы что-то понимали в этих языках, но не стоит особо переживать, если у Вас нет никаких навыков их использования, поскольку все исходные коды я приведу ниже. Ваша задача только правильно все установить и настроить это под себя. Если же Вы ничего не понимаете в кодах, то, скорее всего, Вам проще всего использовать Яндекс Метрику или Google Analitics, которые так же позволяют подсчитывать клики по ссылке.
Итак, начнем описание моего способа. Вам он может показаться большим и страшным, но на самом деле все очень просто. Большовизна этой статьи связана не со сложностью ниже приведенного кода, а лишь с тем, что я описываю все шаги подробно и поэтому даже новичок должен разобраться, что есть что.
Сразу хочу дать ссылку на скачивание архива: cntclick.rar, в котором есть все необходимые файлы для работы. Поэтому настоятельно рекомендую скачать его заранее.
Реализация механизма
1. Создание AJAX функции
Создать файл rttr.js (название можете придумать другое или вообще записать его содержимое в уже существующий файл .js). Главная суть этого файла в том, что в нем описана специальная функция setrate:
function setrate(id) { $.ajax({ type: "POST", url: "/sts/click.php", data: "id=" + id }); }
Кратко опишу, что делает эта функция. Функция setrate получает параметр id и с помощью метода POST посылает параметр id в файл /sts/click.php на исполнение. Уже в файле click.php происходит обработка полученного параметра (id), а далее и запись информации о клике в базу данных.
Итак, Ваша первая задача: создать файл rttr.js с содержимом, которое я указал чуть выше (также файл rttr.js есть в архиве cntclick.rar). На тех страницах где будет осуществляться подсчет кликов по ссылке подключите этот файл:
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/rttr.js"></script>
Файл jquery.js является копией ЯваСкрипта от Google: http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js. Можете подключать файл прямо с Гугла (установить прямой адрес в src="js/jquery.js"), но я скопировал его и добавил к себе на сайт, поскольку иногда бывает, что связь с Гуглом плохая и из-за этого сайт грузится долго.
2. Создание базы данных и таблиц
Для того, чтобы подсчитывать клики, нужно где-то хранить информацию, т.е. нужна база данных. Дабы не использовать файлы для хранения информации (т.к. это считается медленной реализацией), я решил сделать все красиво и воспользоваться MySQL. Для создания БД на MySQL Вы должны сделать следующее:
2.1. Зайдите к себе на хостинг и создайте базу данных. Если у Вашего сайта есть движок, то, скорее всего, уже есть созданная база данных. Однако можно все равно создать вторую бд, чтобы наша информация хранилась в отдельном месте, что на мой взгляд практичнее.
Примечание: я не описываю механизм создания БД на Вашем хостинге, поскольку на каждом хостинге она создается по-разному. Советую прочитать FAQ Вашего хостинга, там со 99.99% вероятностью есть информация о создании бд.
2.2. Создание таблиц для нашей задачи. Через phpmyadmin зайдите в панель управления базой данных. Нажмите выполнить SQL-запрос и напишите следующее:
CREATE TABLE `main_rtr` ( `id` int(12) UNSIGNED NOT NULL auto_increment, `click` int(11) UNSIGNED default 0, `text` varchar(180) default NULL, PRIMARY KEY (`id`) ) CREATE TABLE `click_data` ( `id_num` int(20) NOT NULL auto_increment, `id` int(11), `date` DATE default NULL, `time` varchar(10) default NULL, PRIMARY KEY (`id_num`), FOREIGN KEY(`id`) REFERENCES `main_rtr` )ENGINE=myisam;
Если по каким-то причинам возникли ошибки, то попробуйте создавать каждую таблицу по одной, т.е. в первом запросе создайте первую таблицу, во втором вторую таблицу. Если Вы впервые работаете с MySQL, то, скорее всего, Вам будет труднова-то разобраться.
Кратко опишу, что означают поля таблицы. Первая таблица main_rtr содержит следующие поля:
- id (уникальный идентификатор)
- text (анкоры ссылок)
- click (общее количество кликов)
Вторая таблица click_data содержит:
- id_num (уникальный идентификатор)
- id (для связи с первой таблицей)
- date (дату клика)
- time (время клика)
3. Создание конфигурационного файла
Здесь все просто: создаете специальный файл, где будут хранится настройки для подключения к БД. Например, можно назвать его config.php. Его содержимое представлено ниже:
<?php $dblocation = "localhost"; $dbname = "n_click"; $dbuser = "u_click"; $dbpasswd = "1234512345"; $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd); if (!$dbcnx) { echo "<p>К сожалению, не доступен сервер mySQL</p>"; exit(); } if (!mysql_select_db($dbname,$dbcnx) ) { echo "<p>К сожалению, не доступна база данных</p>"; exit(); } ?>
Отредактируйте файл config.php, заполнив Ваши данные (имя базы данных, логин и пароль в поля $dbname, $dbuser и $dbpasswd соответственно). Если база данных находится не на Вашем хосте, то нужно ещё поменять и параметр $dblocation.
4. Заполнение таблицы
Первую таблицу с именем main_rtr нужно заполнить анкорами ссылок, которые будут участвовать в подсчете кликов. Я сделал специальную миниформу, чтобы заполнять таблицу более удобно. Приводить сюда код я не стал в связи с тем, что статья и так получается слишком огромная. В архиве, который я привел выше, есть файлик add.php с помощью которого можно заполнить первую таблицу довольно просто и быстро.
Кратко о форме в файле add.php: эта форма просто выводит текстовое поле textarea, а далее по клику на кнопку "добавить" добавляет новую строку в первую таблицу.
5. Обработка результата клика
Для этого есть файл click.php, который нужно разместить в папку /sts. Его содержимое:
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/sts/config.php'; $id = $_POST['id']; //Получаем id записи $timenow = date ('H:i:s' ); // определяем текущее время $datenow = date ('Y-m-d'); // определяем текущую дату //Обновляем значение в первой таблице //+1 к тому mysql_query("UPDATE `main_rtr` SET `click` = `click` + 1 WHERE `id` = '$id' "); //Добавляем информацию о клике во вторую таблицу mysql_query("INSERT INTO `click_data` (`id`, `date`, `time`) VALUES('$id', '$datenow', '$timenow') "); ?>
Код очень простой и здесь особо не нужно вдаваться в подробности. Первый запрос повышает каждый раз значение поля click на единицу у той ссылки, по которой был осуществлен клик (ссылка определяется по параметру id). Вторая таблица вносит данные во вторую таблицу информацию о клике: дату, время и по какой ссылке был клик.
6. Подготовка ссылок для подсчета кликов
К тем ссылкам, которые учувствуют в подсчете кликов дописываем атрибут onclick="javascript:setrate(N)". Выглядит это примерно следующим образом в коде:
<a href="LINK1" onclick="javascript:setrate(1)">Анкор 1</a> <a href="LINK2" onclick="javascript:setrate(2)">Анкор 2</a> и т.д.
Число в скобочках у функции setrate должно соответствовать номеру id Вашего анкора в таблице main_rtr.
7. Вывод результатов
Для вывода результатов (статистики кликов) я разработал очень простой html-документ (stat.html). С помощью него удобно отслеживать те ссылки, по которым чаще всего кликают. Вся информация выводится в соответствующие таблицы.
Я не буду описывать каждую таблицу, т.к. они все похожи. Для примера рассмотрим только первую таблицу. Она выводит общую информацию о клике. Вот её код:
<!-- Начало вывода общей информации о кликах --> <table border="1" cellpadding=5 cellspacing=0> <th colspan="3"> За весь период </th> <tr> <td> ID </td> <td> Анкор </td> <td> Количество кликов </td> </tr> <?php //Выбираем и выводим записи $result = mysql_query("SELECT `id`, `click`, `text` FROM `main_rtr` "); $dtnw = date ('Y-m-d'); while ($row = mysql_fetch_array($result)) { $resulttemp = mysql_query("SELECT COUNT(`id`) AS `cnt` FROM `click_data` WHERE `id`='".$row['id']."' AND `date` ='".$dtnw."' "); $rowtemp = mysql_fetch_array($resulttemp) ?> <tr> <td> <?=$row['id']?> </td> <td> <?=$row['text']?> </td> <td> <b><?=$row['click']?></b> <?php if($rowtemp['cnt']!=0) echo "<font style=\"color:green\"> (+".$rowtemp['cnt'].")</font>"; ?> </td> </tr> <?php } //Выбираем и выводим записи $clicktoday = mysql_query("SELECT COUNT(`id_num`) AS `sum` FROM `click_data` WHERE `date` ='".$date."' "); $rowclicktoday = mysql_fetch_array($clicktoday); ?> <tr> <td> </td> <td> </td> <td> <b>∑</b> = <?php echo "<font style=\"color:green\"> +".$rowclicktoday['sum']."</font>"; ?> </td> </tr> </table> <!-- Конец вывода общей информации о кликах -->
Вот так это примерно выглядит в действии:
В скобочках выводится информация о кликах за сегодня, что очень удобно. Коды других таблиц (за вчера, за три дня, за семь дней, за тридцать дней) аналогичны и все есть в файле stat.html, который есть в приложенном архиве.
Вот таким образом можно реализовать подсчет кликов. Ещё раз ссылка на архив, где есть все выше описанные файлы: cntclick.rar.
Читайте также:
• Добавление счетчика посещений на сайт
• HTML теги <h1>-<h6> - заголовочные теги внутри страницы
• Элементы тега <form>: радиокнопки, списки, флажки, текстовые поля
• Как сделать бегущую строку на сайте
• Как увеличивать изображения (все способы)
• Как добавить социальные кнопки на сайт
• Коды символов для HTML