Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод названия категории новости

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
allforweb
Отправлено: 08 Апреля, 2011 - 19:00:15
Post Id


Гость


Покинул форум
Сообщений всего: 108
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Как правильно сделать вывод категории к которой принадлжит новость, если выводится определенное количество новостей из разных разделов на страницу в цикле? Структура БД простая: новость - номер категории к которой она принадлежит. По структуре примерно так:
Заголовок новости
Название категория (она же гиперссылка, но тут вроде просто, потому что id категории есть в вырорке)
Краткое описание новости (ну и в полном описании тоже категория может пригодится).
 
 Top
Lozzie
Отправлено: 08 Апреля, 2011 - 19:16:41
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Апр. 2011  
Откуда: /usr/home/


Помог: 2 раз(а)




Если категории новостей хранятся в отдельной таблице, то можно попробовать вариант, подобный такому:


SQL:
скопировать код в буфер обмена

SELECT news.id, news.title, ..., categories.name FROM news, categories WHERE news.category_id = categories.id
 
 Top
allforweb
Отправлено: 08 Апреля, 2011 - 19:26:16
Post Id


Гость


Покинул форум
Сообщений всего: 108
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Lozzie пишет:
Если категории новостей хранятся в отдельной таблице

Да, конечно, они хранятся в отдельной таблице. Но этот запрос выбирает только для одной новости, а как быть при выводе большого количества новостей на странице?
 
 Top
Lozzie
Отправлено: 08 Апреля, 2011 - 19:30:30
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Апр. 2011  
Откуда: /usr/home/


Помог: 2 раз(а)




Количество не имеет значения. Представим, что у вас две таблицы:
news: id, title, category_id - таблица новостей;
categories: id, name - таблица с именами категорий;
Производим вывод:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  
  5. $result = mysql_query('SELECT news.title, categories.name FROM news, categories WHERE news.category_id = categories.id');
  6. while (list($title, $category) = mysql_fetch_row($result)) {
  7.     print 'Новость ' . $title . ' из категории ' . $category . '<br />';
  8. }
  9.  
 
 Top
allforweb
Отправлено: 08 Апреля, 2011 - 20:13:43
Post Id


Гость


Покинул форум
Сообщений всего: 108
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Lozzie пишет:
Количество не имеет значения. Представим, что у вас две таблицы:
news: id, title, category_id - таблица новостей;
categories: id, name - таблица с именами категорий;
Производим вывод:


Мне нужен вывод всех новостей, а здесь идет выборка только по категории:
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query('SELECT news.title, categories.name FROM news, categories WHERE news.category_id = categories.id');
  2. while (list($title, $category) = mysql_fetch_row($result)) {
  3.     print 'Новость ' . $title . ' из категории ' . $category . '<br />';
  4. }
  5.  


Новость 1
Категория 2

Новость 2
Категория 3

Новость 3
Категория 2

Новость 4
Категория 3 и т.д. т.е. вывод всех всех новостей независимо от категории и в цикле определить к какой категории принадлежит новость
 
 Top
Lozzie
Отправлено: 08 Апреля, 2011 - 20:33:15
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Апр. 2011  
Откуда: /usr/home/


Помог: 2 раз(а)




Цитата:
вывод всех всех новостей независимо от категории и в цикле определить к какой категории принадлежит новость

Вы можете производить любые манипуляции с полученными данными. Например, выводить только заголовки новостей. Зачем определять в цикле, к какой категории пренадлежит новость, если это можно сделать на уровне одного единственного запроса?
Цитата:
Мне нужен вывод всех новостей

В данном случае выводится только заголовок и название категории, но это только пример. Я же не могу знать, какие именно данные у вас в базе.
То, как вы написали выше: Новость 1 Категория 2 ... Новость 4 Категория 3 - в приведенном выше коде именно так и выводится результат. Напишите схематично, как именно должен выглядить конечный вариант и имена колонок/таблиц, а я составлю подходящий запрос и вывод.
 
 Top
allforweb
Отправлено: 09 Апреля, 2011 - 15:34:21
Post Id


Гость


Покинул форум
Сообщений всего: 108
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Lozzie пишет:
Напишите схематично, как именно должен выглядить конечный вариант и имена колонок/таблиц, а я составлю подходящий запрос и вывод.

Попробовал, но получилась что-то страшное и нелогичное
Вот у меня такая структура таблиц:
Категории - имя таблицы 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
 
 Top
vsll
Отправлено: 09 Апреля, 2011 - 15:51:20
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1. echo "<table class='base'>\n";
  2. $result = mysql_query("SELECT * FROM ".DB_NEWS_CATS." ORDER BY news_cat_name");
  3.         if (dbrows($result)) {
  4.                 while ($data = dbarray($result)) {
  5.                         echo "<tr>\n";
  6.                         echo "<td>".$data['news_cat_name']."</td>\n";
  7.                         echo "</tr>\n";
  8.         $result2 = mysql_query("SELECT * FROM ".DB_NEWS." WHERE news_cat='".$data['news_cat_id']."' ORDER BY news_name");
  9.                         if (dbrows($result2)) {
  10.                 $i = 0;
  11.                                 echo "<tr>\n<td>\n";
  12.                                 echo "<table class='news'>\n";
  13.                                 while ($data2 = dbarray($result2)) {
  14.                                                                                 echo "<tr>\n";
  15.                                         echo "<td>".$data2['news_name']."</td>\n</tr>";
  16.                                         }
  17.                                         $i++;
  18.                                 }
  19.                                 echo "</table>\n</td>\n</tr>\n";
  20.                         } else {
  21.                                 echo "<tr>\n<td>\n";
  22.                                 echo "<table class='news'>\n<tr>\n";
  23.                                 echo "<td>No News have been added to this Category</td>\n";
  24.                                 echo "</tr>\n</table>\n</td>\n</tr>\n";
  25.                         }
  26. }
  27. echo "</table>\n";
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB