Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 24 Май, 2012, 10:04:58

Страниц: 1 [2]
Печать
Автор Тема: разбиение данных по временным промежуткам  (Прочитано 911 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Argnist    ↓ 
09 Июль, 2010, 02:25:14
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 130
Сила слова: 0

Givi, как это сделать в PHP я не спрашивал, я спрашивал про MySql) согласись размер кода огромный
 
artoodetoo, пасиб, уже что-то ближе, сейчас подумаю
Записан

Argnist    ↓ 
09 Июль, 2010, 02:34:50 , спустя 9 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 130
Сила слова: 0


вот чтобы небыло тыщ, делай group by. а чтобы мозг твой не расплавился что именно группировать - группируй по одному полю времени (+ опционально по полю id)
схематично - я использую тип INT для времени - для простоты:
PHP

$sql = "SELECT round(({$now}-v.visited)/{$interval}) AS ago, count(*) AS cnt
FROM `visits` AS v
GROUP BY ago"
;
 
мне таки кажется, что цель посчитать количество заходов за интервал, а не количество заходов по пользователям, поэтому здесь группировка только по усеченному времени
 
привязка к visited плохо( получается не все интервалы выводит, а надо бы чтоб ноль выводил
Записан

phpdude    ↓ 
09 Июль, 2010, 02:37:19 , спустя 2 минуты 29 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: 20789
Сила слова: 1.65

Да и вообще как-то ведь нужно от работы на пару минут отвлекаться.
я вот отвлекусь сейчас = схожу куплю вентилятор на видяху на бук новый а то моему звезда пришла чото совсем)))))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
artoodetoo    ↓ 
09 Июль, 2010, 02:52:21 , спустя 15 минут 2 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

Givi, +1 лишь бы не работать ;)
 
нако ТС, погоняй:
PHP

<?php
/*----------------------------------------
CREATE TABLE `visits` (
  `login` varchar(20) NOT NULL default '',
  `visited` int(11) NOT NULL default '0',
  `duration` int(11) default NULL,
  PRIMARY KEY  (`login`,`visited`)
);
 

INSERT INTO `visits` VALUES ('artoodetoo', 1278663805, 100);
INSERT INTO `visits` VALUES ('guest', 1278667815, 102);
INSERT INTO `visits` VALUES ('durov', 1278667831, 85);
INSERT INTO `visits` VALUES ('artoodetoo', 1278667925, 52);
-----------------------------------------*/

error_reporting(-1);
 
define('TIMEFMT', 'd.m.Y H:i:s');
date_default_timezone_set('Asia/Yekaterinburg');
 
$db_host     = 'localhost';
$db_name     = 'zhopa';
$db_username = 'zhopa';
$db_password = '123';
 

$discrete = 1; // number of minutes in interval
$interval = 60 * $discrete;
 
$link_id = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_name, $link_id);
 
if (isset($_GET['now']) && isset($_GET['from']) && isset($_GET['to'])) {
 
    $now  = intval($_GET['now']);
    $from = intval($_GET['from']) * $interval;
    $to   = intval($_GET['to'])   * $interval;
 
    $sql = "SELECT v.login, v.visited
    FROM visits AS v
    WHERE v.visited BETWEEN {$now} - {$to} AND {$now} - {$from}"
;
 
    $query_id = mysql_query($sql, $link_id);
 
    echo 'At: ' . date(TIMEFMT, $now) . ', interval ' . $_GET['from'] . ' - ' . $_GET['to'] . ' minutes ago' ."<br/>\n";
    echo "<hr/>\n";
    while ($arr = mysql_fetch_assoc($query_id)) {
      echo $arr['login'] . ' was ' . date(TIMEFMT, $arr['visited']) . "<br/>\n";
    }
    echo "<hr/>\n";
    $ref = $_SERVER['PHP_SELF'];
    echo '<a href="' . $ref . '">Return to list</a>' . "<br/>\n";
 
} else {
 
    $now = time();
 
    $sql = "SELECT floor(({$now}-v.visited)/{$interval}) AS ago, count(*) AS cnt
    FROM visits AS v
    GROUP BY ago"
;
 
    $query_id = mysql_query($sql, $link_id);
 
    echo 'Now: ' . date(TIMEFMT, $now) . "<br/>\n";
    echo "<hr/>\n";
    while ($arr = mysql_fetch_assoc($query_id)) {
        $from =  $arr['ago']      * $discrete;
        $to   = ($arr['ago'] + 1) * $discrete;
 
        $ref = $_SERVER['PHP_SELF'] . '?now=' . $now . '&from=' .$from . '&to=' . $to;
        echo '<a href="' . $ref . '">' . $from . ' - ' . $to . ' minutes ago</a> was ' . $arr['cnt'] . ' visits ' . "<br/>\n";
    }
    echo "<hr/>\n";
}
 
Спустя 1 минуту 36 секунд добавил
я вот отвлекусь сейчас = схожу куплю вентилятор на видяху на бук новый а то моему звезда пришла чото совсем)))))
конечно, виртуалки то они того, греют.


* intervals.png (8.31 Кб, 472x401 - просмотрено 59 раз.)
« Последнее редактирование: 09 Июль, 2010, 02:52:21 от artoodetoo » Записан
Абырвалг    ↓ 
09 Июль, 2010, 02:51:12 , спустя
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6094
Сила слова: 1.31

конечно, виртуалки то они того, греют.
:D
 
а ты тоже с Ебурга?
 

Дуд, че за ноут?
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
artoodetoo    ↓ 
09 Июль, 2010, 02:53:33 , спустя 2 минуты 21 секунду
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

с подъебуржья я
Спустя 40 секунд добавил
на карте-сотке от ебурга вниз 2 см
Записан
phpdude    ↓ 
09 Июль, 2010, 02:53:51 , спустя 18 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.65

Дуд, че за ноут?
старье
 
asus f3s + память апгрейд до 4гб. 3 года ему(клава сама 3 раза написала "ебу" .. не спроста ...:D ) уже
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
artoodetoo    ↓ 
09 Июль, 2010, 02:57:51 , спустя 4 минуты
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

помоему ТС за такую работу просто обязан поцеловать меня в ж* заплюсовать
Спустя 2 минуты 36 секунд добавил
ебаный парсер бибикода заменяет "&amp'" на "&"
Записан
artoodetoo    ↓ 
09 Июль, 2010, 03:04:22 , спустя 6 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

ну хоть какой-то профит сегодня
 
алексувэ меня не догнать


* karmadroch.png (2.44 Кб, 605x85 - просмотрено 60 раз.)
Записан
phpdude    ↓ 
09 Июль, 2010, 03:06:12 , спустя 1 минуту 50 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: 20789
Сила слова: 1.65

artoodetoo, хахахахах  КАРМАДРОЧЕР!!!!!!!!!
 
давай те в шаблоне * 100 напишу?)))))))))))))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
artoodetoo    ↓ 
09 Июль, 2010, 03:07:49 , спустя 1 минуту 37 секунд
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

ну это не фокус.
Записан
Абырвалг    ↓ 
09 Июль, 2010, 03:11:13 , спустя 3 минуты 24 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6094
Сила слова: 1.31

phpdude, песдуй в магазин уже!)
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
phpdude    ↓ 
09 Июль, 2010, 05:05:27 , спустя 1 час 54 минуты 14 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.65


phpdude, песдуй в магазин уже!)
в моей деревне не продают винтиляторы сука :(
 
зато ахуенно прогулялся при солнышке, стопудово загорел)) встретил одноклассника, которого не видел года 3)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
artoodetoo    ↓ 
10 Июль, 2010, 07:26:07 , спустя 14 часов 20 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

хехе, заметил ошибку :)
после первого if-a должно быть
PHP

    $now  = intval($_GET['now']);
    $from = intval($_GET['from']) * 60;
    $to   = intval($_GET['to'])   * 60;
 
оно работало правильно только для $discrete=1, а с исправлением - для любой нарезки
Записан
Страниц: 1 [2]
Печать
 

Перейти в: