|
|
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/"+выбранное_значение_года_в_форме+"/"+выбранное_значение_месяца+"/";
|