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

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

29.09.2010, 00:51. Показов 18077. Ответов 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
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
06.10.2010, 15:40  [ТС]
Студворк — интернет-сервис помощи студентам
Как выводить содержание поста, то есть то что произойдет после нажатия на кнопку "Подробнее"?
Каждое содержание одного из постов в отдельном файле пхп?
Просто если так videolessons/1.php?id=2
происходит просто вывод того поста, а не его содержимого.
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.10.2010, 19:21
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ребята, я так и не понял, если использовать сессию, разве счетчик не обнулится для пользователя, когда он в следущий раз посетит сайт??
Если использовать сессии, то обнулится. Если использовать куки, то есть шанс, что нет (пользователь может удалить эту куку ).
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
как сайт узнает пользователя если куки не используются?
Для этого можно использовать сессии. PHP автоматом приписывает уникальный идентификатор файла с данными, который хранится на сервере, ко всем ссылкам.
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
и последний вопрос, допустим я написал пример правильно, значит счетчик для меня уже не будет увеличиватся. теперь чтобы убедиться в правильности примера мне надо с другого компа зайти?
Смотря как Вы это сделаете. Если через куки/сессии, то достаточно просто удалить куку/закрыть браузер. Если с помощью авторизации, то нужно зарегистрировать еще один аккаунт и авторизоваться через него.

Добавлено через 11 минут
Syltan, id должен указывать на уникальный идентификатор в таблице с полной новостью.
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
06.10.2010, 19:58  [ТС]
Code
1
id должен указывать на уникальный идентификатор в таблице с полной новостью.
То есть полная новость, её код должен находится в той же таблице и можно ссылаться на тот же документ 1.php не нужно другого создавать, в котором выводить полную новость?

Добавлено через 3 минуты
Вот код, но проблема в том, что не получается вывести полную новость, может я не правильно что-то пишу?
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
<div id="center">
<?php 
include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
?>
 
<div class="zagolovok">Список</div> <br />
        
<?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;  
$result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);  
 
 
/*--------------------Выводов Постов--------------------------------------*/
 
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['text'], '<div class="prosmotrov">Просмотров: ', $resalt['obnovlenie'], '</div><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">Просмотров: ',$resalt['obnovlenie'], '</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> <!-- Закрываем контент-->
Добавлено через 14 минут
Как должны выглядеть ссылки "Подробнее" в базе данных?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
06.10.2010, 20:18
romchiksoad, еще раз... по полочкам...
> Для этого можно использовать сессии. PHP автоматом приписывает уникальный идентификатор файла с данными, который хранится на сервере, ко всем ссылкам.
но он то приписывает один раз при входе, а в следущий раз он опять обнулится, тогда какого х нужен сессии?
вот напр., ты заходишь ко мне на сайт, смотришь статью (до тя допустим никто не смотрел, т.е число просмотров = 0), после тебя число стало = 1. это чило будет хранится в БД как я понимаю, так(?).
теперь ты заходишь второй раз, так как сессии ничего не запоминают, то они видят тя как нового пользователя, потому что идентификационный номер который был у тя в прошлый раз, его нет.
так как же и где сохраняется инфа о пользователе???
может этот номер записывается в БД? ну тогда IP можно сохранять..
в любом случае, если у целого завода ожин IP, сайт подумает что и браузер один.., не так?
....... хотя.. такая мысль... сайт определяет браузер по HTTP, и если 1000 компов под одним IP заходят на сайт, то он определит их по ихним HTTP запросам, правильно думаю?

Добавлено через 2 минуты
Syltan, объясни пожалста, что такое вывод постов? что ты вообще делаешь? некоторые моменты твоей задачи похожи на мои, поэтому интересно.
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
06.10.2010, 20:31  [ТС]
В самом начале выводятся 3 поста на одну страницу. В каждом посте(их трое на одной стр), есть ссылка "Подробнее".
После нажатия на ccылку подробнее, я перехожу к подробному описанию новости.
Как эту новость(её подробн. описание) выводить? В отдельном файле пхп её нужно оформлять или по другому, если да то как она оформлена должна быть?
Просто если писать так в каждом поле text моей таблицы lessons
Code
1
2
3
<div align="right"> <a class="podrob"
 href="/videolessons/1.php?id=2">Подробнее </a><span class="skobki">>></span></div>
<br />
Тогда выводится не подробное описание, после нажатии на ссылку подробнее, а выводится снова вот такое,фото ниже.
Получается выводится снова пост с кнопкой подробнее, а не описание этого поста.
Миниатюры
Счётчик просмотров  
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
06.10.2010, 20:57
Syltan, я как понял у тя новостная лента, как и у меня. что такое пост?
я новичок , ты немного по другому пишешь, поэтому не совсем понимаю. вот как я сделал, может ты разберешься:

ф-я выводящая одну новость:
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
// вывод одной новости     ---------------------------------------------------------------------
    function show_one_news($id) {
    
        $midle = 'midle';   // папка с мини-фотками
        $view = 0;
        mysql_connect('localhost', 'root', '') or die ('Ошибка подключения с МуСКуЛом');
        mysql_select_db('news_line') or die ('Ошибка подключения с БД');
        //$id = (int)$id;
        $query_2 = "SELECT * FROM `news` WHERE `id` = '$id' "; 
        //(`title`, `content`, `date_db`)
        
        $res = mysql_query($query_2);
        if(!$res)  die ('Не удалось отправить запрос!' . mysql_error());
        $row = mysql_fetch_array($res);
        $view = $row[5];
        $view++;
    //  mysql_close();
        $d = substr($row['date_db'], 0, 10);
        $t = substr($row['date_db'], 10, 8);
 
    
    mysql_query("UPDATE news SET view = $view WHERE id = $id"); 
 
    echo '<span class = "time"><font size = 6>';
        echo $row['title'];
    echo '</font><br/>';
        echo $d . ' /   ' . $t ;
    echo '</span>';
    echo '<p>'; 
        echo  '<img src = "' . $midle. '/' .$row['photo'].' " border = 0 align = left class = "img">';
        echo $row['content'];
    
    echo '<p>';
    echo '<span class = "pages">';
    echo '<a href = "index.php" style = "text-decoration : none">Back</a><br/>';
//  echo 'просмотров: '.$row[5].'';
    echo '</span>';
    
    mysql_close();
 
        return true;
        }
ф-я выводящая список новостей на главной странице:

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
// список     новостей        ---------------------------------------------------------------------
 
    function news_list() { 
    
        $count_news = 0; // число новостей (на странице)
 
        if (!isset($_GET['p']))     $p = 1;
        else        $p = $_GET['p'];
            
        $small = 'small_ph';    // папка с мини-фотками
        mysql_connect('localhost', 'root', '') or die ('Ошибка подключения с МуСКуЛом');
        mysql_select_db('news_line') or die ('Ошибка подключения с БД');
        if(!isset($_GET['id'])) {
            $query = mysql_query("SELECT * FROM `news` ORDER BY `date_db` DESC");
            if(!$query)  die ('Не удалось отправить запрос! ' . mysql_error());
            
            if (mysql_num_rows($query) !== 0) {
 
                while ($row = mysql_fetch_array($query)){
                    $d = substr($row['date_db'], 0, 10);
                    $t = substr($row['date_db'], 10, 8);
                    $count_news++;
                    if (($count_news > 3*($p-1)) && ($count_news <= 3*$p)) {
                    
                        echo '<p>';
                    
                        echo '<table width = 100% border = 1 bordercolor = lightgrey cols = 2 cellpadding = 5 bgcolor = lightgrey>';
                    echo '<tr>';    
                    echo '<td width = 15%>';
                        echo '<a href = "/index.php?id='.$row['id'].'" style = "text-decoration : none">  <img src = "' . $small . '/' .$row['photo'].' " border = 0 align = left></a><br/>'; 
                        
                        echo '</td>';
                    echo '<td width = 85%>';                
echo '<a href = "/index.php?id='.$row['id'].'" ' .$row['title'].' style = "text-decoration : none"> '.$row['title'] .'</a><br/>';
                        echo    '<font color = blue>' . $d .'   /   '. $t . '</font>'. '<br/>';
                        summary($row['content']);
                        echo  '&nbsp;&nbsp;<a  href = "index.php?id='.$row['id'].'" style = "text-decoration : none">   >>> </a>';
    echo '</td>';   
echo '<tr>';
echo '<td>';    
        echo '<font size = 2px color = blue>просмотров: '.$row[5].'</font>';
        echo '</td>';
        echo '</tr>';
        echo '</table>';
                    }
                }   // while
            
                echo '<p>';
                echo '<span class = "pages">';  
                for ($i = 1; $i <= $count_news/3+1; $i++) {
                    $page = $i;
                    if ($i == $p)
                        echo "&nbsp;$page";
                    else
                        echo "<a href = 'index.php?p=$i' style = 'text-decoration : none'>&nbsp;$page</a>";
                }           
            } // mysql_num_rows($query) 
 
        } // !isset($_GET['id']
        else {
            $id = $_GET['id'];
            show_one_news($id);
        }   // else */
        
        return true;
    
    }   // function
а это файл индекс.пхп:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
    require_once('func_news.php');
 
?>
...........тут хтмл
<?php
    
    echo '<span class = "frame_main">';
 
        news_list();  // вывожу список урезанных новостей
            
    echo '</span>';
    
 
?>
Добавлено через 4 минуты
я пытался разделить каждое действие по функциям.
обрати внимание, если не задан GET на главной странице, то выводится список урезанных новостей (ф-я news), а если GET задан, то действие передается второй ф-ии show_one_news (она подключена к ф-ии news).
а в главном файле выводится просто ф-я news.
такая вот логика. может те поможет

Добавлено через 8 минут
конечно из ф-ий слдеовало бы убрать хтмл теги и написать их в файле индекс.пхп, но уменя как то не получилось, и яоставил как есть
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.10.2010, 22:37
Цитата Сообщение от Syltan Посмотреть сообщение
То есть полная новость, её код должен находится в той же таблице и можно ссылаться на тот же документ 1.php не нужно другого создавать, в котором выводить полную новость?
Не код, а новость и хватит одного файла.
Syltan, Писал на скорую руку, по этому мог что-то не доглядеть:
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
104
105
106
107
108
109
110
111
112
113
114
<?php
//Соединяемся с БД
require '../blocks/database.php';
 
/*require работает быстрее, чем include.
 *Но если файлы нужно подключать динамически ( например в цикле Вы подключаете разные файлы ),
 *то можно использовать только include
*/
 
echo '<div id="center"><div class="zagolovok">Список</div> <br />';   
 
//Количество новостей на страницу
$per_page = 3;
 
//Массив, далее будет его описание
$id = array();
 
//<!--------Если не передан id новости, то выводим все + страницы----------!>
if ( empty ( $_GET['id'] ) ) {
 
/*Получаем текущую страницу
 *Если её нет, то думаем, что это первая страница
*/
 
    $page = isset ( $_GET['page'] ) ? $_GET['page'] : 1;
 
/*Конструция выше аналогична следующей:
 *if ( isset ( $_GET['page'] ) )
 *
 *  $page = $_GET['page'];
 *
 *else
 *
 *  $page = 1;
*/
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничный вывод. Часть 1   #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    //Запрос на общее количество новостей
    $query_count_pages = mysql_query( "SELECT COUNT(`id`) as count FROM `lessons`" ) 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    //Если не на первой, то высчитываем начало
 
        $began = ( $page * $per_page ) - $per_page;
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!    Конец первой части  #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    /*Теперь мы знаем с какой записи нужно получить данные из таблицы*/
 
    //Запрос на получение новостей( кратких )
    $query = mysql_query ( "SELECT * FROM `lessons` LIMIT $began, $per_page" ) or die ( mysql_error() );
 
    //Записываем результат в память и выводим в цикле while
    while ( $resalt = mysql_fetch_assoc ( $query ) ) {
 
        //Если в поле `text` храниться сокращенная версия, то оставляем без изменений
        //Если же полная, то нужно изменить 'text', на соответствующее значение
        echo $resalt['text'],  '<div class="prosmotrov">Просмотров: ',$resalt['obnovlenie'], '</div><br /><br/>';
 
        //Формируем массив, который будет хранить все id из таблицы с новостями
        //Это нужно для того, что бы его можно было передать в соответствии с новостью
        //и прикрутить к ссылке, что бы в дальнейшем можно было вывести подробную новость
        $id[] = $resalt['id'];
 
    }
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничная навигация. Часть 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=\"http://cyberforum.ru/articles.php?page=$pages&id={$id[$pages - 1]}\">$pages</a></u> ";
 
        }
    }
}
elseif ( is_int ( $_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['text'], '<div class="prosmotrov">Просмотров: ', $resalt['obnovlenie'], '</div><br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
 
}
?>
На практике желательно по-убирать or die ( mysql_error() );, т.к. это может повлечь за собой не благоприятные последствия

Добавлено через 24 минуты
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
но он то приписывает один раз при входе, а в следущий раз он опять обнулится, тогда какого х нужен сессии?
Цитата Сообщение от romchiksoad Посмотреть сообщение
Если использовать сессии, то обнулится. Если использовать куки, то есть шанс, что нет (пользователь может удалить эту куку ).
Я думаю, что основное предназначение сессий - сохранение данных между переходами по ссылкам сайта. Каких? Решать Вам... Их полезно использовать, если у пользователя отключены куки.


Цитата Сообщение от Love_and_Peace Посмотреть сообщение
вот напр., ты заходишь ко мне на сайт, смотришь статью (до тя допустим никто не смотрел, т.е число просмотров = 0), после тебя число стало = 1. это чило будет хранится в БД как я понимаю, так(?).
Да.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
теперь ты заходишь второй раз, так как сессии ничего не запоминают, то они видят тя как нового пользователя, потому что идентификационный номер который был у тя в прошлый раз, его нет.
так как же и где сохраняется инфа о пользователе???
Сессии запоминают, но на определенное время или до закрытия окна браузера. Что бы что-либо сохранить нужно использовать или БД или куки.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ну тогда IP можно сохранять..
Не нужно.


Цитата Сообщение от Love_and_Peace Посмотреть сообщение
в любом случае, если у целого завода ожин IP, сайт подумает что и браузер один.., не так?
Не так.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
хотя.. такая мысль... сайт определяет браузер по HTTP, и если 1000 компов под одним IP заходят на сайт, то он определит их по ихним HTTP запросам, правильно думаю?
Не сайт, а сервер. Кого "их"? Браузеры? И не запросам, а заголовкам. Браузер может пересылать такую информацию в заголовках HTTP.

Добавлено через 1 минуту
Цитата Сообщение от romchiksoad Посмотреть сообщение
Что бы что-либо сохранить нужно использовать или БД или куки.
Забыл про текстовые файлы...
2
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
06.10.2010, 23:03  [ТС]
romchiksoad чтоб не изменять свою постраничную навигацю, решил не заменять на ваш код, так как у меня уже настроены стили и её вид при большом количестве постр. навигации и меньшем страниц, меня интересует вывод новости.
вашим кодом чего-то не хочет обновляться счётчик, у меня в базе 4 ссылки подробнее.
Code
1
2
3
4
/videolessons/1.php?id=1
/videolessons/1.php?id=2
/videolessons/1.php?id=3
/videolessons/1.php?id=4
как сослаться на вывод новости подробный в моём коде выше, чтоб его весь не изменять?
В мом коде выше вывод поста но не новости происходит с ссылками 1.php?id=2 после нажатия подробнее
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.10.2010, 23:06
Syltan, покажите код таблицы.Т.е. код создания таблицы( CREATE TABLE ... и т.д. )
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
06.10.2010, 23:07
Syltan, выложи пожалста архив своей работы
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.10.2010, 23:07
И то, что в ней записано ( INSERT INTO ... )
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
06.10.2010, 23:23
romchiksoad,
> Я думаю, что основное предназначение сессий - сохранение данных между переходами по ссылкам сайта

если сессия сохраняет на время переходов м/у страницами, то где именно хранится инфа об этом пользователе?
если в БД хранить эти данные, то получается сессии сохраняются не на время включенного браузера, а на то время указанное в коде...
может в массиве SESSION встроена как то команда сброса инфы, если браузер отключится..?
объясните пожалста этот массив и механизм, как то по человечески..
П.С. не отсылать к литературе
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
06.10.2010, 23:32  [ТС]
Вот внешний вид таблицы lessons как она выглядит у меня в базе данных,фото ниже.

Покажите на моём коде, не зна юкак вывести содрежимое одного из постов.
Вот содержимое базы данных.


Code
1
2
3
4
5
6
<!-- 1_1 курс--> 
          
<div class="zagolovok_kyrsa">Весь Азамат Ушанов - на одном DVD! (Видео-курсы)</div> 
<br /> 
<div align="right"> <a class="podrob" href="/videolessons/1.php?id=1">Подробнее </a><span class="skobki">>></span></div> 
<br />
Code
1
2
3
4
<div class="zagolovok_kyrsa">Золотой Актив</div> <br />
<div>&nbsp;</div>
<div align="right"> <a class="podrob" href="/videolessons/1.php?id=2">Подробнее </a><span class="skobki">>></span></div>
<br />
и так 4 шутки с такими ссылками.

Вот архив.

Не знаю как вывести содержимое какого-то курса, моим кодом получатся я вывожу теже посты от которых сослался но не
содержимое новости,не её подробное описание
Миниатюры
Счётчик просмотров  
Вложения
Тип файла: rar s.ru.rar (110.1 Кб, 6 просмотров)
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
07.10.2010, 00:07
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
если сессия сохраняет на время переходов м/у страницами, то где именно хранится инфа об этом пользователе?
На сервере. В файле.
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
если в БД хранить эти данные, то получается сессии сохраняются не на время включенного браузера, а на то время указанное в коде...
Сессии сохраняют эти данные на время указанное в php.ini

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
может в массиве SESSION встроена как то команда сброса инфы, если браузер отключится..?
В массиве $_SESSION ничего не встроено.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
объясните пожалста этот массив и механизм, как то по человечески..
Ответ
почитайте тут
Цитата Сообщение от romchiksoad Посмотреть сообщение
И так, давайте по порядку. Во-первых, сессии в PHP существуют для упрощения хранения данных пользователя при переходах по ссылкам сайта ( конкретного домена ). Есть три варианта работы сессий:
1) php приписывает уникальный идентификатор файла на сервере, в котором хранятся некоторые данные, ко всем ссылкам сайта. Этот вариант работы сессий будет работать всегда;
2) php отправляет HTTP-заголовок, который "говорит" браузеру, что нужно сохранить идентификатор файла с данными, который храниться на сервере, в файле на стороне клиента. В последующем, этот идентификатор будет доступен в супер глобальном массиве $_COOKIE[], а данные записанные в файл на сервере будут доступны через массив $_SESSION[].
3) php совмещает два предыдущих варианта в одном. В таком случае php сначала припишет ко всем ссылкам сайта уникальный идентификатор файла с данными на сервере, а потом попробует установить куки. Если куки установятся, то php прекратит приписывать этот идентификатор к ссылкам сайта и будет брать их из куки.
Во-вторых,
Сообщение от Nazz
так как аджакс, ето тоже пхп
я бы не сказал, что аякс тот же самый php. Это скорее упрощенная реализация сокетов на JavaScript, т.к. выполняется на стороне клиента и расшифровывается эта аббревиатура так: Asynchronous Javascript and XML. PHP - это серверный язык.
Сообщение от Hagrael
куки посылаются с header'ами сервака
COOKIE - это и есть заголовок. Вот так видит куки браузер:
Set-Cookie: RMID=732423sdfs73242;
expires=Fri, 31-Dec-2010 23:59:59 GMT;
path=/;
domain=.example.net
когда Вы пишите session_start(); или setcookie();
А вот так видит куки сервер:
Cookie: RMID=732423sdfs73242
когда браузер их пересылает.
Вроде всё сказал


Добавлено через 9 минут
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
<div id="center">
<?php 
include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
?>
 
<div class="zagolovok">Список</div> <br />
                
<?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'], '<div class="prosmotrov">Просмотров: ', $resalt['obnovlenie'], '</div><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">Просмотров: ',$resalt['obnovlenie'], '</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> <!-- Закрываем контент-->
Syltan, пробуйте

Добавлено через 6 минут
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
<?php
//Соединяемся с БД
require '../blocks/database.php';
 
/*require работает быстрее, чем include.
 *Но если файлы нужно подключать динамически ( например в цикле Вы подключаете разные файлы ),
 *то можно использовать только include
*/
 
echo '<div id="center"><div class="zagolovok">Список</div> <br />';   
 
//Количество новостей на страницу
$per_page = 3;
 
//Массив, далее будет его описание
$id = array();
 
//<!--------Если не передан id новости, то выводим все + страницы----------!>
if ( empty ( $_GET['id'] ) ) {
 
/*Получаем текущую страницу
 *Если её нет, то думаем, что это первая страница
*/
 
    $page = isset ( $_GET['page'] ) ? $_GET['page'] : 1;
 
/*Конструция выше аналогична следующей:
 *if ( isset ( $_GET['page'] ) )
 *
 *  $page = $_GET['page'];
 *
 *else
 *
 *  $page = 1;
*/
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничный вывод. Часть 1   #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    //Запрос на общее количество новостей
    $query_count_pages = mysql_query( "SELECT COUNT(`id`) as count FROM `lessons`" ) 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 )
    $began = $page == 1 ? 0 : ( $page * $per_page ) - $per_page;//Подобная конструкция разбиралась выше
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!    Конец первой части  #!#!#!#!#!#!#!#!#!#!#!#!#!#
 
    /*Теперь мы знаем с какой записи нужно получить данные из таблицы*/
 
    //Запрос на получение новостей( кратких )
    $query = mysql_query ( "SELECT * FROM `lessons` LIMIT $began, $per_page" ) or die ( mysql_error() );
 
    //Записываем результат в память и выводим в цикле while
    while ( $resalt = mysql_fetch_assoc ( $query ) )
 
        //Если в поле `text` храниться сокращенная версия, то оставляем без изменений
        //Если же полная, то нужно изменить 'text', на соответствующее значение
        echo $resalt['text'],  '<div class="prosmotrov">Просмотров: ',$resalt['obnovlenie'], '</div><br /><br/><a href="?id=', $resalt['id'], '">подробнее</a>';
 
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!  Постраничная навигация. Часть 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=\"http://cyberforum.ru/articles.php?page=$pages\">$pages</a></u> ";
 
        }
    }
}
elseif ( is_int ( $_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'], '<div class="prosmotrov">Просмотров: ', $resalt['obnovlenie'], '</div><br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
 
}
?>
Немного свой код подправил.

Добавлено через 24 секунды
Может кому-то пригодится
2
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
07.10.2010, 00:11  [ТС]
Попробовал код, который вы добавили через 9 минут, ничего не изменилось ссылается на тот же пост id=1 то есть не на подробное описание
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
07.10.2010, 00:13
Syltan, а тот,который через 9 минут?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
07.10.2010, 00:16
последний непонятный момент....
> На сервере. В файле.
файл создается автоматически? и в каком месте сервера он (этот файл) хранится? где и как можно физически на него посмотреть?
когда пишу код с сессиями в папке на сервере никаких лишних файлов не появляется, и сам вручную для сессий файлы не создаю...
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
07.10.2010, 00:16  [ТС]
И тот и тот ссылается на id=1, а id=1 выводит просто краткое содержание поста, а мне нужно чтоб на подробности ссылалось.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
07.10.2010, 00:19
Syltan, запустил твою прогу, там кроме верхней картинки и - АВТОРСКИЕ ВИДЕОКУРСЫ
Заработать в интернете ничего нет, а где список новостей?
когда нажимаю на - Заработать в интернете , выходит:
Список

Назад 1 Вперёд
кстати ссылки - взад , вперед не работают
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
07.10.2010, 00:22  [ТС]
Вот архив.
Вложения
Тип файла: rar s.ru.rar (110.3 Кб, 6 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2010, 00:22

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru