Снова вопрос по Smarty

264
24 февраля 2017, 03:14

Имеется такой вот цикл:

$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}

он выводит совсем не те значения.

Answer 1

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

$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}

зы: и почитайте где-нибудь про работу с БД в части выборки данных, а также про сами БД в части их реализации. Не ясно зачем вы фактически храните связи многие-ко-многим сериализованные в поле таблицы.

READ ALSO
Как сформировать запрос при помощи curl в PHP?

Как сформировать запрос при помощи curl в PHP?

В документации к API сказано, что в тело запроса нужно вставить JSON-строку с параметрами и указан пример:

301
Передача параметра php

Передача параметра php

Добрый деньЕсть разметка

274
html option и php

html option и php

Как получить выбранное пользователем value из option с помощью php ?

257
highcharts js. Как сделать скругленные концы?

highcharts js. Как сделать скругленные концы?

В опциях определено что linecap: round, но концы все равно не скругленные

298