С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65

Вывод из таблицы БД новостей по категориям.

03.02.2014, 18:29. Показов 3489. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста, как это реализовать:

Таблица состоит из 3 полей: id, cat и novost

В поле cat одна цифра 1 или 2.
В поле novost находится текстовая новость.

Нужно выводить на экран новости по категориям.

Если в столбике cat стоит цифра 1, то выводим novost которая в поле с этим значением.
Если в столбике cat стоит цифра 2, то выводим novost которая в поле с этим значением.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2014, 18:29
Ответы с готовыми решениями:

Не получается реализовать вывод новостей по категориям
Помогите, выдает ошибку, не выводит новости по категориям, выводит только на главной. На остальные же категории выдает: Warning:...

Приставки в названиях для новостей по категориям
Здраствуйте уважаемые форумчане! Ищу хак для DLE, который добавит приставки в каждую новость по категориям. Например: Категория фильмы...

Постраничный вывод новостей из таблицы
Дали такое задание: В базе данных MySQL существует таблица news (дамп таблицы - в файле news.sql). Атрибуты: id:...

8
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
03.02.2014, 19:06
Не понял "юмора". Вам нужно вывести все новости, где cat = 1, 2 и т.п.?
0
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
03.02.2014, 20:24  [ТС]
Цитата Сообщение от ilikesmile Посмотреть сообщение
Не понял "юмора". Вам нужно вывести все новости, где cat = 1, 2 и т.п.?
Например 100 новостей, две категории: интересные (cat=1) и не интересные (cat=2). Поле cat как бы идентификатор новости, а сама новость в соседнем поле.

Добавлено через 39 минут
Наверно, мой пример не очень удачен и ясно высказан. Попробую так:

На странице две ссылки: "Хорошие новости" и "Плохие новости".

Как можно разделить новости по этим категориям? В таблице два поля : id и novost. Все новости и хорошие и плохие находятся в вперемешку в одном столбике novost.

Возможно расставить самому идентификаторы на "плохие" и "хорошие" новости и выводить их отдельно, а не все кучей ?

Подсказали, как вариант, можно сделать плохим новостям - отдельное поле и хорошим новостям - отдельное поле в таблице , и выводить только эти столбики.
А если категорий будет 20? Это надо делать 20 полей.
0
53 / 28 / 13
Регистрация: 01.03.2013
Сообщений: 330
03.02.2014, 20:47
Как вариант:
создать две функции bad_news() и good_news() которые возвращают массив новостей
В одной создать следующий запрос:
PHP
1
$query = "SELECT * FROM news WHERE cat = 1";
В другой:
PHP
1
$query = "SELECT * FROM news WHERE cat = 2";
далее получаешь эти массивы:
PHP
1
2
$bad_news = bad_news();
$good_news = good_news();
потом проходишь по этим массивам в вмде и выводишь информацию в браузер
0
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
04.02.2014, 01:54  [ТС]
Цитата Сообщение от Kenny7423 Посмотреть сообщение
потом проходишь по этим массивам в вмде и выводишь информацию в браузер
Можно поподробней как это сделать?

Добавлено через 2 часа 5 минут
Сделал три таблицы bed, good, novost

В таблицу bed поместил все плохие новости
В таблицу good хорошие
Таблица novost пока пустая

Нажимая в браузере "плохие новости" идёт соединение с таблицей bed и отображаются плохие новости.
Нажимая в браузере "хорошие новости" идёт соединение с таблицей good и выходят хорошие новости.

Как сделать, что бы в таблицу novost заносились новости из таблицы bed и таблицы good ?

Таблица novost выводиться на главной странице, и занося новость в таблицу bed или good эта новость будет и на главной странице.

Добавлено через 2 часа 20 минут
Опять переделал таблицу, как в начале стала: три поля id, cat, novost

в cat заношу цифру 1 это плохая новость
цифру 2 хорошая новость

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* выводить поле novost таблицы news где поле cat='1'*/
$result = mysql_query ("SELECT novost FROM news WHERE cat='$cat'",$db);
 
$cat="1";
 
/* заносим в массив $myrow */
$myrow = mysql_fetch_array ($result);
 
do
{
/* выводим на экран */
printf ($myrow["novost"]);
}
/* делаем до тех пор, пока не закончиться $result */
while ($myrow = mysql_fetch_array ($result));
Работает.

А если новость относиться и к хорошей и плохой, надо вывести её и категории плохой и хорошей. Значит в одном поле должна стоять цифра 1 и 2, ставлю в поле сat 1 2 не выводиться не та не другая.
Пробовал 1,2 и 1;2
Как сделать, что бы $cat выбирала нужное значение из поля, где несколько цифр.
0
53 / 28 / 13
Регистрация: 01.03.2013
Сообщений: 330
04.02.2014, 07:28
Я уже писал, что нужно делать выше. не надо передавать функции никакую переменную, делайте проще:
-Одна таблица в базе, с полями идентификатор, название, индикатор(1 или 2);
-Три функции - одна для плохих новостей, вторая для хороших, третья для всех
Пример для хороших новостей:
PHP
1
2
3
4
5
6
7
8
9
10
function good_news(){
    //Тут пишите соединение с базой
    //Запрос
   $query = "SELECT * FROM news WHERE cat = 1" or die(mysql_error());
      $res = mysql_query($query);
      //Создаем массив
      $good_news = array();
      $good_news = mysql_fetch_assoc($res);
     return $good_news;
}
Получаем массив из функции
PHP
1
$good_news = good_news();
В шаблоне пишем нечто подобное:
PHP
1
2
3
4
5
<?php if($good_news): ?>
    <?php foreach($good_news as $item): ?>
          <li><a href="?view=news_one&amp;news_id=<?=$item['news_id']?>"><?=$item['novost']?></a></li>
    <?php endforeach; ?>
<?php endif; ?>
в шаблоне можете распечатать массив $good_news и посмотреть
0
04.02.2014, 07:46

Не по теме:

Цитата Сообщение от strongK Посмотреть сообщение
Сделал три таблицы bed, good, novost
Просто офигеть... "кровать, хорошо, что_то_на_транслите" %-)

0
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
04.02.2014, 12:06  [ТС]
Цитата Сообщение от Kenny7423 Посмотреть сообщение
Я уже писал, что нужно делать выше. не надо передавать функции никакую переменную, делайте проще:
-Одна таблица в базе, с полями идентификатор, название, индикатор(1 или 2);
-Три функции - одна для плохих новостей, вторая для хороших, третья для всех

Сделал для всех трёх, шаблон правда по другому, но главное получилось. Спасибо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
04.02.2014, 19:09
Цитата Сообщение от Kenny7423 Посмотреть сообщение
-Три функции - одна для плохих новостей, вторая для хороших, третья для всех
и к чему дублирование кода?
Цитата Сообщение от Kenny7423 Посмотреть сообщение
не надо передавать функции никакую переменную
А я считаю, что надо.
Помимо этого:
Цитата Сообщение от Kenny7423 Посмотреть сообщение
//Тут пишите соединение с базой
и каждый раз при вызове функции соединение будет устанавливаться заново. Я не сторонник синглтона, но, все же, не много ли будет?
Цитата Сообщение от Kenny7423 Посмотреть сообщение
PHP
1
$query = "SELECT * FROM news WHERE cat = 1" or die(mysql_error());
Это равносильно записи
PHP
1
$query = true or die("ERROR!");
Не в плане занесенного в переменную $query значения, а в плане ошибки - второе условие (которое "die") выполнится только в том случае, если первый аргумент при приведении к булеву даст false. Т.е., например, пустая строка или даже 0 и т.п. (результат можете проверить сами). Список значений, которые при приведении к булеву дадут false, есть где-то на офф сайте (вроде, в описании конструкции empty и еще где-то).
Добавить это к выполнению запроса (mysql_query) - это я еще могу понять, но к строке..?
Цитата Сообщение от Kenny7423 Посмотреть сообщение
//Создаем массив
зачем? Возвращается ведь всего лишь один массив, а присвоение пых и сам сделает нормально, без явной инициализации. Даже при использовании global значение перезапишется, поэтому эта строчка просто-напросто лишняя. Ну и, что делать, если захотелось не одну запись извлечь, а несколько?
В конечном итоге, при использовании mysql функция должна выглядеть, как минимум, хотя бы так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function getNews($connect, $all=true, $cat=false){
    $query = 'SELECT * FROM `news`';
    if(is_numeric($cat))
        $query .= ' WHERE `cat` = ' . $cat;
    $res = mysql_query($query, $connect);
    //Создаем массив
    if(!$all)
        return mysql_fetch_assoc($res);
    $news = array();
    while($row = mysql_fetch_assoc($res))
        $news[] = $row;
     return $news;
}
И вызывать ее как-то так
PHP
1
2
3
4
5
6
7
8
9
$connect = mysql_connect(.....);
mysql_select_db(...);
mysql_set_charset('utf8');
............
$good_news = getNews($connect, true, 1); //извлечь все новости с категорией "1" (хорошие)
.........
$bad_news = getNews($connect, true, 2); //извлечь все новости с категорией "2" (плохие)
.........
$all_news = getNews($connect, true); //извлечь все новости
Однако и этого, все равно, недостаточно, имхо (помимо использования устаревшего mysql, нет ни возможности задать таблицу, ни возможности указать названия извлекаемых полей, ни возможности задать тип возвращаемого массива, ни возможности добавить дополнительные критерии в запрос, ни ...., ничего, в общем).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2014, 19:09
Помогаю со студенческими работами здесь

Не работает перенос текста, и вывод новостей из таблицы MySQL
Приветствую всех! Перейду сразу к делу: 1. в css прописал { word-wrap: break-word; } в опере это работает, в ИЕ, Хроме, и Мозиле не...

Вывод по категориям
Через процедуру printf вывожу с базы название категории и идентификатор printf(&quot;&lt;a...

Вывод статей по категориям
Помогите вывести статьи в учебном блоге. Не могу понять как это сделать. Так у меня выводятся все статьи, которые есть в блоге ...

Вывод из БД + разделение по категориям
Добрый день требуется реализовать что-то вроде этого: Я пробовал сделать таким образом: $getcats = mysql_query (&quot;SELECT...

Вывод страниц по категориям
Всем привет! Ребята подскажите, растолкуйте, как содержать информацию в базе данных по категориям и как её выводить по категориям.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru