Выборка из поля date (в БД) по году, по месяцу, по дню

Vano_php

Новичок
Выборка из поля date (в БД) по году, по месяцу, по дню

Здравствуйте товарищи!
Попытаюсь как можно подробнее описать ситуацию.
Делаю цмс-ку, есть модуль новостей, добавляется новость с полями заголовка, текста, и дата (YYYY:MM:DD) и все это добро заноситься в БД (mysql). Нужно сделать редактирование новостей, т.е. конектимся с базой, выбираем по дате новость, сначало выбераем по году (YYYY), за тем по месяцу (MM) и наконец по дню (DD). Далее выводиться небольшая табличка, с новостями за выбранный день... Вобщем дальше все понятно, вопрос в чем? А в том как замутить отбор допустим по году (далее по аналогии и месяц, и день). В MySQL выделено поле для даты date, c свойством date (т.е 0000:00:00).
Во как я начал:
$result=$mysql->query("SELECT DISTINCT YEAR(DATE) AS year FROM `news` ORDER BY `date` DESC");
for ($i=0; $i < mysql_num_rows($result); $i++)
{
а вот сдесь то и нужно проводить выборку...
}
Жду помощи
 

ForJest

- свежая кровь
Vano_php
Так а с чем у тебя сложности? С получением данных из СУБД, или с подзапросом?
По идее всё просто решается
SELECT * FROM news WHERE YEAR(d_field) = 2005;
 

Vano_php

Новичок
ну вот год выбран сверяется с бд, и выводит еслив такой есть...
 

Фанат

oncle terrible
Команда форума
Vano_php
выборку надо проводить не "вот здесь", а в другом запросе.

одним запросом ты выбираешь года
и выводишь.
кликаешь на ссылку с годом.
получаешь в скрипте год и выводишь месяцы этого года.
по ссылке пердаёшь уже год и месяц.
и так далее.
 

ZN

Новичок
Фанат
а с чего вы взяли, что ему нужно именно так? может ему нужно сразу указать год, месяц и день, а потом уже делать выборку?
 

Vano_php

Новичок
Автор оригинала: Фанат
Vano_php
выборку надо проводить не "вот здесь", а в другом запросе.
одним запросом ты выбираешь года
и выводишь.
кликаешь на ссылку с годом.
получаешь в скрипте год и выводишь месяцы этого года.
по ссылке пердаёшь уже год и месяц.
и так далее.
ДА, это то, что мне нужно!
т.е. я не знаю как свериться с тем, что есть в базе,
допустим я выбираю все новости за 2005 год, нажимаю кнопочку и дальше, програмулина берет 2005 и выбирает из поля даты (mysql), т.е. из такого формата YYYY:MM:DD нужно выбрать YYYY и найти там 2005, дальше из выбраных выбрать месяц MM из уже выбранного формата 2005:MM:DD и т.д....
Ну блин не умею я хорошо объяснять.....
 

zerkms

TDD infected
Команда форума
Vano_php
для выборки года / месяца / дня .... используй конструкцию
`field` BETWEEN '<start_date>' AND '<finish_date>'
дабы дать возможность mysql использовать индексы при выборке
 

Фанат

oncle terrible
Команда форума
Vano_php
тебе надо почитать про оператор WHERE

Тебе не надо выбирать новости за 2005 год
Это сделает за тебя база.

В статье "Вступление в пхп и мускуль" на Деталях, как раз такая ситуация рассматривается.
 

Vano_php

Новичок
хорошо, спасибо, сейчас почитаю...

-~{}~ 13.03.06 17:50:

Одна фигна даже сам скрип приведенный в статейке не работает... даже не успел модорнезировать и исправить под себя! Привожу данный код из статьи "вступление в пхп и мускуэль":

$request=$mysql->query("SELECT date, title, text FROM news ORDER BY date DESC");
$result = mysql_query($request);
if (!mysql_error()) {

while ($row = mysql_fetch_row($result)) {
print("<tr><td><h3>". $row[1]. "</h3>");
print("<font size=-1>". $row[2]. "</font>");
print("<p align=justify>". $row[0]. "</p>");
};
}

else {
print ("Ошибка БД в запросе ".$request.". MySQL пишет ".mysql_error())."<br>";
};

пишет, что а нафиг напишу дословно, корректированно самой программой:

Ошибка БД в запросе Resource id #8. MySQL пишет You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #8' at line 1

короче, запрос в мускуль неправильный
 

baev

‹°°¬•
Команда форума
ну это я через класс MYSQL!!!
Угу.
Вы понимаете, что Вы запрос уже через свой класс отправили?
И уже получили результат.

И после этого Вы полученный результат пытаетесь ещё раз запросом отправить...
 

Vano_php

Новичок
А вот что мне нужно было:

$result=$mysql->query("SELECT DISTINCT YEAR(DATE) AS year FROM `news` ORDER BY `date` DESC");
for ($i=0; $i < mysql_num_rows($result); $i++)
{
$z=$i+1;
$year=mysql_result($result, $i, "year");
echo $z.". <a href='?year=$year'>$year</a><br>";
 
Сверху