За последние 24 часа нас посетили 22542 программиста и 1142 робота. Сейчас ищут 664 программиста ...

Вывести данные из базы Foreach.

Тема в разделе "PHP для новичков", создана пользователем Faith81, 16 фев 2020.

Метки:
  1. Faith81

    Faith81 Новичок

    С нами с:
    16 фев 2020
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте.
    Очень простой вопрос.
    Подскажите как вывести из базы данных данные, с сортировкой по категориям.

    Понятно, что буедет работать Foreach, но все таки подскажите код.

    БАЗА Mysql `Base`
    Id --- Type --- Name --- Qua
    1 Books Gaidar 3шт
    2 Books Gogol 2шт
    3 Journals Maxim 5шт
    4 Journals Mens 6шт

    Требуется вывод на экран в таком виде:
    Books
    Gaidar 3шт
    Gogol 2шт

    Journals
    Maxim 5шт
    Mens 6шт

    Вот код - вывожу тупо все данные из базы.
    Просьба добавить Foreach и вложенный Foreach, чтобы выводило как мне нужно.
    PHP:
    1. $result=mysql_query("SELECT * FROM `Base` ORDER BY `Id`");
    2.   while($row = mysql_fetch_array($result)){
    3.     $type=$row['Type'];
    4.     $name=$row['Name'];
    5.     $qua=$row['Qua'];
    6.  
    7.    echo "
    8. <tr>
    9. <td>$type</td>
    10. <td>$name</td>
    11. <td>$qua</td>
    12. </tr>";
    13.    } ?>
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  3. Faith81

    Faith81 Новичок

    С нами с:
    16 фев 2020
    Сообщения:
    3
    Симпатии:
    0
    При чем тут сортировка?
    Это вы ошиблись адресом.
    Мне нужно вывести таблицу с оглавлениями.
    Это делается методом foreach (переборка оглавлений) и вложением foreach (для переборки всего остального).
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Ну, вперед, коли такой умный.

    А сортировка тут при том, что тебе нужно отсортировать. Только не по id показанных записей, а по категориям (по крайней мере в первую очередь). После сортировки выводить можно одним циклом, отслеживая изменение категории и выдавая при этом соотв. заголовок.

    И почему категории не нормализованы?
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    PHP:
    1. <?php for ($type=''; $row=getrow();): if ($row['type']!=$type): $type=$row['type']; ?>
    2. <tr><td colspan=3><?= $row['type'] ?></td></tr>
    3. <?php endif; ?>
    4. <tr>
    5. <td><?= $row['type'] ?></td>
    6. <td><?= $row['name'] ?></td>
    7. <td><?= $row['qna'] ?></td>
    8. </tr>
    9. <?php endfor; ?>
    --- Добавлено ---
    Обычно это делается с числовыми идентификаторами категорий и «счетчику» первоначально присваивается недействительный идентификатор, например нулевой.

    Можно использовать и while. Для этого просто разместите первое присваивание перед циклом.
    --- Добавлено ---
    И сделай над собой усилие, все же посмотри последний пример по ссылке ;)
     
  6. Faith81

    Faith81 Новичок

    С нами с:
    16 фев 2020
    Сообщения:
    3
    Симпатии:
    0
    Мда... я так понимаю все сложно очень у тебя с php, да и в жизни видимо не особо ликвидный.
    Удивляюсь, почему ты не посоветовал включить компьютер в розетку?
    Или открыть редактор php кода!?!?

    Сортировка - это само собой разумеется.
    Только основной вопрос по организации цикла это не решает.

    Хорошо, я тебя научу - и на первый раз, это будет бесплатно.
    Примерный код c foreach будет выглядеть так:

    <?php foreach ($entityGroups as $books => $entities): ?>
    <table>
    <?php echo $books; ?>
    <?php foreach ($entities as $entity): ?>
    <tr>
    <td><?= $entity->books?></td>
    <td><?= $entity->name ?></td>
    <td><?= $entity->qua ?></td>
    </tr>
    <?php endforeach ?>
    </table>
    <?php endforeach ?>[/code]
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Да, видимо. Раз трачу свое время на таких умников, как ты, вместо того чтобы заниматься делом. Успехов.