Регистрация
Вход через соцсети
Восстановление пароля

Новости - архив по годам выборка из 2-списков(диапазонов)

Новый топик
23.04.2007, 11:29
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Нужно реализовать архив новостей следующим образом:

два выпадающих списка "год" и "месяц" - выбираем из 2 диапазонов нужные значения и нажимаем кнопку показать.

Сам функционал сделал, но дело в том что списки выводятся в следующем виде:

год: месяц:
2007 январь
2007 февраль
2007 март
2006 январь
2006 февраль
2006 март

Подскажите, как сделать, чтобы списки отображались в "удобоваримой" форме, тоесть

год: месяц:
2007 январь
2006 февраль
март
23.04.2007, 14:00
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

не понял "удобоваримой" формы,
поточнее напишите, пожалуйста.
23.04.2007, 14:29
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Если мы просто переделываем стандартный функционал архива новостей - тоесть разбиваем его на 2 списка год и месяц, за место одного стандартного списка год-месяц то списки выводятся

год: месяц:
2007 январь
2007 февраль
2007 март
2006 январь
2006 февраль
2006 март

а нам нужно исключить повторения, тоесть сделать:

год: месяц:
2007 январь
2006 февраль
март

такое возможно?
24.04.2007, 14:56
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

у вас получается два select списка ?

в одном года, в другом месяцы..
года генерятся в зависимости от наличия новостей,
ну а месяцы выводите просто в ручную прописанным списком из 12-ти месяцев..
24.04.2007, 15:22
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Да 2 списка на основе стандартного функционала:

но дело в том что год в списке отображается следующим образом:
год:

2007
2007
2007
2007
...

заместо просто 2007 - видимо за годом подразумевается еще наличие месяца.

месяца генерятся точно также: например

месяц:

январь
январь

видимо подразумевается
январь (2006)
январь (2007)


как грамотно сделать выборку, хотя бы по годам чтобы вручную не вбивать и не добавлять в следующем году новый год?
24.04.2007, 16:16
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

GROUP BY

на примере стандартного запроса на года из шаблона Новости
Цитата:
".listQuery("SELECT DATE_FORMAT(Date,'%Y') AS year FROM Message$classID WHERE Subdivision_ID=$sub AND Sub_Class_ID=$cc GROUP BY DATE_FORMAT(Date,'%Y') ORDER BY Date"," <option value=".$current_sub[Hidden_URL]."$data[year]/>$data[year]</option>;"))."
30.04.2007, 10:31
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Сделал вот так:

Код:
<select onchange="window.open(this.value,'_self')"><option>Месяц</option>".listQuery("SELECT Gallery_Name FROM Classificator_Gallery ORDER BY Gallery_Name","<option value=".$current_sub[Hidden_URL]."$data[Gallery_Name]>$data[Gallery_Name]</option>;")."</select>

<select onchange="window.open(this.value,'_self')"><option>год</option> ".listQuery("SELECT DATE_FORMAT(Date,'%Y') AS year FROM Message$classID WHERE Subdivision_ID=$sub AND Sub_Class_ID=$cc GROUP BY DATE_FORMAT(Date,'%Y') ORDER BY Date"," <option value=".$current_sub[Hidden_URL]."$data[year]/>$data[year]</option>;")."</select>



где Gallery_Name это список с месяцами вида 01 02 03.

задача из 2-х списков подставлять год и месяц, тоест сначала выбираем год, страничка перезагружается - получается допустим /news/2007/ затем выбираем месяц и должно получиться /news/2007/03/

с годами все отлично, с месяцами же если использовать конструкцию value=".$current_sub[Hidden_URL]."$data[Gallery_Name] то даже сли мы находимся /news/2007/ после выбора месяца получаем /news/03/

если же использовать value=$data[Gallery_Name] то с первым месяцем получаем /news/2007/03/ а если выбирать следующие то /news/2007/03/06/04 ...

подскажите, как правильно прописать запрос?
02.05.2007, 12:08
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

вам нужно на onchange вызывать JS функцию, в которой вы будете считывать значения из формы, год и месяц и с помощью этих значений генерировать линк для редиректа
var redirect_url = "/news/"+выбранное_значение_года_в_форме+"/"+выбранное_значение_месяца+"/";
198 196 2007-05-02 12:08:29 8958
Описание проекта