Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/92: Рейтинг темы: голосов - 92, средняя оценка - 4.70
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868

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

29.09.2010, 00:51. Показов 18028. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru