Задать вопрос
@Mike_Polit

Как сделать счетчик просмотра изображений?

Добрый день!
Подскажите пожалуйста как можно реализовать подобный функционал?
Счетчик просмотра изображений как в Google Бизнес!
5d9443c29cf4a842270318.jpeg

Вот таким же образом интегрировать в свою галерею.
по клику на ссылку записывать в базу +1.
5d94444b55f05539806696.jpeg

<div class="gallery">
<?php
include_once 'includes/db_connect.php';
$query = $db->query("SELECT * FROM portfolio ORDER BY id DESC LIMIT 15");
while($row = $query->fetch_assoc()):
$imageURL = 'img/portfolio/'.$row["file_name"];
?>

<div class="gallery_block">
<a href="<?php echo $imageURL; ?>">
<img src="<?php echo $imageURL; ?>" />
</a>

</div>
<?php endwhile; ?>
</div>
  • Вопрос задан
  • 525 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Надо чтоб изображение отдавалось через скрипт, то есть не прямая ссылка на изображение, а скажем на view?img=$imageUrl
Сам этот скрипт пусть делает запрос в таблицу просмотров, где увеличивает счётчик
update view set view = `view` + 1 where url = $imageUrl
Ну и для вывода исправить запрос, чтоб счётчик был
SELECT * FROM portfolio join view portfolio.file_name = view.url on ORDER BY id DESC LIMIT 15
Ответ написан
@iproman
Пишу на всём что движется.
К примеру в YII2, при открывании любой страницы вызывается метод (в действии контроллера).
// Открыли картинку, увеличь счетчик на 1
$model->updateCounters([
   'поле счетчика' => 1,
]);


В котором содержится
public function updateCounters($counters)
    {
        if (static::updateAllCounters($counters, $this->getOldPrimaryKey(true)) > 0) {
            foreach ($counters as $name => $value) {
                if (!isset($this->_attributes[$name])) {
                    $this->_attributes[$name] = $value;
                } else {
                    $this->_attributes[$name] += $value;
                }
                $this->_oldAttributes[$name] = $this->_attributes[$name];
            }
            return true;
        }
        return false;
    }


А на низком уровне, mysql запрос таков
UPDATE `таблица` SET `поле счетчика`=`поле счетчика`+1 WHERE `id фотографии`=9


На чистом php можно было бы написать так
$connection = new PDO($dsn,$user,$pass,$options);
$q = "UPDATE `таблица` SET `поле счетчика`=`поле счетчика`+1 WHERE `id` =`:photo_id`";
$query = $connection->prepare( $q); 
$query->bindValue( ':photo_id', $row["id"] );
$query->execute();


Может чем то поможет, успехов!
Ответ написан
Комментировать
anton_reut
@anton_reut
Начинающий веб-разработчик
Я на голом php сделал так (фрагмент кода страницы):

//Счетчик просмотров.
		$sql="UPDATE items SET views = views + 1 WHERE id = :itemid";
		$s = $pdo->prepare($sql);
		$s->bindValue(':itemid', $itemid);
		$s->execute();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы