Имеется такой вот цикл:
$req = DB::run("SELECT `games`.*, " . Games::count() . " FROM `games` ORDER BY `id` DESC LIMIT " . $this->page . ", " . $this->message);
while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
$arrayrow[] = $row;
$arrayrowgenre[] = DB::run("SELECT * FROM `genre` WHERE `id` IN (" . $row['genre'] . ") ORDER BY `id` ASC")->fetchAll();
}
Необходимо в шаблон smarty передать значения от $arrayrowgenre
Такой вариант не подходит:
{foreach $arrayrow as $row key=k}
{foreach $arrayrowgenre as $genre}
{$genre.$k.name|esc}<br/>
{/foreach}
{/foreach}
он выводит совсем не те значения.
Проблема в вашем коде (если не брать расчет какой-то ад при выборке данных из БД) состоит в том, что вместо построения и передачи одной связной модели данных вы передаете туда несколько массивов с какими то индексами. Соберите данные изначально в нормальный вид, в том числе, используя нормальные имена переменных, тогда с ними и работать будет проще.
$model = [];
while ($game = $req->fetch(PDO::FETCH_ASSOC)) {
$genres = DB::run("SELECT *
FROM `genre`
WHERE `id` IN (" . $game['genre'] . ")
ORDER BY `id` ASC")
->fetchAll();
$game['genres'] = $genres;
$model[] = $game;
}
// $smarty->assign('model', $model); // или иначе передать данные в шаблон
в шаблоне вывод таблицы с играми и жанрами будет выглядеть следующим образом:
{foreach $model as $idx => $game}
<tr class="game" id="{$game.id}">
<td>{$game.name}</td>
<td>
<ul>
{foreach $game.genres as $genre}
<li>{$genre.name}</li>
{/foreach}
</ul>
</td>
</tr>
{/foreach}
зы: и почитайте где-нибудь про работу с БД в части выборки данных, а также про сами БД в части их реализации. Не ясно зачем вы фактически храните связи многие-ко-многим сериализованные в поле таблицы.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники