[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод названия категории новости
allforweb
Как правильно сделать вывод категории к которой принадлжит новость, если выводится определенное количество новостей из разных разделов на страницу в цикле? Структура БД простая: новость - номер категории к которой она принадлежит. По структуре примерно так:
Заголовок новости
Название категория (она же гиперссылка, но тут вроде просто, потому что id категории есть в вырорке)
Краткое описание новости (ну и в полном описании тоже категория может пригодится).




Спустя 7 часов, 15 минут, 24 секунды (9.04.2011 - 02:15) sebastjan написал(а):
Как то запутанно излагаете.
Лично я понял так.
1.Имеються таблицы под названием категории(В их полях статьи-новости)
2.Надо выводить блоки с статьями-новостями и заголовком какая категория.(Вроде так понял !?)
Я у себя построил такую логику,
Сделал отдельную таблицу в которой поля это имена категорий их то и использую в гет.
К примеру навигация-меню в цикле выводится а из этой таблицы все имена полей идут в линки навигации
В админке удобно, удалил из этой таблицы поле категории и автоматом из навигации всё проподает.(удаляю ещё и из базы таблицу под этим именем чтоб не оставалось лишнего)
Наверное я тоже изложил не совсем понятно blink.gif

Моё мнение - сделай отдельную таблицу для имён категорий, а от неё и играй.

Спустя 13 часов, 20 минут, 43 секунды (9.04.2011 - 15:36) allforweb написал(а):
Цитата (sebastjan @ 8.04.2011 - 23:15)
Как то запутанно излагаете.
Лично я понял так.
1.Имеються таблицы под названием категории(В их полях статьи-новости)
2.Надо выводить блоки с статьями-новостями и заголовком какая категория.(Вроде так понял !?)
Я у себя построил такую логику,
Сделал отдельную таблицу в которой поля это имена категорий их то и использую в гет.
К примеру навигация-меню в цикле выводится а из этой таблицы все имена полей идут в линки навигации
В админке удобно, удалил из этой таблицы поле категории и автоматом из навигации всё проподает.(удаляю ещё и из базы таблицу под этим именем чтоб не оставалось лишнего)
Наверное я тоже изложил не совсем понятно blink.gif

Моё мнение - сделай отдельную таблицу для имён категорий, а от неё и играй.

У меня все это сделано.
Категории - id - category
Новости - id - сама новость - id категории которой она принадлежит

Спустя 1 минута, 52 секунды (9.04.2011 - 15:38) neadekvat написал(а):
Подзапросом через LEFT JOIN, например.
Покажите точную структуру этих двух таблиц - иначе нет смысла писать запрос.

Спустя 22 минуты, 5 секунд (9.04.2011 - 16:00) allforweb написал(а):
Цитата (neadekvat @ 9.04.2011 - 12:38)
Подзапросом через LEFT JOIN, например.
Покажите точную структуру этих двух таблиц - иначе нет смысла писать запрос.

Вот у меня такая структура таблиц:
Категории - имя таблицы category:
id_cat - name - active (1 или 0, 1 - категория выводится, 0 - категория не выводится)
Новости - имя таблицы news:
id_news date title content category active (1 или 0, 1 - новость выводится, 0 - не выводится)

На странице выглядит так:

Заголовок
Дата: 01.08.2010 | Имя категория (гиперссылка)
Краткое описание новости

Заголовок
Дата: 01.08.2010 | Имя категория (гиперссылка)
Краткое описание новости

Заголовок
Дата: 01.08.2010 | Имя категория (гиперссылка)
Краткое описание новости

пагинатор 1 2 3 4 ....55

Спустя 4 минуты, 34 секунды (9.04.2011 - 16:04) neadekvat написал(а):
Где-то я тут буквально несколько минут назад уже писал похожий запрос. Ну, ладно.
Связывайте:
SELECT t1.*, t2.id_cat, t2.name
FROM `news` t1
LEFT JOIN category t2 ON t1.category = t2.id_cat
WHERE t1.new_id = 123


Если бы в таблице news категория имела то же имя, что и в своей таблице (id_cat), можно было бы написать проще:
SELECT t1.*, t2.id_cat, t2.name
FROM `news` t1
LEFT JOIN category t2 USING(id_cat)
WHERE t1.new_id = 123

Спустя 5 минут, 46 секунд (9.04.2011 - 16:10) Trianon написал(а):
neadekvat
с using лучше не связываться...
честное равенство в ON куда меньше нервов требует.

Спустя 1 минута, 51 секунда (9.04.2011 - 16:12) neadekvat написал(а):
Цитата (Trianon @ 9.04.2011 - 17:10)
с using лучше не связываться...

Хм.. Я еще не сталкивался с проблемами - чего можно ожидать?

Спустя 11 минут, 59 секунд (9.04.2011 - 16:24) Trianon написал(а):
У табличного соединения есть простое и понятное правило. Табличный результат состоит из суммарного набора колонок левой и правой таблицы.
Применение using убирает из этого результата одну дублирующую колонку.
Сразу возникают дурацкие вопросы.
Как ссылаться? t1.id_cat? t2.id_cat
А если это LEFT запрос - будут там NULL или живые данные в LEFT-строках?
А если цепочка JOIN идет, то там, помнится еще какие-то подводные камни были с приоритетом чтоли...
плюс зависимость от версии сервера. См. мануал.
Короче, куча гимора наползает, который помнить нужно, а не хочется.
а JOIN ON - просто как молоток , и без всяких вывертов.

нет, я не спорю, можно выучить все эти ньюансы, и ходить задрав нос потом спокойно читать using в чужом коде.
Но мне как-то . брр.

Спустя 7 минут, 49 секунд (9.04.2011 - 16:32) neadekvat написал(а):
Ух ты оО Все-таки надо уломать себя на чтение хорошей книжки по mysql. Дьявол - в деталях.
Быстрый ответ:

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