Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
-4 / 1 / 0
Регистрация: 14.06.2022
Сообщений: 33

Как вывести из БД список, поделить его на категории и разместить в разных div

21.02.2023, 13:57. Показов 1953. Ответов 24
Метки item, php (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла необходимость вывести с базы разбитый на три раздела(категории) список и раскидать это по блокам. Проблема в том, что я не представляю себе как это сделать.

На сайте подключен пример вывода списка, который я выложу ниже. Есть две таблицы "articles" и "menu". menu содержит в себе разделы: "id, name, href, position", а articles заголовки статей: "id, date, author, title, text, cat".

Я пытаюсь сделать так, чтобы строки из articles выводились в зависимости от категории из menu по шаблону allcontent.html.
Есть идея соединить таблицы через запрос INNER JOIN и вывести с помощью массива, но как это грамотно сделать? Помогите пожалуйста.

allcontent.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<<!--из категории автомобилей-->
[_while]
        <li class="hs__item item" onclick="location.href='main.php';"> 
          <div class="hs__item__image__wrapper"><img class="hs__item__image" src="https://picsum.photos/id/112/300/300" alt=""/></div>
          <div class="hs__item__description"><span class="hs__item__title">[_title]</span><span class="hs__item__subtitle">[_author]</span><span><a style="font-weight:100;" href="php/eddform.php?page=edd_content&id=[_id]">ред.</a><a style="font-weight:100;" href="?page=edd_content&del_post=[_id]"><img src="img/del.jpg" border="0px"></a></span></div>
        </li>
        [_while]
 
<<!--из категории природы-->
[_while]
        <li class="hs__item item" onclick="location.href='main.php';"> 
          <div class="hs__item__image__wrapper"><img class="hs__item__image" src="https://picsum.photos/id/112/300/300" alt=""/></div>
          <div class="hs__item__description"><span class="hs__item__title">[_title]</span><span class="hs__item__subtitle">[_author]</span><span><a style="font-weight:100;" href="php/eddform.php?page=edd_content&id=[_id]">ред.</a><a style="font-weight:100;" href="?page=edd_content&del_post=[_id]"><img src="img/del.jpg" border="0px"></a></span></div>
        </li>
        [_while]
 
<<!--из категории стран-->
[_while]
        <li class="hs__item item" onclick="location.href='main.php';"> 
          <div class="hs__item__image__wrapper"><img class="hs__item__image" src="https://picsum.photos/id/112/300/300" alt=""/></div>
          <div class="hs__item__description"><span class="hs__item__title">[_title]</span><span class="hs__item__subtitle">[_author]</span><span><a style="font-weight:100;" href="php/eddform.php?page=edd_content&id=[_id]">ред.</a><a style="font-weight:100;" href="?page=edd_content&del_post=[_id]"><img src="img/del.jpg" border="0px"></a></span></div>
        </li>
        [_while]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//ФУНКЦИЯ ВЫВОДА СПИСКА
function allcontent()//Функция вывода списка постов
{
$sm_read = file("php/templates/allcontent.html");//...подключаем шаблон
$sm_read = implode("",$sm_read);//функция file() возвращаем массив, поэтому склеиваем его
preg_match("/\[_while\](.*?)\[_while\]/s",$sm_read,$tamp_while);//Находим в шаблоне тут часть, которую будет ду вайлить
 
//Выводим из базы данных посты
$result_index = R::getAll("SELECT id,author,title,cat FROM articles ORDER BY id DESC");
foreach ($result_index as $myrow_index)
{
    
    if($myrow_index != "")//Проверяем есть ли в базе данных записи
    {//Если есть...
        if($myrow_index['cat'] != 0)
        {
            $result_cat = R::getAll("SELECT name FROM menu WHERE id='$myrow_index[cat]'");//Выводим из базы имя пункта
            foreach ($result_cat as $myrow_cat)
            {
                $name_cat = $myrow_cat['name'];
            }
        }
        else $name_cat = "Нет категории";
 
        $copy_tamp = $tamp_while[1];//Сохраняем ту часть которая будет повторяться в отдельную переменную
        //Делаем замены код-слов
        $copy_tamp = str_replace("[_title]",$myrow_index['title'],$copy_tamp);//Название поста
        $copy_tamp = str_replace("[_author]",$myrow_index['author'],$copy_tamp);//Автор
        $copy_tamp = str_replace("[_id]",$myrow_index['id'],$copy_tamp);//ID постов
        $copy_tamp = str_replace("[_cat]",$name_cat,$copy_tamp);//Имя категории
 
 
        $list .= $copy_tamp;//Объединяем результат в одну переменную
    }
    else $sm_read = "<p align='center'>Нет пользователей</p>";//Если записей нет, то вывести это сообщение
}
    
$sm_read = preg_replace("/\[_while\].*?\[_while\]/s",$list,$sm_read);//Вставляем в шаблон список постов
return $sm_read;//Выводим с генерированный html код
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2023, 13:57
Ответы с готовыми решениями:

Как поделить число и вывести его на экран?
как поделить число и вывести его на экран (fasm),написал код но не получается программа выдает ошибку ;lab_1 var 12/ex_2 format PE...

Как поделить категории на 2 столбца?
Не понимаю, как это исправить:(

Как вывести список категории новостей на sidebar?
У меня есть код: &lt;div class=&quot;side-block&quot;&gt; &lt;div class=&quot;head&quot;&gt;&lt;h4&gt;Категории&lt;/h4&gt;&lt;/div&gt; &lt;ul style=&quot;margin: 10px...

24
132 / 76 / 16
Регистрация: 08.07.2022
Сообщений: 309
24.02.2023, 09:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Ra1s Посмотреть сообщение
У меня трудности с адаптацией кода в шаблонизатор
Что за шаблонизатор?

Добавлено через 1 минуту
smarty \ twig \ tpl \ laravel \ mustache \ volt ?Или какой другой
0
-4 / 1 / 0
Регистрация: 14.06.2022
Сообщений: 33
24.02.2023, 12:34  [ТС]
xkkx, да простой самодельный. Всё что для вывода из базы лежит в этом маленьком коде+ orm redbean
0
132 / 76 / 16
Регистрация: 08.07.2022
Сообщений: 309
24.02.2023, 17:32
Цитата Сообщение от Ra1s Посмотреть сообщение
да простой самодельный.
Так это никакой не шаблонизатор. И архитектура выбрана не лучшим способом, даже отвратная реализация.
0
-4 / 1 / 0
Регистрация: 14.06.2022
Сообщений: 33
24.02.2023, 17:55  [ТС]
xkkx, ну я как бэ вообще далек по специальности от php программирования. Как могу так и реализую и по ходу дела учусь. Мне главное результат, а не красиво оформленный код по современным представлениям его реализации
0
132 / 76 / 16
Регистрация: 08.07.2022
Сообщений: 309
24.02.2023, 18:36
Цитата Сообщение от Ra1s Посмотреть сообщение
Мне главное результат, а не красиво оформленный код по современным представлениям его реализации
По сути тебе нужен HTML каркас. И потом идти в тему JS что бы спросить у людей как правильно делать запросы на сервер с помощью ajax или fetch. И выводить данные уже в блоки.

Данная задача очень легко делается за считанные минуты, имея нормальный HTML каркас, а не кашу непонятно из чего.

Т.е изначально надо было продумать архитектуру визуальную, и то как с ней будут взаимодействовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2023, 18:36
Помогаю со студенческими работами здесь

Как растянуть основной div до футера и разместить текст ровно центру этого div?
Всем привет, решил попробовать создать простейший резиновый сайт и чтобы футер был привязан внизу, чтобы не писать стандартную форму...

Как убрать список материалов категории со страницы категории?
У меня на сайте есть категория в которой содержится несколько материалов. Мне нужно чтобы когда пользователь находится на странице...

Как занести путь файла в БД и вывести его в div?
Здравствуйте, есть форма загрузчика файлов: &lt;?php $uploadfile = &quot;gallery/&quot;.$_FILES; move_uploaded_file($_FILES,...

Вывести список меток в текущей категории
Здравствуйте! Помогите вывести список меток текущей категории Я пробую $tags = get_terms( array( 'taxonomy' =&gt;...

Как разместить DIV по горизантали?
Вобщем я пытаюсь разместить div по горизонтали. когда я в dreeamwiver просматривую результат то всё нормально. если же запускаю через IE и...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru