Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Делаю архив новостей 
:(
    Опции темы
Alexey007
Дата 3.4.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Вобщем так:
нужен архив по датам, т.е.
типа выводится год, внизу все месяцы, в которых новости есть...
И сразу вопрос, реально это сделать если у меня все число-месяц-год в одной таблице в DATE?

Это сообщение отредактировал(а) Alexey007 - 3.4.2007, 19:05
PM MAIL   Вверх
mishaSL
Дата 4.4.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Цитата(Alexey007 @  3.4.2007,  19:02 Найти цитируемый пост)
И сразу вопрос, реально это сделать если у меня все число-месяц-год в одной таблице в DATE?

да.



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
mclight
Дата 4.4.2007, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 6.7.2005
Где: Baku, Azerbaijan

Репутация: нет
Всего: 2



Цитата(mishaSL @  4.4.2007,  10:44 Найти цитируемый пост)
да.

 smile 

это уже обсуждалось где-то тут.......выведите таблицу а потом циклом пройдитесь .....

Это сообщение отредактировал(а) mclight - 4.4.2007, 08:55
--------------------
Как я решал подводные камни Cakephp и не только
PM WWW ICQ MSN   Вверх
cia
Дата 5.4.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: нет
Всего: 4



Цитата(Alexey007 @  3.4.2007,  19:02 Найти цитируемый пост)
И сразу вопрос, реально это сделать если у меня все число-месяц-год в одной таблице в DATE?


А что мешает "раздробить" дату на отдельные составляющие? Скорее всего в базе дата лежит как timestamp - тогда и в MySQL и в PHP есть специальные функции по ее обработке. Вот, например, так попробуй:

1. запрос по всем записям с сортировкой по дате

2. обработка каждой записи:
Код

$oldyead=0; //чтобы сравнить год каждой записи с годом предыдущей записи
while() //это цикл по каждой полученной записи. Предположим, что дата из базы кладется в переменную $dat и имеет тип timestamp
{
  $year=date('Y',$dat); //выгрызаем из даты год
  $month=date('F',$dat); //выгрызаем из даты месяц (строкой)
  $day=date('d',$dat); //выгрызаем из даты день месяца
  if($year!=$oldyear) {
    echo 'Год '.$yaer.'<br>';    
  }
  echo $month.' '.$day.'<br>'.$news; // $news - это типа текст новости
  $oldyear=$year;
}



PM WWW ICQ   Вверх
SelenIT
Дата 5.4.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Alexey007, в MySQL прорва встроенных ф-ций для работы с датой. Месяцы с новостями элементарно получить в один запрос а-ля
Код

SELECT DISTINCT MONTH(`date`) AS `month` FROM `news`
WHERE `date`>='2006-01-01' AND `date`<'2007-01-01'
ORDER BY `month`


cia, раз написано "в DATE", то очень маловероятно, что автор так назвал timestamp smile Впрочем, MySQL-евским спецфункциям это не помеха, скорее наоборот.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Vaulter
Дата 5.4.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



Код

SELECT COUNT(id), MONTH(`date`), YEAR(`date`) FROM news
GROUP BY MONTH(`date`),YEAR(`date`) 
ORDER BY YEAR(`date`), MONTH(`date`)



--------------------
PM MAIL WWW ICQ   Вверх
Alexey007
Дата 5.4.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



cia, таблица типа DATE

SelenIT, ну вообще-то надо чтобы все автоматом вычислялось.. где какой год заканчивается и начинается.

Vaulter, спасибо, испытываю!
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Эм, а как вывести то такой запрос? smile 
PM MAIL   Вверх
cia
Дата 6.4.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: нет
Всего: 4



Ну вот так обычно это делают

 
Код

 sql_id=mysql_pconnect($db_host,$db_user,$db_password); //подкличиться к MySQL
  mysql_select_db($db_name); //выбрать базу
  $query='SELECT COUNT(id), MONTH(`date`) d, YEAR(`date`) y FROM news    
GROUP BY MONTH(`date`),YEAR(`date`)    
ORDER BY YEAR(`date`), MONTH(`date`)';
  $sql_conn_id=mysql_query($query); //выполнить запрос

//Массив $row будет содержит элементы по имени поля в запросе
  while ($row=mysql_fetch_array($this->sql_conn_id)) {
//тут обрабатывай запрос: $row['d'] - дата, $row['y'] - год
  }



PM WWW ICQ   Вверх
Alexey007
Дата 6.4.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Вообщем я запутался:((
Помогите пожалуйста разобраться: вроде код написан верно...
Код

echo '<form method="POST" action="index.php?action=news_search&act=go">
год <select size="1" name="year">';
$query='SELECT COUNT(id), YEAR(`date`) y FROM news
GROUP BY YEAR(`date`)
ORDER BY YEAR(`date`)';
$sql_conn_id=mysql_query($query);
  while ($row=mysql_fetch_array($sql_conn_id)) {
  $year = $row['y'];
  $date = $row['d'];
  $date = $my->replace_date($date);
  echo '<option>'.$year.'</option>    ';
  }

echo'Месяц <select size="1" name="date">';
$query="SELECT COUNT(id), MONTH(`date`) d, YEAR(`date`) y FROM news where YEAR(`date`)='".$year."'";
$sql_conn_id=mysql_query($query);
  while ($row=mysql_fetch_array($sql_conn_id)) {
  $year = $row['y'];
  $date = $row['d'];
  $date = $my->replace_date($date);
  echo '<option>'.$date.'</option>';

  }
 echo'<input type="submit" value="Искать" name="B1"></form>
</td>
<td>
</td>
</tr>
</table>';

Это форма с 2мя полями год и месяц. нужно следующее: чтобы при выборе в первом поле(год) во втором сразу генерировались месяцы, в которых существуют новости smile 
И ещё пожалуйста поясните понятным языком что делает COUNT(id),  я так понял что вытаскивает список id которые соответсвуют критерию.. я прав?)
PM MAIL   Вверх
Glip
Дата 6.4.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



COUNT(id) выдает количество id

в первом запросе нет даты в списке выбираемого, при этом есть $date = $row['d']; в разборе результатов.

это так с ходу



--------------------
user posted image
PM MAIL   Вверх
Alexey007
Дата 6.4.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



на самом деле он там лишний) забыл удалить
PM MAIL   Вверх
SelenIT
Дата 7.4.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Цитата(Alexey007 @  6.4.2007,  16:56 Найти цитируемый пост)
нужно следующее: чтобы при выборе в первом поле(год) во втором сразу генерировались месяцы, в которых существуют новости

Одним скриптом этого не сделать. Разве что можно нагенерить списков с месяцами для каждого года и по выбору года JavaScript-ом показывать соответствующий список месяцев, скрывая остальные. А по-хорошему нужен AJAX...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alexey007
Дата 7.4.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



можно поподробнее?
PM MAIL   Вверх
mclight
Дата 9.4.2007, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 6.7.2005
Где: Baku, Azerbaijan

Репутация: нет
Всего: 2



а почему Вы не хотите пользоваться готовыми скриптами?
все за Вас уже сделано......
--------------------
Как я решал подводные камни Cakephp и не только
PM WWW ICQ MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.