Как я классифицирую выходные данные в PHP / MySQL? - PullRequest
0 голосов
/ 01 ноября 2011

Допустим, у меня есть эта таблица MySQL

DATE       | NAME
2011-10-11 | Rock
2011-10-31 | Pen
2011-10-28 | Paper
2010-10-3  | Scissor
2010-3 -2  | Pen
2011-11-1  | Tree
2011-11-2  | Bug

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

Я пытаюсь получить этот вывод.

October 2010

2010-10-3 Scissor

October2011

2011-10-11 Rock
2011-10-31 Pen
2011-10-28 Paper

November 2011

2011-11-1  | Tree
2011-11-2  | Bug

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

1 Ответ

3 голосов
/ 01 ноября 2011
  1. Поместите в запрос SQL предложение ORDER BY date DESC, чтобы упорядочить результаты по столбцу даты.
  2. Либо просматривайте результаты и выводите заголовок категории каждый раз, когда меняется категория (в вашем случае меняется год / месяц), либо сохраняйте результаты в значимом многомерном массиве, если вы хотите повторно использовать данные позже (с возможной эффективностью), может быть что-то вроде:

    $results = array();
    while( $row = mysqli_fetch_array(...))
    {
        list( $year, $month, $day) = explode( '-', $row['date']);
        $results[ $year ][ $month ][] = $row;
    }
    
    foreach( $results as $year => $month_array)
    {
        foreach( $month_array as $month => $row_array)
        {
            echo "Category $month $year";
            foreach( $row_array as $row)
            {
                echo $row['date'];
            }
        }
    }
    

РЕДАКТИРОВАТЬ В качестве дополнения вы можете захотеть взглянуть на функции даты / времени MySQL, в частности DATE_FORMAT , которые позволят вам выводить более понятные для пользователя / удобные для пользователя даты с использованием только базы данных. Конечно, вы можете реализовать свои собственные методы для преобразования 01 => января и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...