У меня проблема с указанием количества каждого предмета в одной строке. У студента с матричным номером 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++;
}
?>
Я пытаюсь найти другой пример, но не могу его найти. Я могу пропустить какой-то пример и был бы очень признателен, если бы есть какой-либо предлагаемый пример, на который я мог бы сослаться.






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. Еще раз спасибо. :)
Я вижу, что в качестве альтернативы вы могли бы использовать второй оператор SQL, если бы было только два варианта для пакетов, но было бы немного безумно, если бы у вас было больше вариантов.
Ха-ха. К сожалению, у меня есть более двух вариантов. Поскольку предполагается, что система сможет добавлять больше типов багажа ....
и я предполагаю, основываясь на результатах, у вас есть одна запись для каждого типа багажа. Значит, если у них нет маленьких сумок, не будет ли запись о том, что у них 0 маленьких сумок?
как насчет чего-то вроде: "GROUP_CONCAT (CONCAT ('{type:"', i.invbag_quantity '", qty:"', b.baggage_type, '"}')) bag", что даст вам значение "small: 2, большой: 3 дюйма, а затем использовать php для анализа данных?
где твоя часть
table header..?