Вложенный цикл php запускается только один раз при подключении к sql - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь выучить php, и у меня есть это упражнение, над которым я работаю. У меня есть база данных SQL с двумя таблицами: категории и элементы. Я хочу пройтись по категориям и создать HTML-таблицу для каждой категории. Я могу сделать эту часть хорошо. Затем для каждой категории я хочу просмотреть каждый элемент и проверить, принадлежит ли он к этой категории. Если это так, то он попадает в таблицу. Однако по какой-то причине второй цикл запускается только для первой категории.

Я пытался использовать цикл foreach для элементов, но потом ничего не показывалось.

<?php while($category = mysqli_fetch_assoc($category_result)) : ?>

<button class="collapsible"><?= $category[Name]; ?></button>
    <div class="link-data">
        <table class="link-table">
            <?php while($item = mysqli_fetch_assoc($items_result)) : ?>
            <?php if (item[category_id] = category[id] ) : ?>
            <tr>
                <td><?= $item[name]; ?></td>
                <td><?= $item[price]; ?></td>
                <td><?= $item[description]; ?></td>
            </tr>
            <?php endwhile; ?>
            <?php endif; ?>
        </table>

    </div>

<?php endwhile; ?>

Я ожидаю, например, такой результат:

Phones :
  - Samsung

Toys :
 - Rubber ball

Books :
 - Harry Potter

Вместо этого я получаю это:

Phones :
 - Samsung
 - Rubber ball
 - Harry Potter

Toys :

Books :

1 Ответ

1 голос
/ 09 июля 2019

для внутреннего цикла после первого раза указатель item_result завершается, и вы должны сбросить его, если хотите повторить цикл.

так, прежде чем изнутри добавить эту строку

mysqli_data_seek($items_result, 0);

эта строка устанавливает указатель item_result на первую строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...