Лічильник переглядів статті, сторінки

квітень 2014

Зміст


1. Структура зв'язків при реалізації лічильника
2. Відображення статистики відвідувачів та їх оцінки
3. Використання Бази Даних в контексті організації лічильника та проведення оцінки
4. Php-частина кодування. Алгоритм врахування оцінки відвідувачів статті чи сторінки сайту
5. Заключення

Частина 1. Структура зв'язків при реалізації лічильника.

Зручним та інформативним для адміністратора сайту буде лічильник переглядів сторінки, хоча й для відвідувача теж корисно буде знати чи користується подана інформація попитом серед інших.

Яскравим прикладом застосування такої задумки є Youtube.

приклад з Ютуба

Рис. 1. Скрін сторінки Youtube

Зазвичай такі перегляди на сторінці зображають знаком "Око" і кількість переглядів, чи відповідним значком, що має на увазі перегляд сторінки.

Можливо інформативним також буде опція "Like/Unlike" (подобається/не подобається) для оцінки сторінки сайту, що показує наскільки представлений матеріал корисний для відвідувача.

значок переглядів сторінки

13 567

значок переглядів сторінки

10 035

значок переглядів сторінки

2 879

Рис. 2. Приклад Форми статистики

Для реалізації цієї задумки, необхідно використати слідуючі елементи веб-програмування: html, php, MySQL

приклад з Ютуба

Рис. 3. Структура зв'язків



Частина 2. Відображення статистики відвідувачів та їх оцінки

Основне і саме простіше, це реалізація самої сторінки, що виконана за допомогою html-кодування.

Від html-кодування необхідно лише створити форму (Рисунок 4), що відправить інформацію про вподобання відвідувача "Like/Unlike", звичайно, якщо той захоче оцінити матеріал сторінки.

Прикладом html-кодування форми може бути такий варіант; (варто відзначити, що це лише html-варіант, для виведення статистичних даних відвідувань необхідно вставити php-кодування).

значок переглядів сторінки
690

Рисунок 4. Приклад Форми статистики (ця статистика працює)

Приклад кодування html-форми. В цій формі можна відзначити слідуюче, для обробника_форми.php передаються значення кнопок "Like" value="1" та значення "Unlike" value="0", сценарій обробника представлений дещо нижче частина 5.

<form method="post" action="обробник форми.php" >
<div style="width:140px;float:left">
<img src="eye.png" width="60px" ><br>
php-частина для виведення інформації кількості відвідувачів
</div>

<div style="float:left" >
<button type="submit" name="rate_like" value="1">
<img src="img_like.png" width="60px" ><br>
php-частина для виведення рейтингу - подобається
</button >

<button type="submit" name="rate_unlike" value="0">
<img src="img_unlike.png" width="60px" ><br >
php-частина для виведення рейтингу - не подобається
</button >
</div>

<div style="clear:both"></div>
</form >


Рисунок 5. Приклад кодування html-форми



Хоча можна і реалізувати варіант, що маємо один php-обробник, що формує форму відправлення оцінювання:

//отримуємо дані із БД про оцінювання
<?php 
$mysqli = new mysqli ("host", "user", "pass", "DB"); 
$result = $mysqli->query("
    SELECT `Visitors`,`Visitors_Like`, `Visitors_Unlike` 
    FROM `Visitors_Part_01`
    WHERE Visitors_key=1111");

$row = $result->fetch_assoc();

//формування форми
echo '...form method="post" action="обробник форми.php">
<img src="eye.png">';
echo row[Visitors];

echo '<button type="submit" name="rate_like" value="1">
<img src="img_like.png">';
echo row[Visitors_Like];


echo '<button type="submit" name="rate_unlike" value="0">
<img src="img_unlike.png">';
echo row[Visitors_Unlike];

echo '</form >';

?>


Частина 3. Використання Бази Даних в контексті організації лічильника та проведення оцінки.

Всі дані зберігаються в Базі Даних, а саме:
- масив даних Visitors_Ip,- Ip- адреса відвідувачів, необхідні, щоб перевіряти чи оцінював відвідувач сторінку сайту раніше і виключити багаторазове оцінювання,тип данних integer, varchart
- змінна Visitors,- кількість переглядів сторінки, тип данних integer,
- змінна Visitors_Like,- кількість оцінок "подобається", тип данних integer,
- змінна Visitors_UnLike,- кількість оцінок "не подобається", тип данних integer

Одним з варіантів для зберігання даних, може бути організація двух таблиць. В першій таблиці зберікати масив даних Ip-адреса, оскільки їх з часом може бути багато, і таблиця з часом буде зростати.

А в другій таблиці будемо зберігати лише три цифри; Visitors,- кількість переглядів сторінки;Visitors_Like,- кількість оцінок "подобається"; Visitors_UnLike,- кількість оцінок "не подобається".

В другій таблиці є додаткове поле Visitors_key- ключ, призначення якого звернення безпосередньо до рядка таблиці з цим ключем.

Тобто, якщо нам необхідно прочитати рядок, де знаходяться наші Visitors, Visitors_Like, Visitors_UnLike, то ми для в кодуванні вказуємо прочитати рядок, де ключ ( Visitors_key ) такий-то, в моєму випадку придумав значення 1111.

SQL-запит до нашої таблиці буде мати вигляд:

SELECT `Visitors`,`Visitors_Like`, `Visitors_Unlike` 
FROM `Visitors_Part_01` 
WHERE Visitors_key=1111

В переважній більшості на хостингу сайту разом з php директивами застосовують Систему Керування Базою Даних MySQL, для зручної роботи з якою встановлений phpMyAdmin.

Продукт phpMyAdmin відносно легкий в розумінні, дозволяє працювати з вашими даними, створювати різноманітні таблиці та керувати контентом таблиць в досить широкому спектрі. Сподіваюсь півгодини досить, щоб розібратись з його функціонуванням.



приклад створення таблиці в phpMyAdmin

Рисунок 6. Приклад створення таблиці в phpMyAdmin


Внесення даних в таблицю, використовуючи запит INSERT

Рисунок 7. Внесення даних в таблицю, використовуючи запит INSERT


Приклад створення таблиці в phpMyAdmin

Рисунок 8. Приклад створення таблиці в phpMyAdmin для масиву Ip-адресів відвідувачів



Частина 4. Php-частина кодування. Алгоритм врахування оцінки відвідувачів статті чи сторінки сайту

Завданням php-частини є:
Перше, при відображенні сторінки відразу вивести дані з таблиць на сторінку відвідувача,
Друге, при внесенні оцінювання сторінки сайту, виконати перевірку чи даний відвідувач ще не оцінював сторінку
Третє, внести дані до таблиці, якщо даний Ip-адрес, ще не оцінював сторінку.

Виводимo дані з таблиці 1 (Visitors, Visitors_Like, Visitors_Unlike)


<?php 
$mysqli = new mysqli ("host", "user", "pass", "DB"); 
$result = $mysqli->query("
    SELECT `Visitors`,`Visitors_Like`, `Visitors_Unlike` 
    FROM `Visitors_Part_01`
    WHERE Visitors_key=1111");

$row = $result->fetch_assoc();

echo 'Відвідувачів :'.$row['Visitors'].'
     Подобається: '.$row['Visitors_Like'].'
     Не подобається: '.$row['Visitors_Unlike'];

$mysqli->close();
?>

Таблиця 1

Відвідувачів : 690    Подобається: 26    Не подобається:     19

Кількість відвідувачів легко порахувати за допомогою php-кодування. Дізнаємся ip-адресу відвідувача та сумуємо її до змінної Visitors, що зберігається в Базі Даних, значення якої відповідає кількості попередніх відвідувачів.

<?php
// дізнаємось Ip-адрес відвідувача
$Temp_Visitors=$_SERVER["REMOTE_ADDR"];
// виводимо значення
echo 'Ваш Ip -адрес: ', $Temp_Visitors;


$mysqli = new mysqli ("host", "user", "pass", "DB");
$result = $mysqli->query("
  SELECT `Visitors` 
  FROM `Visitors_Part_01` 
  WHERE Visitors_key=1111");
$row = $result->fetch_assoc();
// Добавляємо ще одного глядача
$new_number=$row['Visitors']+1;
// Замінюємо значення кількості відвідувічів в таблиці 1
$mysqli->query("
  UPDATE `Visitors_Part_01` 
  SET `Visitors`='$new_number' 
  WHERE Visitors_key=1111 ");
// Вносимо Ip-адресу в таблицю 2
$mysqli->query("
  INSERT INTO `Visitors_Part_02`(`Visitors_Ip`) 
  VALUES ('$Temp_Visitors') ");
$mysqli->close();

?>

Перевірити чи проводив оцінювання відвідувач сайту можна слідуючим чином, елементарно згідно блок-схеми на рисунку 9: Вибираємо дані з таблиці ip-відвідувачів

блок-схема

Рисунок 9. блок-схема перевірки Ip-адресів


Обробник форми знаходиться в окремому php-файлику і має слідуючий вигляд

<?php

/ / приймаємо дані подобається-не подобається 
$Visitors_Like = $_POST['rate_like'];


/ / отримуємо Ip-адресу відвідувача
$Temp_Visitors=$_SERVER["REMOTE_ADDR"];

/ / зєднання з базою даних
$mysqli = new mysqli("host", "user", "pass", "dbe");

//чи проводив оцінювання відвідувач

$result = $mysqli->query("SELECT `Visitors_Ip` FROM `Visitors_Part_02`");
for ($row_no = $result->num_rows - 1; $row_no >= 0; $row_no--){
  $result->data_seek($row_no)
  $row = $result->fetch_assoc();
  / / якщо Ipадреса співпадають то виводим повідомлення
  if ($Temp_Visitors==$row['Visitors_Ip']){
    header ("Location:.../visitors_info_page.html");
    exit;
  };
};

/ / перевіряємо оцінку
if ($Visitors_Like=='1'){
  $result = $mysqli->query("SELECT `Visitors_Like` 
                            FROM `Visitors_Part_01` 
                            WHERE Visitors_key=1111");
  $row = $result->fetch_assoc();
  $new_number=$row['Visitors_Like']+1;
  $mysqli->query("UPDATE `Visitors_Part_01` 
  SET `Visitors_Like`='$new_number' 
  WHERE Visitors_key=1111");
   $mysqli->close();
};


if ($Visitors_Like=='0'){
  $result = $mysqli->query("SELECT `Visitors_Unlike` 
                            FROM `Visitors_Part_01` 
                            WHERE Visitors_key=1111");
  $row = $result->fetch_assoc();
  $new_number=$row['Visitors_Unlike']+1;
  $mysqli->query("UPDATE `Visitors_Part_01` 
                  SET `Visitors_Unlike`='$new_number' 
                  WHERE Visitors_key=1111 ");
  $mysqli->close();
};


/ / повертаємось на попередню сторінку
header ("Location:.....#anchor");
exit;
?>


Заключення

Що ж на цьому можна завершити знайомство з простою формою підрахунку кількості відвідувачів веб-сторінки.

P.S. Це один з перших моїх навчальних матеріалів по базам даних та й взагалі по php-кодуванню, відповідно робіть відповідні висновки :)