Вывод данных из бд по категории [закрыто]
Необходимо вывести карточки из игроков нужного состава. Как на примере
Вот пример кода
Из бд
function get_category()
{
$players =$GLOBALS['db']->query("SELECT * FROM `players` INNER JOIN `categories` ON `categories`.`category_id` = `players`.`category_id` ORDER BY `players`.`category_id`");
return $players;
}
Страница вывода
<?php
$players=get_category();
?>
<?php
foreach ($players as $player) : ?>
<?php if ($player['category_name'] != $last_category): ?>
<?php if (!$first) : echo "</div></div>"; ?>
<?php endif; ?>
<div class="structure">
<div class="structure_logo">
<h1></h1>
</div>
<div class="owl-carousel owl-theme">
<?php endif; $last_category =$player['category_name'] ;?>
<a href="">
<div class="player">
<div class="player_head"><img src="<?php echo $player["image"]; ?>" alt=""></div>
<div class="player_info">
<div class="player_name">
<p><span class="player_number"><?php echo $player["number"]; ?> </span><?php echo $player["name"]; ?></p>
</div>
</div>
</div>
</a>
<?php $first = false; endforeach; ?>
Структуры таблиц
[1]: https://i.stack.imgur.com/abYVs.jpg
Сама бд
-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1:3306
-- Время создания: Авг 27 2020 г., 14:36
-- Версия сервера: 10.3.22-MariaDB
-- Версия PHP: 7.1.33
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `test`
--
-- --------------------------------------------------------
--
-- Структура таблицы `categories`
--
CREATE TABLE `categories` (
`id` int(255) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `categories`
--
INSERT INTO `categories` (`id`, `name`) VALUES
(1, 'VAn'),
(3, 'dada'),
(4, 'Мелкиий'),
(6, 'simple');
-- --------------------------------------------------------
--
-- Структура таблицы `players`
--
CREATE TABLE `players` (
`newid` int(10) UNSIGNED NOT NULL,
`player_id` int(255) NOT NULL,
`name` tinytext NOT NULL,
`number` int(255) NOT NULL,
`info` text NOT NULL,
`image` tinytext NOT NULL,
`category_id` int(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `players`
--
INSERT INTO `players` (`newid`, `player_id`, `name`, `number`, `info`, `image`, `category_id`) VALUES
(4, 231, 'sadsda', 10, 'вмп', '', 3),
(5, 222, 'Billy Herrington', 69, 'цукцукцукцукцукуц', 'https://pinger.kz/storage/avatars/escjxndwkaiklc1-5e941b93e1591.jpeg', 1);
-- --------------------------------------------------------
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `categories`
--
ALTER TABLE `categories`
ADD PRIMARY KEY (`id`);
--
-- Индексы таблицы `players`
--
ALTER TABLE `players`
ADD PRIMARY KEY (`newid`);
--
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `categories`
--
ALTER TABLE `categories`
MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT для таблицы `players`
--
ALTER TABLE `players`
MODIFY `newid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
--
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `players`
--
ALTER TABLE `players`
ADD CONSTRAINT `players_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Выводится либо пустой массив, либо все игроки в одной карусели.
Ответы (1 шт):
Автор решения: pwnz
→ Ссылка
Не правильно делаешь INNER JOIN а точнее не по тому полю
categories.category_id напиши categories.id