Intereting Posts
Безопасная функция сравнения строк Как написать регулярное выражение для поиска одного каталога в URL-адресе? Лучший способ присвоить переменной значение по умолчанию (имитировать Perl ||, || =) Получение ответа HTML вместо JSON в android Почему этот короткий скрипт php не отправляет электронную почту? Получить Учение или пройти службу без использования __construct – Symfony2 Управлять фатальными ошибками в PHP с помощью register_shutdown_function () javascript run xmlhttp php script 404 не найден Установлен ли параметр_пакеты_файла () в параметре timeout? Дата истечения срока действия PHP установить тайм-аут сеанса php Каков правильный формат соли blowfish с использованием склепа PHP? Сопоставления в случаях переключения, действительно ли они? «PDOException» с сообщением «SQLSTATE : общая ошибка: 2014 Не удается выполнить запросы, в то время как другие небуферизованные запросы активны Защита каталога от прямого доступа к URL-адресу

Как создать вложенный список внутри цикла while?

У меня возникли проблемы с попыткой получить вложенную <ul> внутри цикла while. Я не уверен, что это возможно, поэтому я открыт для альтернатив.

Вот краткое изображение того, как выглядит моя база данных и чего я пытаюсь достичь.

Вот мой sql

SELECT * FROM drinks_category, drinks_lookup, drinks WHERE drinks.drink_id = drinks_lookup.drink_id AND drinks_lookup.drinks_category_id = drinks_category.drinks_category_id ORDER BY drinks_category.drinks_category_title 

Вот мой вывод php

 $result = $conn->query($sql) or die(mysqli_error()); $last_category = 0; while ($row = $result->fetch_assoc()) { if($row['drinks_category_id'] != $last_category) { echo "<h1>" . $row['drinks_category_title'] . "</h1>"; } echo "<p>" . $row['drink_name'] . "</p>"; $last_category = $row['drinks_category_id']; } 

Я использую mysqli и php. Заранее спасибо!

Related of "Как создать вложенный список внутри цикла while?"

Обновите цикл while следующим образом:

 while ($row = $result->fetch_assoc()) { if($row['drinks_category_id'] != $last_category) { if($last_category != 0) echo '</ul>'; echo "<h1>" . $row['drinks_category_title'] . "</h1>"; echo "<ul>"; } echo "<li>" . $row['drink_name'] . "</li>"; $last_category = $row['drinks_category_id']; } if($last_category != 0) echo "</ul>"; 

Вместо того, чтобы иметь 3 таблицы, вы можете просто добавить category_id в свой стол для напитков, просто для упрощения. Тогда вы можете сделать это:

 SELECT drink_name, (SELECT drnk_category_title FROM drinks_category WHERE drink_category_id = drink_category // THE COLUMN I SUGGESTED //) AS title FROM drinks 

И тогда вы можете зацикливать результат и быстро создать нужные вам узлы

 $result = $conn->query($sql) or die(mysqli_error()); $last_category = 0; while ($row = $result->fetch_assoc()) { if($row['drinks_category_id'] != $last_category) { // close previous </ul> if( $last_category != 0 ) echo "</ul>"; // new title echo "<h1>" . $row['drinks_category_title'] . "</h1>"; // new <ul> echo "<ul>"; $last_category = $row['drinks_category_id']; } echo "<li>" . $row['drink_name'] . "</li>"; } // close last </ul> if( $last_category != 0 ) echo "</ul>";