2011-01-26 2 views
0

Эй, ребята, я искал хороший ответ через несколько часов, но не могу найти то, что я ищу!PHP/SQL Single Page Views Counter

Если у меня динамический веб-сайт (возможно новостей) я получил следующие ссылки

../domain.com/?newsid=1

../domain.com/?newsid= 2

../domain.com/?newsid=3 и т.д ..

теперь я бы индивидуальный счетчик для каждого из этой страницы ..

Так что я бы проверял каждого посетителя, и если кто-то читает «новость 1» 20 раз, он также должен рассчитывать только 1 раз. => Может быть, с IP или Cookie.

Это должна быть функция, я могу включить в код PHP как <? pageviews(ID)?>

Я никогда ничего подобного не thougth. Надеюсь, кто-то может мне помочь и дать мне несколько советов, как я могу закодировать сценарий вроде этого (я php новичок btw)

ответ

1

Вам следует рассмотреть возможность использования поля-счетчика в вашей таблице новостей, чтобы при открытии кого-то? Newsid = 1 Например, вы делаете это:

$newsid = intval($_GET['newsid']); 
mysql_query("UPDATE news set counter=counter+1 WHERE id=$newsid"); 
+0

Эй, да, но как могу ли я проверить, является ли пользователь «новым посетителем» или уже прочитал эту новость за последние часы? – whocares

+1

Вы можете сделать это с помощью сеансов, например: $ _SESSION ["news_ $ newsid"] = true; и проверьте, не правда ли это, не обновляйте базу данных – PLuS

+0

aber немного мозгового штурма => и что произойдет, если кто-то заблокировал куки? – whocares

1

я нашел большую статью на http://talkerscode.com/webtricks/create-a-simple-pageviews-counter-using-php-and-mysql.php дайте мне короткий код создать таблицу со строками подсчета и страницы, а затем записать этот код

$user_ip=$_SERVER['REMOTE_ADDR']; 

$check_ip = mysql_query("select userip from pageview where page='yourpage' and userip='$user_ip'"); 
if(mysql_num_rows($check_ip)>=1) 
{ 

} 
else 
{ 
    $insertview = mysql_query("insert into pageview values('','yourpage','$user_ip')"); 

    $updateview = mysql_query("update totalview set totalvisit = totalvisit+1 where page='yourpage' "); 
}