Я прохожу практику , мне дали задание сделать счетчик статистики (самый простой ) . Я его сделал , теперь попросили сделать так что бы показывали общею сумму "просмотров" за определенный промежуток времени ( в данном случаи за год ).Уже 4 день сижу и ломаю голову над этим , хоть решение наверное легче легкого но хоть убей не могу додуматься . Помогите пожалуйста. Вот структура таблицы Вот код двух главных файлом (на всякий случай)
<?php include '../inc/db.php'; ?>
<html>
<head>
<meta charset = "utf-8" />
<body>
<style>
body { background-color: #F9F2E3; }
h2 {
background-color: rgb(214,86,43);
color: rgba(255,255,255,.9);
padding: 10px;
}
p { color: green; }
div {
background-color: hsl(60,100%,25%);
color: hsla(120,100%,50%,0.1);
}
</style>
</head>
</body>
</html>
<h2>Статистика</h2>
<p><a href="?interval=1">За сегодня</a></p>
<p><a href="?interval=7">За последнюю неделю</a></p>
<p><a href="?interval=30">За послединий месяц</a></p>
<p><a href="?interval=183">За последнюю пол года</a></p>
<p><a href="?interval=365">За последний год</a></p>
<table style="border: 1px solid silver;">
<tr>
<td style="border: 1px solid silver;">Дата</td>
<td style="border: 1px solid silver;">Уникальных посетителей</td>
<td style="border: 1px solid silver;">Просмотров</td>
</tr>
<?php
// Если в массиве GET есть элемент interval (т.е. был клик по одной из ссылок выше)
if ($_GET['interval'])
{
$interval = $_GET['interval'];
// Если в качестве параметра передано не число
if (!is_numeric ($interval))
{
echo '<p><b>Недопустимый параметр!</b></p>';
}
// Указываем кодировку, в которой будет получена информация из базы
@mysqli_query ($db, 'set character_set_results = "utf8"');
// Получаем из базы данные, отсортировав их по дате в обратном порядке в количестве interval штук
$res = mysqli_query($db, "SELECT * FROM `visits` ORDER BY `date` DESC LIMIT $interval");
// Формируем вывод строк таблицы в цикле
while ($row = mysqli_fetch_assoc($res))
{
echo '<tr>
<td style="border: 1px solid silver;">' . $row['date'] . '</td>
<td style="border: 1px solid silver;">' . $row['hosts'] . '</td>
<td style="border: 1px solid silver;">' . $row['views'] . '</td>
</tr>';
}
}
?>
<div>.</div>
</table>
<?php include 'db.php';
// Указываем кодировку, в которой будет получена информация из базы
@mysqli_query ($db, 'set character_set_results = "utf8"');
// Получаем IP-адрес посетителя и сохраняем текущую дату
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$date = date("Y-m-d");
// Узнаем, были ли посещения за сегодня
$res = mysqli_query($db, "SELECT `visit_id` FROM `visits` WHERE `date`='$date'") or die ("Проблема при подключении к БД");
// Если сегодня еще не было посещений
if (mysqli_num_rows($res) == 0)
{
// Очищаем таблицу ips
mysqli_query($db, "DELETE FROM `ips`");
// Заносим в базу IP-адрес текущего посетителя
mysqli_query($db, "INSERT INTO `ips` SET `ip_address`='$visitor_ip'");
// Заносим в базу дату посещения и устанавливаем кол-во просмотров и уник. посещений в значение 1
$res_count = mysqli_query($db, "INSERT INTO `visits` SET `date`='$date', `hosts`=1,`views`=1");
}
// Если посещения сегодня уже были
else
{
// Проверяем, есть ли уже в базе IP-адрес, с которого происходит обращение
$current_ip = mysqli_query($db, "SELECT `ip_id` FROM `ips` WHERE `ip_address`='$visitor_ip'");
// Если такой IP-адрес уже сегодня был (т.е. это не уникальный посетитель)
if (mysqli_num_rows($current_ip) == 1)
{
// Добавляем для текущей даты +1 просмотр (хит)
mysqli_query($db, "UPDATE `visits` SET `views`=`views`+1 WHERE `date`='$date'");
}
// Если сегодня такого IP-адреса еще не было (т.е. это уникальный посетитель)
else
{
// Заносим в базу IP-адрес этого посетителя
mysqli_query($db, "INSERT INTO `ips` SET `ip_address`='$visitor_ip'");
// Добавляем в базу +1 уникального посетителя (хост) и +1 просмотр (хит)
mysqli_query($db, "UPDATE `visits` SET `hosts`=`hosts`+1,`views`=`views`+1 WHERE `date`='$date'");
}
}
Если я правильно понял, Вам нужен запрос суммы всех просмотров за некоторый период (например за год). Это можно сделать так:
$res = mysqli_query($db, "SELECT SUM(`views`) FROM `visits` WHERE `date` >= '2016-01-01' AND `date` <= '2017-01-01'");
Для вывода на страницу:
while ($row = mysqli_fetch_assoc($res)){
echo $row['views'];
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход