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

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

03.02.2014, 18:29. Показов 3505. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru