Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сброс постов в полноч
Форумы портала PHP.SU » » Вопросы новичков » сброс постов в полноч

Страниц (1): [1]
 

1. terrors - 30 Августа, 2011 - 13:51:13 - перейти к сообщению
ребят кто знает как сделать чтоб посты считались не только за день но и была вторая статистика что например пользователь написал 222 поста за день а в полночь этот счётчик обнулялся сам и так постоянно ?
(Добавление)
переменную $daud уже создал в базу по умолчанию null задал . но если выводить эту переменную то она просто считает все посты а не обнуляется
2. КЫР - 30 Августа, 2011 - 16:27:24 - перейти к сообщению
храните дату написания последнего поста
при написании сравнивайте дату последнего и текущего. Если они не равны - сбрасывайте переменную на ноль и делайте инкримент (или сразу сбрасывайте на 1)
3. iflight - 30 Августа, 2011 - 16:50:33 - перейти к сообщению
крон?
4. terrors - 31 Августа, 2011 - 07:52:23 - перейти к сообщению
КЫР пишет:
храните дату написания последнего поста
при написании сравнивайте дату последнего и текущего. Если они не равны - сбрасывайте переменную на ноль и делайте инкримент (или сразу сбрасывайте на 1)


CODE (htmlphp):
скопировать код в буфер обмена
  1. $myday = date("d");
  2. mysql_query("Select `klu4` from setting WHERE myday = '".$myday."' LIMIT 1;");
  3. if (mysql_affected_rows() == 0) {
  4. mysql_query("update users set posts=posts-'".wtraf."', visit=visit where dayp='0' and posts > '".wtraf."'");
  5. mysql_query("update users set dayp='0', daya='0', visit=visit");
  6. mysql_query("update setting set myday='".$myday."'");
  7. }
  8.  

ну я вот такой лисапед создал только он почему то не реагирует . а как именно проверить первый и последний пост чтоб точно система их не путала
5. illy - 31 Августа, 2011 - 11:02:20 - перейти к сообщению
дату можно не всю. достаточно число месяца
6. terrors - 31 Августа, 2011 - 12:40:47 - перейти к сообщению
illy но ведь условие верно проверяет даты и по идее должно работать . но работает как простой счётчик постов . а вот как придумать чтоб он сам обнулсялся ?
7. illy - 31 Августа, 2011 - 13:42:39 - перейти к сообщению
в mysql неочень разбираюсь Не понял
в каждый пост добавь дату поста date("j");
при подсчёте $myday = date("j");
если даты неравны то обнулить
8. terrors - 31 Августа, 2011 - 13:59:06 - перейти к сообщению
illy всё равно не осилил ну спасибо за ответ
9. illy - 31 Августа, 2011 - 14:40:14 - перейти к сообщению
я честно не понял что именно надо Не понял
10. terrors - 02 Сентября, 2011 - 21:56:21 - перейти к сообщению
illy пишет:
я честно не понял что именно надо Не понял

ну возьмём образно . есть чат . в чате пользователь пишет сообщения и они записываются в базу грубо говоря пользователь набралл 13888 сообщений . я хочу сделать чтоб к этим соощениям в скобках был второй счётчик который бы считал сообщения за сутки . тоесть сообщений 13888 (сегодня +1123). но чтоб сообщения за сутки сами обнулялись а то я создал условия которые уже написал выше и он считает но не обнуляется каждые сутки а продолжает считать и того через нежделю у всех по 5873 сообщений и выше
11. illy - 03 Сентября, 2011 - 17:24:25 - перейти к сообщению
а ты сделай отдельную таблицу чтоли Не понял не знаю как пользоваться мускулом
там будет хранится количество сообщений юзеров за день

ник|количество сообщений|
3|0|
illy|426|
terrors|7|

3 это число месяца - в первой ячейке пусть хранится

прежде чем добавить сообщение-смотрим число месяца.
если оно не совпадает с сегодняшним, то обнуляем все сообщения у всех
и ставим сегодняшнее число.
далее просто увеличиваем число сообщений юзера на единицу Ха-ха
12. terrors - 03 Сентября, 2011 - 17:34:36 - перейти к сообщению
как вариант конечно очень это хороший но не знаю как именно число в базу вбить . у меня регионовский код . на файлах думаю не прокатит этот лисапед а в базе 1 там ид идёт
13. Slavenin - 04 Сентября, 2011 - 15:52:06 - перейти к сообщению
terrors, создаешь отдельную таблицу t_message вида

ID_user|all_mess|day_mess|last_upd

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

Логика: когда юзер пишет сообщение, в эту таблицу заносится примерно следующее

CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE t_message
  2. all_mess = all_mess+1,
  3. day_mess=(SELECT IF(last_upd = NOW(), day_mess+1, 1)
  4.                  FROM t_message
  5.                  WHERE ID_user = (SELECT user_id FROM user WHERE login = 'логин юзера')),
  6. last_upd = NOW()
  7. WHERE ID = (SELECT user_id FROM user WHERE login = 'логин юзера')


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

Да, и еще, гарантированно обнулить все сообщения в базе, можно только запуско специально скрипта с запросом с помощью cron! все остальное не принесет никакого результата, так как количество сообщений у юзеров будет меняться только когда кто-то из них что-то напишет, в противном случае оно так и будет висеть вчерашним числом.

 

Powered by ExBB FM 1.0 RC1