Нужна помощь по запросу mysql

#php #mysql

#php #mysql

Вопрос:

у меня есть база данных mysql, в ней у меня есть таблица под названием articles. Я хочу отобразить архив этой статьи на своей веб-странице. Что я хочу сделать, так это отобразить год, как только пользователь нажмет на год, он покажет список месяцев, в котором содержится статья.. Как я могу написать запрос mysql для этого? Проблема, с которой я сталкиваюсь, заключается в том, что я должен отображать год, который содержит ту же статью, что и месяцы. У меня в таблице указана дата создания статьи в виде метки времени.. Кто-нибудь может подсказать мне, как это сделать?

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

 CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `pid` int(20) NOT NULL DEFAULT '0',
  `department_id` int(20) NOT NULL,
  `author` varchar(100) NOT NULL,
  `created` varchar(25) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;
  

Комментарии:

1. Можете ли вы ввести команду describe articles; и вставить вывод сюда? Без знания вашей схемы помочь будет довольно сложно 🙂

2. Ах, я так и подозревал. Основная проблема заключается в том, что вы храните даты в виде строки: varchar(25) вместо собственного поля даты MySQL.

3. измените varchar на timestamp

Ответ №1:

Ваш компонент database engine имеет функции, которые извлекают отдельные части данных и времени из метки времени SQL. Например, в MySQL вы могли бы сделать

ВЫБЕРИТЕ ГОД (создан), МЕСЯЦ (создан) ИЗ статей ...

Комментарии:

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

Ответ №2:

я просто предлагаю вам алгоритм

сначала выберите название всего года из базы данных, используя

 SELECT  FROM_UNIXTIME(created, '%Y') AS `year`
   FROM    articles
   GROUP BY year
  

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

 SELECT  *, FROM_UNIXTIME(created, '%Y') AS `year`
FROM    articles
HAVING  `year` = 2009 
  

Ответ №3:

чтобы показать статьи

в php

$r = mysql_query(«выбрать * из статей, упорядоченных по годам, месяцам»);

затем отобразите их все

$oldYear =0; while($article = mysql_fetch_array($r){

  $year =$article[year]
 if($year != $oldYear){
          echo $year
          oldYear = $year
 }

  echo $article[month]
  

}

И с ajax просто сделайте, чтобы каждый mont был подменю year Надеюсь, это поможет