Jump to content
  • 0

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


people2010
 Share

Question

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

Написал так, но обновление идёт сразу на всех постах находящихся на странице, а не на

тех на которых нажал на кнопку подробнее зашёл на этот пост.

//Вывод постов
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 ' '.$postrow[$i]['text'].'<br/>';

}

Ua3Ka0IlIE.jpg

Edited by people2010
Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

Непонятно, какая переменная за что отвечает, что за $postrow и $num? Ещё непонятно зачем в цикле каждый раз делать выборку из всей таблицы. И почему выборка по полной таблице, а апдейт по id=id? В чём тайный смысл этого действия?

А, кажись, понял. postrow - это те самые подробности, а num - номер выводимой подробности. Но непонятно всё же зачем выгружать всю таблицу и брать из неё только первую строку.

Link to comment
Share on other sites

  • 0

Тут, как я понял, надо считать статистику каждой страницы, поскольку, как я считаю, одна страница с подробностями==один урл. Итак, два варианта: плохой и хороший.

Вариант первый. Плохой. Когда загружается страница с «подробностями», то нужно делать

mysql_query('UPDATE `lessons` SET `obnovlenie` = `obnovlenie`+1 WHERE  `id`='.$id);

Ни в коем разе не надо делать сначала селект, а потом апдейт — лишний запрос и лишняя арифметическая операция. У вас же присваевается значение всем записям, поскольку «WHERE id=id» эквиваленто «WHERE TRUE».

Вариант второй. Хороший, но не «моментальный». Количество просмотров страниц надо считать периодически, исходя из логов сервера. Периодичность не даст нам моментального (т. е. реального текущего) числа просмотров, но сэкономит ресурсы сервера.

Link to comment
Share on other sites

  • 0

Написал так:

//Вывод постов
for($i = 0; $i < $num; $i++)
{
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);

mysql_query('UPDATE `lessons` SET `obnovlenie` = `obnovlenie`+1 WHERE `id`='.$id);
echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo ' '.$postrow[$i]['text'].'<br/>';
}

Выдаёт:

Notice: Undefined variable: id in z:\home\sitik.ru\www\blocks\kontent.php on line 42

[Денвер: показать возможную причину ошибки]

Notice: Undefined variable: enlarge in z:\home\sitik.ru\www\blocks\kontent.php on line 43

А как тогда?

Edited by people2010
Link to comment
Share on other sites

  • 0

Вот вложил архивом, не получается сделать чтоб считалось кол-во просмотров после нажатия на кнопку просмотров на один из постов, именно после нажатия на кнопку Подробнее.

http://www.sharemania.ru/0196467

Edited by people2010
Link to comment
Share on other sites

  • 0

че-то нифига не понял...

//Вывод постов
for($i = 0; $i < $num; $i++)
{
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);

mysql_query('UPDATE `lessons` SET `obnovlenie` = `obnovlenie`+1 WHERE `id`='.$id);
echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo ' '.$postrow[$i]['text'].'<br/>';
}

1) зачем вам доп. счетчик в скрипте for($i = 0; $i < $num; $i++) если вы и так его увеличиваете через запрос в мускул?

2) вот это зачем и почему именно так: if(isset($postrow[$i]['id'])) echo ' '.$postrow[$i]['text'].'<br/>'; ?

когда достаточно наверное так: if(isset($postrow['id'])) echo '<p>Просмотров: ".$postrow['obnovlenie']."</p>';

или я что-то не так понял?

3) попробуй вместо WHERE `id`='.$id); сделать WHERE `id`='$id');

мешанины очень много.

Link to comment
Share on other sites

  • 0
Veseloff а как же уникальность просмотров и избавление от не нужной накрутки (имеется ввиду сессия+кука)?

Сессия+кука — ХЗ, думаю, что через заголовки как-то можно зарешать. А вот по айпишникам можно фильтровать без проблем.

Link to comment
Share on other sites

  • 0

Написал так:

//Вывод постов
for($i = 0; $i < $num; $i++)
{
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);

mysql_query('UPDATE `lessons` SET `obnovlenie` = `obnovlenie`+1 WHERE `id`='$id);
echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo ' '.$postrow[$i]['text'].'<br/>';
}

Parse error: parse error, unexpected T_VARIABLE in z:\home\s.ru\www\blocks\kontent.php on line 42

Link to comment
Share on other sites

  • 0

Написал так в коде:

$prosmotrov = mysql_query("select * FROM lessons",$connect);
//Вывод постов
for($i = 0; $i < $num; $i++)
{
$rez = mysql_fetch_array($prosmotrov);
//$enlarge = mysql_query("UPDATE lessons SET obnovlenie = obnovlenie+1 WHERE id=".$id);
//echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo ' '.$postrow[$i]['text'].'<br/>';
}

В базе данных для теста, такая запись в поле text.

<?php
$enlarge = mysql_query("UPDATE lessons SET obnovlenie = obnovlenie+1 WHERE id=".$id);
?>
<div class="zagolovok_kyrsa">Заголовок 1</div>
</br>
<div align="justify" class="shrift">
Случилось то, чего <b>так долго ждали в Рунете,</b> но чего никогда ранее еще не было!..Произошло по истине эпохальное событие!..
Невероятный, потрясающий подарок всем, кто интересуется   <b>заработками в Сети!..</b>
</div>
<div> </div>
<div align="right"> <a class="podrob" href="/videolessons/1_1.php">Подробнее </a><span class="skobki">>></span></div>
<br />

Ошибок не выдаёт но счётчик не работает.

Edited by people2010
Link to comment
Share on other sites

  • 0

Почему в моём решении не работает, что в моём решение надо сделать чтоб работало?

что нужно куда передавать чтоб именно счётчик считал после перехода по ссылке подробнее?

Edited by people2010
Link to comment
Share on other sites

  • 0
Почему в моём решении не работает, что в моём решение надо сделать чтоб работало?

что нужно куда передавать чтоб именно счётчик считал после перехода по ссылке подробнее?

Уважаемый а зачем вы беритесь за задачи не вашего уровня? Вы как то с разбегу и в омут головой... Начните с чего нить попроще, посмотрите, что такое переменные, какие типы переменных бывают, как они определяются, посмотрите циклы, условия, массивы, передачу переменных путем GET POST, методы вывода информации ну и дальше по нарастающей... Потому что у вас не видно знания основ...

Хотя у меня сложилось впечатление что вы и не стараетесь, что-то понять просто создаете темы чтобы люди решали задачи за вас...

Link to comment
Share on other sites

  • 0
Хотя у меня сложилось впечатление что вы и не стараетесь, что-то понять просто создаете темы чтобы люди решали задачи за вас...

во-во, я о том же. цыклы зачем-то приписал тут... :)

Link to comment
Share on other sites

  • 0
во-во, я о том же. цыклы зачем-то приписал тут... :)
Хотя у меня сложилось впечатление что вы и не стараетесь, что-то понять просто создаете темы чтобы люди решали задачи за вас...

Мужики, не удивляйтесь, он просто не изменяет своему стилю :)

Link to comment
Share on other sites

  • 0
Мужики, не удивляйтесь, он просто не изменяет своему стилю :)

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

Link to comment
Share on other sites

  • 0
Да я не удивляюсь, но надеюсь что вдруг он все таки образумится или хотябы что-то прилепится к его сознанию...

Судя по его постам, которые он создаёт на форуме, врядли. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy