Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> счетчик 
V
    Опции темы
Shark
  Дата 6.8.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Как реализовать счетчки.. сколько раз просмотрели ту или иную тему на форуме?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
vasac
Дата 6.8.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Ну, текст темы не сам появляется на странице. Скорее всего при запросе какой-либо темы в серверном скрипте запускается соответствующая функция, которая выводит нужную тему. Видимо, наиболее оптимальным будет именно в этой функции приплюсовать единицу к текущему значению просмотров. 

А дальше думать + поиск.

Это сообщение отредактировал(а) vasac - 6.8.2006, 20:49
PM WWW   Вверх
Shark
Дата 6.8.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



vasac, так я даже не знаю,как это реализовать...


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
vasac
Дата 6.8.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Shark, чтобы подсчитывать что-то на форуме, нужен форум. У тебя он есть?
Ты сам его делал или готовый взял?
PM WWW   Вверх
Shark
Дата 6.8.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



сам его пишу.... счетчики подсчета тем и сообщения я уже сдала... боле менее рабочий..


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
check
Дата 6.8.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Если используется база данных,  то в таблице где хранится информация о темах  нужно завести поле, в котором будет хранится  кол-во просмотров для каждой темы.
А далее
Цитата(vasac @  6.8.2006,  20:49 Найти цитируемый пост)
Скорее всего при запросе какой-либо темы в серверном скрипте запускается соответствующая функция, которая выводит нужную тему. Видимо, наиболее оптимальным будет именно в этой функции приплюсовать единицу к текущему значению просмотров


PM MAIL   Вверх
Muchenik
Дата 8.8.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: 5
Всего: 5



Да вроде ничего сложного. В БД создаешь поле для количества просмотров.
После выбора темы, к примеру с theme_id=333, 
отображаешь её и увеличиваешь счетчик. Можно так:

Код

$query = "UPDATE forumThemes SET viewscount = viewscount + 1 WHERE theme_id ='".$theme_id."'";

PM MAIL ICQ   Вверх
Gold Dragon
Дата 8.8.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



вот мой счётчик, самый простой, да мне другой и не нужен  smile 
А чтобы считать страницы, просто нужно добавить в таблицу ещё одно поле, а в функцию передавать условное название страницы (или её условный номер), вот и всё. А чтобы вытягивать, просто дополнительнеое условие в запросе делаешь и оки  smile 
Код

function f_statistika(){
    $ip = f_get_ip();
    $data = date("Y-m-d");
    $z = "SELECT * FROM `stat` WHERE `ip`='".$ip."' AND `data`='".$data."'";
    $r = mysql_query($z);
    if(mysql_num_rows($r)>0){
        $f = mysql_fetch_array($r);
        $id = $f['id'];
        $sum = $f['sum']+1;
        $z = "UPDATE `stat` SET `sum`='".$sum."' WHERE `id`=".$id;
    }else{
        $z = "INSERT INTO `stat` (
         `id`,
         `ip`,
         `data`,
         `sum`
         ) VALUES (
          '',
          '".$ip."',
          '".$data."',
          '1'
          )";
    }
    $r = mysql_query($z);
    // всего просмотров
    $z = "SELECT SUM( `sum` ) AS `sum` FROM `stat`";
    $r = mysql_query($z);
    if(mysql_num_rows($r)>0){
        $f = mysql_fetch_array($r);
        $stat['all_hits'] = $f['sum'];
    }

    // всего уникальных просмотров
    $z = "SELECT DISTINCT `ip` FROM `stat`";
    $r = mysql_query($z);
    $stat['all_host'] = mysql_num_rows($r);

    // просмотров сегодня
    $data = date("Y-m-d");
    $z = "SELECT SUM( `sum` ) AS `sum` FROM `stat` WHERE `data`='".$data."'";
    $r = mysql_query($z);
    if(mysql_num_rows($r)>0){
        $f = mysql_fetch_array($r);
        $stat['hits'] = $f['sum'];
    }
    // уникальных сегодня
    $z = "SELECT DISTINCT `ip` FROM `stat` WHERE `data`='".$data."'";
    $r = mysql_query($z);
    $stat['host'] = mysql_num_rows($r);

    return <<<EOF
        <table width="60%" border="0" cellpadding="1" cellspacing="1" align="center" class="btr">
            <tr class="txt5">
                <td align="center">рейтинг</td>
                <td align="right">{$stat['all_hits']}</td>
            </tr>
            <tr class="btr">
                <td align="center"><img src="images/stat.gif" alt="" border="0"></td>
                <td align="right" class="txt4">
                    {$stat['hits']}<br>
                    {$stat['host']}
                </td>
            </tr>
        </table>
EOF;

}

дамп базы
Код

-- 
-- Структура таблицы `stat`
-- 

CREATE TABLE `stat` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL default '',
  `data` date NOT NULL default '0000-00-00',
  `sum` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=23 ;



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

ЗЫ
в общем если пригодится, то я не буду против  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Shark
Дата 8.8.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



скорее всего я воспльзуюсь SQL-запросом Muchenik'а.... т.к. у меня таблицы есть... осталось только создать новый столбец и написать запрос и все


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Shark
Дата 8.8.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



при нажатии на ссылку(темы) у меня открывается страница posts.php?(и т.д.)... я пишу так:
Код

<?php
$topics="select * from shtopics where id_topic='$t' and id_forum='$f' and hide=0;";
$alltopics=mysql_query($topics);
if($alltopics)
{
$topic=mysql_fetch_array($alltopics);

$count=$topic['countviews']+1;
$countview="UPDATE shtopics SET countviews = ".$count." WHERE id_topic ='$t' and id_forum='$f' and hide=0;";
if(mysql_query($countview))
{
echo ("Счетчик не работает");
}
}
?>

но в $count почему-то не хочет увеличивать на единицу


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Muchenik
Дата 8.8.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: 5
Всего: 5



Скорей всего у тебя не находит никаких полей в 

Код

$countview="UPDATE shtopics SET countviews = ".$count." WHERE id_topic ='$t' and id_forum='$f' and hide=0";

попробуй просто
Код

SELECT * FROM shtopics WHERE id_topic ='$t' and id_forum='$f' and hide=0"

Найдет он у тебя что то?

И для увеличения я бы сделал все таки так:
Код

$countview="UPDATE shtopics SET countviews = countviews+1 WHERE id_topic ='$t' and id_forum='$f' and hide=0";

Тебе не зачем выбирать старое значение счетчика
PM MAIL ICQ   Вверх
Shark
Дата 8.8.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



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

а с чего ты взял что,я выбираю старое значение счетчика???... при заходе на страницу я просто прибавляю постоянно 1 и все...

но если нажимать ревреш... то счетчик накручивается... а как сделать что б при ревреше он не накручивался?

Это сообщение отредактировал(а) Shark - 8.8.2006, 23:14


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Muchenik
Дата 8.8.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: 5
Всего: 5



Цитата

а с чего ты взял что,я выбираю старое значение счетчика???

Потому что тут ты выбираешь значение счетчика
Код

$topics="select * from shtopics where id_topic='$t' and id_forum='$f' and hide=0;";
$alltopics=mysql_query($topics);

, тут его прибавляешь
Код

$topic=mysql_fetch_array($alltopics);
$count=$topic['countviews']+1;

а тут записываешь
Код

$countview="UPDATE shtopics SET countviews = ".$count." WHERE id_topic ='$t' and id_forum='$f' and hide=0;";


А это все делается  одним обращением к БД, так как я уже показал - это проще.
Цитата

но если нажимать ревреш... то счетчик накручивается... а как сделать что б при ревреше он не накручивался?

По этому поводу очень много говорили. Много способов. Используй поиск

PM MAIL ICQ   Вверх
DrNemo
Дата 9.8.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: 1
Всего: 1



вот мой вариант счетчика:
http://drnemo.vip.su/index.php?id=1&kat=002.txt&pn=
только он выводит результаты в виде графических файлов с цифрами
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 9.8.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Shark @  8.8.2006,  23:07 Найти цитируемый пост)
но если нажимать ревреш... то счетчик накручивается... а как сделать что б при ревреше он не накручивался?

Самый простой способ поставить кук минут 20 жизнью и проверять при входе. И всё будет нормально... Кому захочется каждые двадцать минут заходить и накручивать smile 

Это сообщение отредактировал(а) Gold Dragon - 9.8.2006, 20:38


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.