Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2020, 15:14   #1
Pavll
Пользователь
 
Регистрация: 03.11.2017
Сообщений: 24
По умолчанию Создание счётчика галереи изображений.

Добрый день!
Существует счётчик и он работает. Только он работает таким образом, что он выводит кол-во уникальных посетителей (hosts) сразу всей галереи, а не отдельно по каждой картинке. Нужно, чтобы счётчик выводил на экран количество уникальных посетителей (hosts) отдельно по каждой картинке.
Возможно, ошибаюсь, но вероятно, нужно к этому счётчику привязать id картинки, но у меня не получается этого.
Код index.php (галерея):
Код:
<?php
mysql_connect('localhost','root','');
$res = mysql_select_db('images');
//var_dump($res);
$res = mysql_query("SELECT * FROM img ORDER BY views DESC");
 
//var_dump($res);
while (false !== ($row = mysql_fetch_assoc($res))) {
    
    echo "<a href='page3.php?id=".$row[id]."'>$row[name]</a>";
     
    $show_img = base64_encode($row['samfile']);?>
<?php   
echo     "<p><a href='page3.php?id=".$row[id]."'>"?><img src="data:image/jpeg;base64, <?=$show_img ?>"alt="" width="200" hegiht="200" /></a></p>
<?php } ?>
Код page3.php, выводящий на экран количество уникальных посетителей (hosts) и просмотров (views):
Код:
<?php
mysql_connect('localhost','root','');
$res = mysql_select_db('images');
 
//Получаем IP-адрес посетителя и сохраняем текущую дату
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d');
 
 
 
//Узнаём, были ли посещения за сегодня
$res = mysql_query("SELECT visit_id FROM visits") or die("Проблема при подключении к БД");
 
 
//Если сегодня ещё не было посещений
if (mysql_num_rows($res) == 0)
{
    //Очищаем таблицу ips
    mysql_query("DELETE FROM ips2");
     
    //Заносим в базу IP-адрес текущего посетителя
    mysql_query("INSERT INTO ips2(ip_address) VALUES ('$visitor_ip')");
    $res_count = 0;
    //Заносим в базу дату посещения и устанавливаем кол-во просмотров и уник. посещений в значение 1
    $res_count = mysql_query("INSERT INTO visits(hosts, views) VALUES (1, 1)");
}
 
//Если посещения сегодня уже были
else
{
    //Проверяем, есть ли уже в базе IP-адрес, с которого происходит обращение
    $current_ip = mysql_query("SELECT ip_id FROM ips2 WHERE ip_address = '$visitor_ip'");
     
    //Если такой IP-адрес уже сегодня был (т. е. это не уникальный посетитель)
    if (mysql_num_rows($current_ip) == 1)                                      
    {
        //Добавляем для текущей даты +1 просмотр (хит)
        mysql_query("UPDATE visits SET views = views + 1");
    }
     
    //Если такого IP-адреса ещё не было (то есть это уникальный посетитель)
    else
    {
        //Заносим в базу IP-адрес этого посетителя  
        mysql_query("INSERT INTO ips2(ip_address) VALUES('".$_SERVER['REMOTE_ADDR']."')");
         
        //Добавляем в базу +1 уникального посетителя (хост) и +1 просмотр (хит)
        mysql_query("UPDATE visits SET views = views + 1, hosts = hosts + 1");
    }
 }
 
 
$res = mysql_query("SELECT views, hosts FROM visits");
$row = mysql_fetch_assoc($res);
 
echo '<p>Уникальных посетителей: ' . $row['hosts'] . '';
echo 'Просмотров: ' . $row['views'] . '</p>';
 
 ?>
Просмотры (views) в коде необязательны. Их можно даже удалить из кода. Главное - hosts (уникальные посетители).

Есть база данных images c 3 таблицами:
Таблица img.JPG

Таблица ips2.JPG

Таблица visits.JPG

Последний раз редактировалось Pavll; 28.04.2020 в 15:43.
Pavll вне форума Ответить с цитированием
Старый 01.05.2020, 09:12   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Разделом ошиблись.
Ваш г.... Код ну никто не будет пытаться сделать адекватным. Вы лучше заново все сделайте, а как сделать спросили у гуру форума, поставив четкое ТЗ. Типа хочу вот сделать галерею, надо что то то и то то сохранялось, чтоб вот это и то считалось ..
Ну а мы подскажем архитектуру решения
ADSoft вне форума Ответить с цитированием
Старый 04.05.2020, 19:13   #3
Pavll
Пользователь
 
Регистрация: 03.11.2017
Сообщений: 24
По умолчанию

Добрый день!
В общем, изрядно изменил код и таблицы в БД, но, что удивительно, ключевая проблема всё также, не пропала.
Одна из идей кода заключается в том, чтобы при двух условиях происходила запись в базу данных. А именно нужно, чтобы в промежуточную таблицу ip_id_address заносилось кол-во уникальных посетителей (hosts + 1) и выводилось потом на экран, для каждой картинки по отдельности с условием, что это новый пользователь (ip_address).
Есть файл index.php, в котором находится галерея с картинками. С index.php идёт переход в файл page3.php, в котором происходит запись в БД, выборка из Бд и вывод на экран кол-ва уникальных посетителей.
Файл page3.php:
Код:
<?php
// Работа с адресной строкой
$id = intval($_GET['id']);
if (!$id) {
    die('Хьюстон, у ас проблемы');
}
// Кофигурация подключения к СУБД
define("DB_SERVER", "localhost");
//define("DB_PORT", "3306");
define("DB_USERNAME", "root");
define("DB_PASSWORD", "");
define("DB_BASE", "images");
define("DB_CHARSET", "utf-8");
// Подключение к БД
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_BASE);
mysqli_set_charset($link, DB_CHARSET);
if (!$link) {
    die('Хьюстон, у ас проблемы');
}
// Работаем с данными полученными от пользователя
// Проверяем есть ли такой IP в таблице, можно просто повесить уникальный индекс на колонку :)
$host = $_SERVER['REMOTE_ADDR'];
$result = mysqli_query($link, "SELECT ip_address FROM id_ip_address WHERE ip_address = '" . $host . "'");
if (!mysqli_num_rows($result)) {
    $result = mysqli_query($link, "INSERT INTO id_ip_address SET ip_address = '" . $host . "' ");
}
$user = mysqli_query($link, "SELECT COUNT(ip_address) FROM id_ip_address WHERE ip_address = '" . $host . "' ");

// Автоинкремент статистики просмотров
$statistic = mysqli_query($link, "SELECT hosts FROM img WHERE id = " . $id);
if (!mysqli_num_rows($statistic)) {
    $statistic = mysqli_query($link, "INSERT INTO id_ip_address SET hosts = 1");
} else {
    $statistic = mysqli_query($link, "UPDATE id_ip_address SET hosts = hosts + 1");
}
$count = mysqli_query($link, "SELECT SUM(hosts) FROM id_ip_address");
// Необходимо позаботится о безопасности и сделать обработку ошибок :)
$sum = mysqli_fetch_row($count);
echo "Уникальных посетителей: " . mysqli_num_rows($user);
echo "<br />";
echo "Просмотров: " . $sum[0];
mysqli_close($link);
?>
Я пробую связать два условия в одно (id картинки + ip_address ), например в строку
Код:
 $user = mysqli_query($link, "SELECT COUNT(ip_address) FROM id_ip_address WHERE ip_address = '" . $host . "' ");
добавить AND id = '$id', но ничего не получается.

То есть, если я, например, вручную меняю ip_address в таблице (то есть, их становится 2), то и выводится на экран уникальных посетителей должно 2, а этого не происходит. Выводится, по-прежнему Уникальных посетителей: 1.
Как связать эти два условия?
Есть 3 таблицы в БД:
Вложение 99397
Вложение 99398
Вложение 99399
Pavll вне форума Ответить с цитированием
Старый 04.05.2020, 21:15   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Хъюстон ... у вас проблема
ADSoft вне форума Ответить с цитированием
Старый 05.05.2020, 00:17   #5
Pavll
Пользователь
 
Регистрация: 03.11.2017
Сообщений: 24
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Хъюстон ... у вас проблема
Проблема не у Хьюстона, проблема у Pavll. Переделываю код многократно, изменяю базу данных. И каждый раз прихожу снова к тому же. Эти два условия никак не вяжутся.
Pavll вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, отображение галереи изображений в TListView yajohn Фриланс 2 18.07.2012 16:53
Создание галереи фотографий pastuhdima JavaScript, Ajax 3 15.04.2012 19:18
Центровка изображений в галереи WP Apach47 PHP 1 21.09.2010 00:13
Создание Изображений в Delphi7 -ushёl- Общие вопросы Delphi 2 10.05.2010 15:32
Создание списка изображений mikhea Помощь студентам 1 01.06.2007 20:41