2

テーブルに都市を入力する次のコードがあります。

$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>";

ここで、すべての都市を地域別にグループ化する必要があるため、というテーブルを作成し、新しいテーブルのtoの新しい列からcity_region_selectiona を追加しました。Foreign key"region_id"city_selection tableregion_id

PHPを使用して、このデータを素敵なhtmlテーブルに表示するのに苦労しています。

最初にテーブルの行に region_name を入力し、次にその地域の都市を含むいくつかのサブ行を入力することさえ可能ですか? 詳細については、この画像を参照してください。

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

4

1 に答える 1

2

少しだけ前処理をする必要があります。

/* 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>";
   }
}
于 2012-05-21T15:54:33.843 に答える