Вставьте количество каждого типа товара в той же строке

У меня проблема с указанием количества каждого предмета в одной строке. У студента с матричным номером 1234 должно быть 2 больших мешка, а у маленького мешка - 3. У ученика с номером 65527 должно быть 3 больших мешка, но 0 маленькая сумка. Ниже показано, как выглядит моя таблица до того, как я использую команду GROUP_CONCAT:

Вставьте количество каждого типа товара в той же строке

Год отображается не в столбце года, а в столбце небольшой сумки, а количество отображается в другой строке.

Вот как это выглядело, когда я попробовал команду GROUP_CONCAT: Вставьте количество каждого типа товара в той же строке

Год по-прежнему не отображается в столбце года, а количество каждого мешка отображается в том же столбце.

Вот как выглядит моя команда mysql GROUP_CONCAT:

$sql_join = "SELECT s.student_id,s.student_name,s.student_contact,s.student_status,s.student_room, i.invstu_year, i.invstu_sem, l.location_house, GROUP_CONCAT(b.baggage_type) as 'Products', GROUP_CONCAT(i.invbag_quantity) as 'Quantity', GROUP_CONCAT(b.price) as 'Price' FROM inventory i JOIN student s on i.invstu_id = s.student_id JOIN baggage b on b.baggage_id = i.invbag_id JOIN location l on l.location_id = i.invloc_id GROUP BY i.invstu_id";
$result_join =  mysqli_query($connect,$sql_join);       

Вот как я указываю команду для таблицы:

<?php
    $counter = 1;
    while($row_join= mysqli_fetch_assoc($result_join))
    { ?>
     <tr>
     <td><?php echo $counter; ?></td>
     <td><?php echo $row_join["student_name"]; ?></td>
     <td><?php echo $row_join["student_id"]; ?></td>
     <td><?php echo $row_join["Quantity"]; ?></td>
     <td><?php echo $row_join["invstu_year"]; ?></td>
     <td><?php echo $row_join["invstu_sem"]; ?></td>
     <td><?php echo $row_join["location_house"]; ?></td>
     </tr>
    <?php   
        $counter++;
    }
    ?>

Я пытаюсь найти другой пример, но не могу его найти. Я могу пропустить какой-то пример и был бы очень признателен, если бы есть какой-либо предлагаемый пример, на который я мог бы сослаться.

где твоя часть table header ..?

Bhargav Chudasama 03.04.2018 15:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

GROUP_CONCAT сгруппирует оба значения вместе в одну строку, вы можете использовать PHP Explode для разделения строки, если значения всегда будут в одном месте.

Что-то вроде

$Bags = explode(",", $row_join["Quantity"]);

а также

<td><?php echo $Bags[0]; ?></td>
<td><?php echo $Bags[1]; ?></td>

Чтобы уточнить, в настоящее время он группирует значения как «2,3», функция explode разбивает строку на массив, $ Bags становится [2,3], поэтому вы должны использовать $ Bags [0] для доступа к первое число, $ Bags [1] для доступа ко второму.

Спасибо за предложенный вами код. Но теперь проблема во втором ученике. Поскольку у второго ученика только большая сумка и нет маленькой сумки, возникает ошибка. Это ошибка: Примечание: неопределенное смещение: 1. Я попытаюсь изменить свой код, чтобы установить невыбранные типы сумок на 0. Еще раз спасибо. :)

Aire 03.04.2018 16:08

Я вижу, что в качестве альтернативы вы могли бы использовать второй оператор SQL, если бы было только два варианта для пакетов, но было бы немного безумно, если бы у вас было больше вариантов.

James Lingham 03.04.2018 16:13

Ха-ха. К сожалению, у меня есть более двух вариантов. Поскольку предполагается, что система сможет добавлять больше типов багажа ....

Aire 03.04.2018 16:22

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

James Lingham 03.04.2018 16:24

как насчет чего-то вроде: "GROUP_CONCAT (CONCAT ('{type:"', i.invbag_quantity '", qty:"', b.baggage_type, '"}')) bag", что даст вам значение "small: 2, большой: 3 дюйма, а затем использовать php для анализа данных?

James Lingham 03.04.2018 16:54

Другие вопросы по теме