Как использовать php / mysql для выбора и отображения данных в нескольких категориях - PullRequest
0 голосов
/ 29 мая 2018

Я пытался создать стол, похожий на спортивные столы.В этой таблице 8 групп.(AH) Есть 4 команды для каждой группы.Я попытался выбрать все команды с помощью приведенного ниже кода SQL и отсортировать их по имени группы

SELECT *
FROM teams
ORDER BY groupName

. Я хочу, чтобы результаты отображались на панели, содержащей таблицу HTML.код ниже:

<?php
    while($row = $result->fetch_assoc()){
?>
        <div class="flip">
            <h3>Group <?php echo($row['groupName']);?></h3>
        </div>
        <div class="panel">
            <table>
                <thead>
                    <tr>
                        <th>#</th>
                        <th>Team</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><?php echo($row['team_pos']); ?></td>
                        <td><?php echo($row['teamName_Pr']); ?></td>
                    </tr>
                </tbody>
            </table>
        </div>
    <?php
        }
    ?>

Но с каждым повторением цикла while имя группы повторяется для каждой команды.Как я могу отобразить все группы команд в определенной таблице?Кроме того, когда я использую GROUP BY вместо ORDER BY, для каждой группы отображается только одна команда.

Мой метод подключения - mysqli.

1 Ответ

0 голосов
/ 29 мая 2018

Вам нужно накапливать строки по groupName.Не используйте GROUP BY, так как он не вернет все строки.

<?php

//$result = ...

$groups = [];

while($row = $result->fetch_assoc()){
    @$groups[$row['groupName']][] = $row;
}

foreach ($groups as $groupName => $rows) {
?>
    <div class="flip">
        <h3>Group <?php echo($groupName);?></h3>
    </div>
    <div class="panel">
        <table>
            <thead>
                <tr>
                    <th>#</th>
                    <th>Team</th>
                </tr>
            </thead>
            <tbody>
                <?php 
                foreach ($rows as $row) {
                ?>
                    <tr>
                        <td><?php echo($row['team_pos']); ?></td>
                        <td><?php echo($row['teamName_Pr']); ?></td>
                    </tr>
                <?php
                }
                ?>
            </tbody>
        </table>
    </div>
<?php
}

Кстати, пожалуйста, рассмотрите возможность использования механизма шаблонов.

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