2014-12-17 1 views
0

Я хочу создать боковую панель, которая отображает 5 лучших статей, упорядоченных по кликам. Я использую Codeigniter. Я закодировал простой запрос. По мнению, у меня есть простая ссылка:Как предотвратить обновление поля mysql +1 при обновлении страницы

<a href="<?php echo base_url() ?>/article/<?php echo $row['article'];?>"><h2><?php echo $row['particle'];?></h2></a> 

Моя модель:

public function count_views($id) 
{ 
    $sql = "UPDATE article SET views = views +1 WHERE id = '{$id}'"; 
    $this->db->query($sql); 
} 

Моего контроллер:

public function article($article_id) { 
     $link = $this->quotes_model->get_article($article_id); 
     $this->quotes_model->count_views($article_id); 
     $views = $this->quotes_model->popular_articles(); 
     $this->template->set('views', $views); 
     $this->template->render(); 
} 

Когда я нажимаю название статьи ссылку (в MySQL просмотров поля обновлений + 1) он открывает полную статью. Все в порядке, но если я нажму на обновление, просмотры полей обновляются еще на +1.

Если кто-то обновляет открытую статью, mysql не должен обновлять поле просмотра еще раз +1? P.S извините за мой английский язык.

ответ

0

Вы должны управлять им либо с помощью System Ip, либо с помощью идентификатора сеанса браузера для уникальных обращений к странице.

Использование

 session_id(); 

или

 $_SERVER 

переменные, чтобы получить IP-адрес.

+0

Возможно, есть простой способ использовать javascript или ajax, чтобы как-то остановить поле обновления, когда пользователь пытается обновить страницу? – anhelo

+0

Вы не можете контролировать пользователя от обновления страницы. Он должен обрабатываться на уровне кода, если вы хотите только захватить уникальные посещения пользователя. –

0

Добавьте два поля в таблице article:

ip_address -> ip address of the user. 

visited_date -> date time 

Теперь, когда пользователь открывает статью в первый раз, он получает IP записывается вместе с датой и временем.

Если он обновляет страницу, проверьте ее в базе данных, если она не существует, вставьте ее.

Если вы хотите только одно посещение для каждого пользователя, тогда не проверяйте дату, иначе проверьте дату.

+0

Так что я должен добавить поля ip_address и visited_date. Когда пользователь откроет статью, я должен вставить в db его ip и дату посещения. Я не понимаю, что проверить, обновит ли он страницу: ip? И еще один вопрос? Если пользователь нажмет кнопку и снова нажмет ссылку на статью, он добавит +1? Я просто начинаю, поэтому я должен все понимать. Спасибо за помощь. – anhelo

 Смежные вопросы

  • Нет связанных вопросов^_^