[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать вывод данных по году?
Страницы: 1, 2
code_maker
Есть таблица table с полями имя документа doc_name, путь к документу path и датой документа date
делаю запрос к базе -
db$=mysql_query(SELECT * FROM table ORDER BY 'date' DESC)
row$=mysql_fetch_assoc(db$)
foreach ($row as r$) {
echo r$
}
Я новичок и код набирал по памяти для скорости, но суть понятна - он выведет список отсортированный в обратном порядке по полю data или по ключу data массива row.
Как сделать чтобы каждый раз когда год документа уменьшался на единицу, цикл выводил тег. Таким образом было бы что-то вроде этого:
2014
Документ дата
документ дата

2013
документ дата
документ дата

Дата в поле date записана в формате YYYY-MM-DD
Может нужен еще один цикл?
kjdgh

$year = '';
foreach ($row as r$) {
if($year != r$['date_year']){
echo 'тэг';
}
$year = r$['date_year'];

echo r$['doc_name'];
}

r$['date_year'] - год. Как отделить его от даты, думаю решиш.



_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



code_maker
kjdgh
спасибо! сижу, осмысливаю.
получается что мне в SQL запросе надо в поле date выбрать только YYYY, тогда r$['date_year']=table['date']
Но тогда не очень понятно как мне вывести всю дату.
Сделать повторный запрос к SQL, сделать массив и... куда его выводить? если с другим именем, то как соотнести с массивом r$?
задать if (r$['doc_name']=new$['doc_name'])
{echo r$['doc_name'] new$['data']}
так чтоли?
kjdgh
просто от полной даты отрывать год. есть функции для работы со строками. оторвите 4 символа от даты и это будет год.
Немогу написать код, так как с телефона неудобно.

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



code_maker
kjdgh
ааа, понял! спасибо, я найду. сначала даже не ясно было что искать. smile.gif
kjdgh
и вообще, храни дату в форме метки time(). легче выводить.

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



Valick
Цитата
оторвите 4 символа от даты

дурной совет
Цитата
храни дату в форме метки time()

ещё хлеще...


_____________
Стимулятор ~yoomoney - 41001303250491
Valick
code_maker, кто вас научил обрабатывать результат запроса с помощью foreach?
Цитата
Может нужен еще один цикл?

нет не нужен
просто необходимо в цикле вывода результата из БД (а это обычно while)
установить переменную которая будет сравнивать год из базы со значением в этой переменной, и в случае если эти значения не равны, то выводить год на экран и перезаписывать значение этой переменной на уже отображённое значение из БД.
Достаточно сумбурно объяснил, но сейчас после двух бутылок шампанского я на большее не способен. Если у вас не получиться реализовать то что я написал, то завтра постараюсь написать вам код (хотя может кто-то это сделает первее меня)
____
а вычленить в запросе двту можно с помощью YEAR(`date`)

_____________
Стимулятор ~yoomoney - 41001303250491
code_maker
Valick
когда решал одну из задач по php, нашел несколько примеров с циклом foreach. С циклом while у меня не получалось, а с foreach все вышло. задача была перебрать массив и вывести элементы на экран.
лучше с while разобраться?
попробую пока с вычленением даты разобраться и циклом while.
rooor
$sql = mysql_query("SELECT *, YEAR(`date`) AS `year` FROM `table` ORDER BY `date` DESC");
if(mysql_num_rows($sql))
{
echo '<pre>';
while($row = mysql_fetch_assoc($sql))
{
print_r($row);
}
}
code_maker
rooor
красивый код с while, спасибо!
у меня сейчас почему-то из поля date функция YEAR('date') да и любая другая MONTH, DAY выводят NULL. если просто echo $row['data'], то показывает дату. я уже и тип данных в sql на date сменил. все равно NULL. и UPDATE сделал, перезаписал данные даты. не понимаю что не так.
Valick
Цитата
у меня сейчас почему-то из поля date функция YEAR('date') да и любая другая MONTH, DAY выводят NULL

так покажи как ты её выводишь-то)
в БД тип поля `date` точно DATE ?

_____________
Стимулятор ~yoomoney - 41001303250491
code_maker
Valick
из phpmyadmin:
1 id_dom varchar(9) utf8_general_ci
2 doc_name varchar(200) utf8_general_ci
3 file_path varchar(100) utf8_general_ci
4 date date
делал уже и int(11).
Делаю чисто SQL-запрос в phpmyadmin:
SELECT YEAR('2011-06-12') выводит 2011 !
делаю SELECT YEAR('date') FROM table - выводит мне NULL для всех полей. Прямо в phpmyadmin.
То есть до php дело вообще не дошло. Дату делал update уже, значение менял - не помогает.
Ищу уже несколько часов похожую проблему - не нашел. У всех все нормально выводит.
Если сделать SELECT date FROM table - выводит даты списочком.
code_maker
я нашел ошибку!!!!!!!
УРАААА)))
если написать 'date' то это будет строка или как-то так и SELECT 'date' даст вывод date.
Поэтому когда делаешь YEAR(date) надо писать без кавычек. Поэтому он и выводил NULL. Ведь он считал date не набором цифр, а словом.
rooor
Цитата
делаю SELECT YEAR('date') FROM table - выводит мне NULL

кавычки обратные надо ставить, а не прямые. Прямые - для значений, обратные - для таблиц и колонок
SELECT YEAR(`date`) FROM `table`

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.