[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединение отдельных результатов запроса
SmorodinKA
Добрый день. Хочу реализовать на сайте ленту новостей. Есть желание, чтобы однотипные действия, которые были выполнены в пределах, например, одного часа, выводились в одном блоке. Если же промежуток между этими действиями составляет более часа, то они разбиваются на два блока для вывода.

Направьте на истинный путь, а то не могу понять, как собрать такой запрос. Или надо будет после запроса обработку данных производить?

Заранее благодарен.
Игорь_Vasinsky
на для начала нужно наверн определить группы действий по типу.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
chee
SmorodinKA, задача решается с минимальными усилиями mysql, в mysql нужно отсортировать по возрастанию по дате публикации/создания, а в php забзать что-то типа
<?php

function
fetch_data_from_database()
{
return array(
array(
'id' => 1,
'name' => 'Новость 1',
'date_entered' => '2015-02-01 00:00:00',
),

array(
'id' => 2,
'name' => 'Новость 2',
'date_entered' => '2015-02-01 00:10:00',
),

array(
'id' => 3,
'name' => 'Новость 3',
'date_entered' => '2015-02-01 02:10:00',
),

array(
'id' => 4,
'name' => 'Новость 4',
'date_entered' => '2015-02-01 04:10:00',
),

array(
'id' => 5,
'name' => 'Новость 5',
'date_entered' => '2015-02-01 04:20:00',
),
);

}
$rows = fetch_data_from_database();

$blocks = array();
$block = 0;
$lastDate = null;

foreach ($rows as $row) {
$date = strtotime($row['date_entered']);
if ($date - $lastDate > 5400) {
$block++;
}
$lastDate = $date;
$blocks[$block][] = $row;
}

var_dump($blocks);


рузультат:

array(3) {
[1]=>
array(2) {
[0]=>
array(3) {
["id"]=>
int(1)
[
"name"]=>
string(16) "Новость 1"
["date_entered"]=>
string(19) "2015-02-01 00:00:00"
}
[1]=>
array(3) {
["id"]=>
int(2)
[
"name"]=>
string(16) "Новость 2"
["date_entered"]=>
string(19) "2015-02-01 00:10:00"
}
}

[2]=>
array(1) {
[0]=>
array(3) {
["id"]=>
int(3)
[
"name"]=>
string(16) "Новость 3"
["date_entered"]=>
string(19) "2015-02-01 02:10:00"
}
}

[3]=>
array(2) {
[0]=>
array(3) {
["id"]=>
int(4)
[
"name"]=>
string(16) "Новость 4"
["date_entered"]=>
string(19) "2015-02-01 04:10:00"
}
[1]=>
array(3) {
["id"]=>
int(5)
[
"name"]=>
string(16) "Новость 5"
["date_entered"]=>
string(19) "2015-02-01 04:20:00"
}
}



Это без учета по типу действия

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.