Создание счётчика галереи изображений.

Тема в разделе "PHP", создана пользователем Pavll, 28 апр 2020.

  1. Pavll

    Pavll

    Регистрация:
    23 фев 2019
    Сообщения:
    6
    Симпатии:
    0
    Добрый день!
    Существует счётчик и он работает. Только он работает таким образом, что он выводит кол-во уникальных посетителей (hosts) сразу всей галереи, а не отдельно по каждой картинке. Нужно, чтобы счётчик выводил на экран количество уникальных посетителей (hosts) отдельно по каждой картинке.
    Возможно, ошибаюсь, но вероятно, нужно к этому счётчику привязать id картинки, но у меня не получается этого.
    Код index.php (галерея):
    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:
    <?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(id, name, samfile), ips2(ip_id, ip_address), visits(visit_id, hosts, views).
     
    Последнее редактирование: 28 апр 2020