Ясно, что это не идеальное решение, но оно РАБОТАЕТ. Я добавил это в начало моего файла route.php:
header('Access-Control-Allow-Origin: *');
header( 'Access-Control-Allow-Headers: Authorization, Content-Type' );
Было бы неплохо получить эту работу без взлома ... alas.
UPDATE: Оказалось, что это связано с ИИС. Я закончил настройку заголовков в файле web.config, и теперь CORS работает без взлома файла route.php.
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
</customHeaders>
</httpProtocol>
Если вы хотите ограничить доступ, вы можете добавить исходящие правила:
<outboundRules>
<clear />
<rule name="AddCrossDomainHeader">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?somesite\.com|(.+\.)?anothersite\.org))" />
</conditions>
<action type="Rewrite" value="{C:0}" />
</rule>
</outboundRules>
Чистый / прямой подход должен выглядеть примерно так:
SELECT Client, Option, GROUP_CONCAT(Dish SEPARATOR ', ')
FROM table_name
GROUP BY Client, Option
Затем, когда ваши данные уже сгруппированы и склеены, просто напечатайте свои строки в одном цикле набора результатов.
Использование do {} while ()
здесь бесполезно.
Вот непроверенный фрагмент ...
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.
blockquote>https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len
Также [116 ] является итеративным, поэтому вы можете использовать foreach вместо цикла while.
foreach ($conmenu as $row) { ...
Если вы хотите сделать это трудным путем ...
SELECT Client, Option, Dish FROM table_name ORDER BY Client, Option
Тогда ... (не проверено)
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>'; }