Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывести даные по месяцам
 
 автор: web777   (15.11.2011 в 12:34)   письмо автору
 
 

всех приветствую, тут потребовалось вывести данные с разбивкой по месяцам, как можно увидеть на скрине http://wp-kama.ru/wp-content/uploads/2010/12/blix_archive.gif

данные вывожу из БД

foreach($data as $k){
echo $k['date'].' - '.$k['name'].'<br>';
}


получаю:

2011-10-26 12:15:45 - заголовок 1
2011-10-26 11:28:02 - заголовок 2
2011-10-26 00:16:39 - заголовок 3
2011-10-25 23:53:36 - заголовок 4
2011-10-25 23:38:14 - заголовок 5
2011-10-25 23:21:33 - заголовок 6
2011-10-25 23:09:57 - заголовок 7
2011-10-25 21:54:52 - заголовок 8
2011-10-25 21:24:19 - заголовок 9
2011-10-25 16:59:06 - заголовок 10


в голове крутится мысль как то отделить записи по отдельности, то есть создать три уровня массива, сперва год, потом месяц, и в конце уже данные. Но вот не соображу как правильнее сделать практически. Буду благодарен за помощь.

  Ответить  
 
 автор: Гость   (15.11.2011 в 12:44)   письмо автору
 
   для: web777   (15.11.2011 в 12:34)
 

Я бы просто слегка докрутил этот цикл, псевдокод


активный_месяц_год = 0;

начало цикла (все_записи как запись)
    если (запись.месяц_год != активный_месяц_год ) {
        выводим отформатированные(запись.месяц_год)
        активный_месяц_год  = запись.месяц_год;
    }
    выводим запись;
конец цикла;


Надеюсь понятно написал)

  Ответить  
 
 автор: web777   (15.11.2011 в 13:03)   письмо автору
 
   для: Гость   (15.11.2011 в 12:44)
 

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

  Ответить  
 
 автор: Гость   (16.11.2011 в 12:25)   письмо автору
 
   для: web777   (15.11.2011 в 13:03)
 

нет, цикл остается один - тот же собственно что у вас сейчас и есть. Собственно вы его и реализовали ниже)

  Ответить  
 
 автор: Jovidon   (15.11.2011 в 13:15)   письмо автору
 
   для: web777   (15.11.2011 в 12:34)
 

<?php
foreach($data as $k){ 
$year_m substr($k['date'],0,7);
echo 
$year_m.' - '.$k['name'].'<br>'
}
?>

  Ответить  
 
 автор: web777   (15.11.2011 в 13:31)   письмо автору
 
   для: Jovidon   (15.11.2011 в 13:15)
 

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

Ваш вариант не заработал выдало ошибку
Parse error: syntax error, unexpected T_ECHO in /home/u145678/.ru/www/templates/template117/template.htm on line 100

вот мой вариант

<?php
$year 
'';
$month '';

foreach(
$shop->GetAllItems($shop_id$group_id$param) as $k){


if( 
$year != substr($k['date'],0,4)){
echo 
'<br><b>'.substr($k['date'],0,4).'</b><br>';
}

if( 
$month != substr($k['date'],0,7)){
echo 
'<br><b>'.substr($k['date'],0,7).'</b><br>';
}

echo 
$k['date'].' - '.$k['item_id'].'<br>';


$month substr($k['date'],0,7);
$year substr($k['date'],0,4);

}
?>


результат:
http://clip2net.com/s/1jRv3

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования