Есть таблица
date title

подскажите функцию которая бы разбивала новости на дни.
т.е.

5 октября
---------
title1

6 октября
----------
title2
title3
title4

7 октября
-----------
title5

@темы: PHP, Вопросы

Комментарии
10.10.2010 в 00:14

главное ебашилово, мои дорогие)
function your_functions_name?
10.10.2010 в 00:17

Sanctus Satanas
А в чём проблема-то?
10.10.2010 в 00:20

не могу вывести именно так как написал выше.

как мне разбить новости по дням?
10.10.2010 в 00:21

нужно выделить дату сегодня вчера и т.д а ниже каждой даты новости которые созданы в это время
10.10.2010 в 00:34

главное ебашилово, мои дорогие)
так же, как они у вас хранятся
самый простой вариант - это выбрать все даты, запихнуть их в цикл и смотреть, если новость принадлежит этой дате - вывести
10.10.2010 в 00:43

Псих
я бы вытянул нужное кол-во записей, печатал бы заголовки подряд, как только в цикле дата меняется, то закрываем блок, пишем новую дату, открываем блок, запоминаем текущую дату и опять печатаем подряд, пока дата не поменяется. Как-то так, если я правильно понял вопрос. Или вопрос "Как вытянуть только вчерашние записи", "только на n октября"?
10.10.2010 в 00:44

Sanctus Satanas
Ну, например, так:

$prevdate = '';

foreach ($news as $date => $text) {
    if ($date != $prevdate) {
        echo '<div>' . $date . '</div>';
    }

    echo '<div>' . $text . '</div>';

    $prevdate = $date;
}
10.10.2010 в 00:49

маленькое щячло
Поиграйся с функциями пхп date() и strtotime().
Что-то примерно такое:
foreach($object_with_titles_and_date as $object){
$last_date = date("m-d", $object->date);
if(date("m-d", $object->date) != $last_date){
//новый блок, пишем новый день, выводим титл
}else{
//выводим титл
}
}
10.10.2010 в 03:30

Sanctus Satanas
Или даже так…

$result = mysql_query('SELECT date, text FROM site_news');

$news = array();

while ($row = mysql_fetch_array($result)){
    $news[$row['date']][] = $row['text'];
}

// В массиве $news теперь примерно такое:
//
// array(
// '2010-10-10' => array(
// 'Новость 1',
// 'Новость 2',
// 'Новость 3',
// ),
// '2010-10-11' => array(
// 'Новость 4',
// 'Новость 5',
// 'Новость 6',
// ),
// ),

foreach ($news as $date => $items){
    echo '<div>' . $date . '</div>';

    foreach ($items as $text){
        echo '<div>' . $text . '</div>';
    }
}

10.10.2010 в 14:07

маленькое щячло
$news[$row['date']][] = $row['text'];
О, интересненько!
Но это сработает только если дата проставляется не через таймштамп. Но в противном случаи тут как раз бы и пригодилось date("m-d", $date);
10.10.2010 в 16:11

Спасибо попробую реализовать
10.10.2010 в 16:43

--==SS==-- ваш способ получился.

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

$row['date'] = strtotime($row['date']);

$date = date("d m Y", $row['date']);
$time = date("H:i", $row['date']);

$news[$date][$time] = $row['title'];

где в foreach приписать время к новости?
10.10.2010 в 19:02

Sanctus Satanas
Мохнорыл
Дык это…
Вариант 1a: date('m-d', strtotime($date)).
Вариант 1b: SELECT UNIX_TIMESTAMP(datetime) AS date, затем date('m-d', $date).
Вариант 1c: substr($date, 0, 10).
Вариант 2: SELECT DATE(datetime) AS date, TIME(datetime) AS time.

Plexx
Помещать в элементы массива не сразу текст, а массив.

$news[$row['date']][] = array(
    'time' => $row['time'],
    'text' => $row['text'],
);
10.10.2010 в 19:36

--==SS==--

$row['date'] = strtotime($row['date']);

$date = date("d m Y", $row['date']);
$time = date("H:i", $row['date']);

$news[$date][] = array('time' => $time, 'title' => $row['title']);

а в foreach то как выделить time и title?
10.10.2010 в 19:42

все разобрался echo '
' . $text[time]. $text[title] . '
';
Спасибо всем кто помогал.

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail