gpt4 book ai didi

php - 加入两个 MySQL 表并使用 php 对结果进行分组

转载 作者:行者123 更新时间:2023-11-29 02:32:39 24 4
gpt4 key购买 nike

我有以下代码来填充表格中的城市。

$cities_query = "SELECT city_name FROM city_selection";
$cities_result = mysql_query($cities_query);


echo "<table>";
while ($row = mysql_fetch_assoc($cities_result))
{
echo "<tr>";
echo "<td>".$row['city_name'] . "</td>";
echo "</tr>";
}
echo "</table>";

现在我需要按区域对每个城市进行分组,因此我创建了名为 city_region_selection 的表并添加了一个 Foreign key来自新专栏"region_id"city_selection tableregion_id在新表中。

我现在正在努力使用 PHP 在漂亮的 html 表格中呈现这些数据。

是否有可能首先用 region_name 填充表格行,然后填充一些包含该地区城市的子行?详情请看这张图片:

http://oi48.tinypic.com/2uq0z9x.jpg

最佳答案

你只需要做一些预处理:

/* SQL
SELECT
city_name,
region_name
FROM
city_selection
NATURAL JOIN city_region_selection
SQL */

$regions = array();
while ($result->fetch()) {
if (!isset($regions[$result->region_name])) {
$regions[$result->region_name] = array();
}
$regions[$result->region_name][] = $result->city_name;
}

以 SQL 为焦点的替代方法

/* SQL
SELECT
region_name,
GROUP_CONCAT(city_name SEPARATOR ',') cities
FROM
city_selection
NATURAL JOIN city_region_selection
GROUP BY
region_name
*/

$regions = array();
while ($result->fetch()) {
$regions[$result->region_name] = explode(',', $result->city_name);
}

帮助

请注意,while 语法只是被删节了。您可能会将其替换为

while ($row = mysql_fetch_assoc($cities_result)) {
$regions[$row['region_name']] = explode(',', $row['city_name']);
}

...例如

regions 构建完成后,只需执行以下操作:

foreach ($regions as $region => $cities) {
echo "<tr><td>$region</td></tr>";
foreach ($cities as $city) {
echo "<tr><td class="tabbed">$city</td></tr>";
}
}

关于php - 加入两个 MySQL 表并使用 php 对结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com