241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868

Счётчик просмотров

29.09.2010, 00:51. Показов 18246. Ответов 89
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать счётчик просмотров, есть описание и ссылка на подробности и от того сколько нажата ссылка на подробности такое кол-во раз и увеличивать счётчик, только не на странице подробности, а на странице в которой находится ссылка на подробности,то есть как здесь например.

Написал так, но обновление идёт сразу на всех постах находящихся на странице, а не на
тех на которых нажал на кнопку подробнее зашёл на этот пост.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
//Вывод постов
for($i = 0; $i < $num; $i++)  
{  
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);
$enlarge = $rez['obnovlenie']+1;
$obnovlenie_rez = mysql_query("UPDATE lessons set obnovlenie = '$enlarge' where  id = id ");
echo 'Просмотров: '.$enlarge;
 
if(isset($postrow[$i]['id'])) echo  '&nbsp;'.$postrow[$i]['text'].'<br/>';
 
}
Миниатюры
Счётчик просмотров  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2010, 00:51
Ответы с готовыми решениями:

Счётчик просмотров
Как написать счетчик просмотров по типу: Просмотров за 24 часа: Посетителей за 24 часа: Просмотров за 7 дней: Посетителей за...

Счётчик уникальных просмотров новости
Привет. Есть страница с новостями, при просмотре полной новости хочу вести учёт уникальных просмотров. Простые просмотры записываю...

Счётчик уникальных просмотров материала
Поискал по форуму, не нашёл ничего годного, думаю этот тред будет полезен многим кто ищет ответ в рамках этого сайта. Есть у меня...

89
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
07.10.2010, 00:23
Студворк — интернет-сервис помощи студентам
Syltan, свою работу ты по шаблонам строишь? просто я только начал изучать этот механизм
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
07.10.2010, 00:24
Love_and_Peace, по моему, где хранятся файлы сессий, указано в php.ini.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
07.10.2010, 00:26
romchiksoad, больше вопросов на этот счет не имею, спасибо
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
07.10.2010, 00:28  [ТС]
Так как сделать чтоб ссылалось на подробности, а не на краткое описание?
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
07.10.2010, 00:59
Мне самому стало интересно и решил написать свою версию кода. Она работает:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
error_reporting( E_ALL );
header( 'Content-type: text/html; charset=utf8' );
//Переменный для соединения с MySQl-сервером
$host = 'RomchikPC';
$login = 'romchiksoad';
$password = '...';
$db = 'test';
 
//Количество новостей на страницу
$per_page = 2;
 
//Соединяемся с MySQL-сервером
mysql_connect ( $host, $login, $password ) or die ( mysql_error() );
mysql_select_db ( $db ) or die ( mysql_error() );
mysql_set_charset ( 'utf8' ) or die ( mysql_error() );
 
if ( isset ( $_GET['id'] ) and is_numeric ( $_GET['id'] ) ) {
 
    //Увеличиваем заданный счетчик
    $update = mysql_query ( "UPDATE `test` SET `test`.`views` = `test`.`views` + 1 WHERE `test`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Запрос на выборку из нашей таблицы
    $query = mysql_query ( "SELECT * FROM `test` WHERE `test`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Получаем результат
    $resalt = mysql_fetch_assoc ( $query );
 
    //Выводим полную новость
    echo $resalt['news'], '<br /><span style="color: #CACACA;">Просмотров: ', $resalt['views'], '</span><br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
 
}
else {
 
    $page = isset ( $_GET['page'] ) ? $_GET['page'] : 1;
 
    #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничный вывод. Часть 1   #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    //Запрос на общее количество новостей
    $query_count_pages = mysql_query( "SELECT COUNT(`id`) as count FROM `test`" ) or die ( mysql_error() );
 
    //Записываем результат в память
    $resalt_of_query_count_pages = mysql_fetch_assoc ( $query_count_pages );
 
    //Всего страниц
    $in_all_pages = ceil ( $resalt_of_query_count_pages['count'] / $per_page );
 
/*Округлять нужно в большую сторону ( ceil() ),
 *т.к. при использовании intval() ( округление в меньшую сторону ),
 *будут видны не все новости
*/
 
    //Если мы на первой странице, то ставим начало вывода коментариев с нуля ( LIMIT 0, $per_page )
    if( $page == 1 )
 
        $began = 0;
 
    else {  //Если не напервой, то высчитываем начало
 
        for ( $i = 2; $i <= $in_all_pages; $i++ ) {
 
            if( $page == $i ) {
 
                $began = ( $page * $per_page ) - $per_page;
                break;
 
            }
        }
    }
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!    Конец первой части  #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    //Запрос на выборку из нашей таблицы
    $query = mysql_query ( "SELECT * FROM `test` LIMIT $began, $per_page" ) or die ( mysql_error() );
 
    //Немного урезаем новость и выводим ссылки
    while ( $resalt = mysql_fetch_assoc ( $query ) ) {
 
        $news = substr ( $resalt['news'], 0, 20 );
 
        echo '<a href="?id=', $resalt['id'], '" title="', $news, '">', $news, '</a> <span style="color: #CACACA;">Просмотров: ', $resalt['views'], '</span><br />';
 
    }
 
    #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничная навигация. Часть 2   #!#!#!#!#!#!#!#!#!#!#
 
    if( $in_all_pages > 1 ) {   //Если общее количество страниц больше одной
 
        for ( $pages = 1; $pages <= $in_all_pages; $pages++ ) {
 
            if ( $pages == $page )
 
                echo "<b>$pages</b>";
 
            else
 
                echo " <u><a href=\"?page=$pages\">$pages</a></u> ";
 
        }
    }
}
 
?>
test-0000.mpeg.zip
1
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
07.10.2010, 01:04  [ТС]
Скажите, а это видео вы на какой проге сделали?
Сейчас протестирую ваш код.
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
07.10.2010, 01:09
Syltan,

Не по теме:

Цитата Сообщение от Syltan Посмотреть сообщение
Скажите, а это видео вы на какой проге сделали?
XVidCap Screen Capture под Ubuntu


Цитата Сообщение от Syltan Посмотреть сообщение
Сейчас протестирую ваш код.
Не забудьте сменить названия таблиц и полей. Или просто можете создать новую таблицу. Её код я скидывал выше.
1
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
08.10.2010, 01:34  [ТС]
romchiksoad скажите, как сделать чтоб если с одного и того же компа заходит пользователь на эту страницу, чтоб не считал счётчик?

Добавлено через 22 минуты
в 74-ом посте который добавлен через 9 минут

Добавлено через 1 час 45 минут
2)После перехода на подробности выводится ещё постраничная навигация, но мне её не нужно выводить.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<div class="center">
<?php 
include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
?>
 
                
<?php
//Число постов выводящих на странице
$num = 3;
@$page = $_GET['page'];
if(empty($page)){
$page = 1; 
}
 
 
$result = mysql_query("select COUNT(*) FROM lessons",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7  тогда 7*3-3=18  
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;  
 
 
/*--------------------Выводов Постов--------------------------------------*/
 
if ( isset ( $_GET['id'] ) ) {
    
    //Увеличиваем заданный счетчик
    $update = mysql_query ( "UPDATE `lessons` SET `lessons`.`obnovlenie` = `lessons`.`obnovlenie` + 1 WHERE `lessons`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Запрос на выборку из нашей таблицы
    $query = mysql_query ( "SELECT * FROM `lessons` WHERE `lessons`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Получаем результат
    $resalt = mysql_fetch_assoc ( $query );
 
    //Выводим полную новость
    
     echo $resalt['podrobnosti'];
    
     // '<br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
 
}
else{
 
    //Запрос на выборку из нашей таблицы
 
$query = mysql_query ( "SELECT * FROM lessons LIMIT $start, $num" ) or die ( mysql_error() );
while ( $resalt = mysql_fetch_assoc ( $query ) ) {
 
   echo $resalt['text'],  '</a> <div class="prosmotrov">Просмотров: <span class="green">',$resalt['obnovlenie'], '</span></div><br /><br/>';
 
    }
}
 
 
//------------------------------------------------
// Стрелка назад  
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';
       
//Стрелка вперед  
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
 
// Вывод меню  
$expand_to = 4; // сколько страниц должно показываться слева и справа от текущей
 
// начало и конец "соседних" страниц
$a = $page - $expand_to; if ($a < 1) $a = 1; 
$b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;
 
if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
{
    $navigation[] = "<a href=\"./1.php?page=1\">1</a>";
    if ($a > 2) $navigation[] = "...";
}
 
// генерируем ссылки на "соседние" страницы
for ($i = $a; $i <= $b; $i++)
    $navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' : "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";
 
if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
{
    if ($b < $chislo_str - 1) $navigation[] = '...';
    $navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
}
 
// выводим готовую навигацию
echo $nazad.'&nbsp;&nbsp;'.implode(' ', $navigation).'&nbsp;&nbsp;'.$vpered;
?>
 
<!---------------------------------------------------------------------------->
 
</div> <!-- Закрываем контент-->
То есть после этого места:
// '<br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';

}
else{

То что пошло после else оно дальше выводится то есть это
Назад 1 2 3 4 5 Вперед

Как сделать чтоб не выводилось эта часть кода после else?
Чтоб она выводилась именно когда краткое описание новости, а не подробное.
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
08.10.2010, 06:21
Syltan, спрячьте эту постраничную навигацию в else. Т.е.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<div class="center">
<?php 
include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
?>
 
                
<?php
//Число постов выводящих на странице
$num = 3;
@$page = $_GET['page'];
if(empty($page)){
$page = 1; 
}
 
 
$result = mysql_query("select COUNT(*) FROM lessons",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7  тогда 7*3-3=18  
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;  
 
 
/*--------------------Выводов Постов--------------------------------------*/
 
if ( isset ( $_GET['id'] ) ) {
    
    //Увеличиваем заданный счетчик
    $update = mysql_query ( "UPDATE `lessons` SET `lessons`.`obnovlenie` = `lessons`.`obnovlenie` + 1 WHERE `lessons`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Запрос на выборку из нашей таблицы
    $query = mysql_query ( "SELECT * FROM `lessons` WHERE `lessons`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
 
    //Получаем результат
    $resalt = mysql_fetch_assoc ( $query );
 
    //Выводим полную новость
        
         echo $resalt['podrobnosti'];
        
         // '<br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
 
}
else{
 
    //Запрос на выборку из нашей таблицы
 
$query = mysql_query ( "SELECT * FROM lessons LIMIT $start, $num" ) or die ( mysql_error() );
while ( $resalt = mysql_fetch_assoc ( $query ) ) {
 
   echo $resalt['text'],  '</a> <div class="prosmotrov">Просмотров: <span class="green">',$resalt['obnovlenie'], '</span></div><br /><br/>';
 
    }
 
 
//------------------------------------------------
// Стрелка назад  
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';
       
//Стрелка вперед  
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
 
// Вывод меню  
$expand_to = 4; // сколько страниц должно показываться слева и справа от текущей
 
// начало и конец "соседних" страниц
$a = $page - $expand_to; if ($a < 1) $a = 1; 
$b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;
 
if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
{
    $navigation[] = "<a href=\"./1.php?page=1\">1</a>";
    if ($a > 2) $navigation[] = "...";
}
 
// генерируем ссылки на "соседние" страницы
for ($i = $a; $i <= $b; $i++)
    $navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' : "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";
 
if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
{
    if ($b < $chislo_str - 1) $navigation[] = '...';
    $navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
}
 
// выводим готовую навигацию
echo $nazad.'&nbsp;&nbsp;'.implode(' ', $navigation).'&nbsp;&nbsp;'.$vpered;
}
?>
 
<!---------------------------------------------------------------------------->
 
</div> <!-- Закрываем контент-->
Добавлено через 1 минуту
Syltan, а что бы при заходе с одного компа не увеличивался счетчик.... В этой теме уже обсуждалось подобное, прочтите и скажите, что не понятно.
1
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
08.10.2010, 16:24  [ТС]
Что бы при заходе с одного компа не увеличивался счетчик, в каком посте вы писали,не могу найти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2010, 16:24

Счетчик просмотров !
Проблема такова хочу сделать количество просмотров что бы отображалось вывел табличку в цикл в базц поместил 2 пункта для пробы в 1м...

Количество просмотров
Есть новости, каждая из которых доступна по адресу http://sait/news.php?id= ID Как сделать подсчет переходов к новости (подсчет кол-ва...

счетчик просмотров
у меня в скрипте имеется счетчик просмотров статьи. он работает, но не так как хотелось бы. т.е., он регистрирует каждое открывание...

Узнать число просмотров
Доброго времени суток господа! Мучаюсь тут с одной головоломкой, суть работы такая. Узнаем сколько просмотров, если 0 то просмотров,...

Счетчик уникальных просмотров статьи
Здравствуйте. Можете подсказать как лучше реализовать счетчик уникальных просмотров статьи? В одной статье пишут хранить данные в БД,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
90
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru