如何在php中进行记录的内部循环 [英] How to do an inner loop of records in php
问题描述
我正在学习PHP,我想知道如何使用PHP中的记录进行内部循环或嵌套循环.如果有人向我解释了如何在PHP中执行这种类型的循环,我将不胜感激.
I am learning PHP and I want to know how to do an inner loop or nested loop with records in PHP. I will appreciate if somebody explains me how to do this type of loop in PHP.
我在MySQL中有此表 []
I have this table in MySQL []
我只想在PHP中创建一个如下所示的报告表:
I just want to create a report table in PHP that looks like this:
到目前为止,我知道如何使用下面的代码进行当前循环,但是如何在同一循环和内部循环中进行操作以显示如上表所示的菜肴.我知道如何创建格式(表格,空格等),我只需要PHP逻辑即可以最佳方式做到这一点.
So far, I know how to do a current loop with the code below but how could I do in the same loop and inner loop to show dishes like table above. I know how to create the format (table, spaces, etc) I just need the PHP logic to do this in the best way.
<?php
do { ?>
Table in here
<?php } while ($selecc = mysqli_fetch_assoc($conmenu)); ?>
推荐答案
干净/直接的方法应该是这样的:
The clean/direct approach should be something like this:
SELECT Client, Option, GROUP_CONCAT(Dish SEPARATOR ', ')
FROM table_name
GROUP BY Client, Option
然后将数据分组并粘合在一起,只需在结果集的单个循环中打印字符串即可.
Then with your data already grouped and glued together, just print your strings in a single loop of the result set.
在这里使用do {} while ()
没有好处.
这是未经测试的代码段...
Here's an untested snippet...
if ($conmenu) {
echo '<table>';
echo '<tr><td>Client</td><td>Option</td><td>Dishes</td></tr>';
while ($row = mysqli_fetch_assoc($conmenu)) {
echo '<tr><td>' , implode('</td><td>', $row) , '</td></tr>';
}
echo '</table>';
}
作记录:
GROUP_CONCAT()函数的最大允许结果长度(以字节为单位).默认值为1024.
The maximum permitted result length in bytes for the GROUP_CONCAT() function. The default is 1024.
https://dev.mysql .com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len
此外,$conmenu
是可迭代的,因此您可以使用foreach代替while循环.
Also, $conmenu
is iterable, so you could use a foreach instead of a while loop.
foreach ($conmenu as $row) { ...
如果您想用困难的方式做...
If you want to do it the hard way...
SELECT Client, Option, Dish
FROM table_name
ORDER BY Client, Option
然后...(未经测试)
Then... (untested)
if ($conmenu) {
echo '<table>';
echo '<tr><td>Client</td><td>Option</td><td>Dishes</td></tr>';
$group = null;
foreach ($conmenu as $row) {
if ($group !== $row['Client'] . '_' . $row['Option']) {
if ($group !== null) {
echo '</td></tr>';
}
echo '<tr><td>' , implode('</td><td>', $row);
} else {
echo ", " , $row['Dish'];
}
$group = $row['Client'] . '_' . $row['Option']; // update group
}
echo '</td></tr>'; // close final iteration
echo '</table>';
}
这篇关于如何在php中进行记录的内部循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!