簡體   English   中英

顯示城市列表以及這些城市中的地點名稱

[英]Display a list of cities and the names of the locations in those cities

我的數據庫看起來像這樣...

身份證,城市,名字

1,阿霍,腹畝

2,高山,高山村

3,阿帕奇路口,失落的荷蘭人

4,阿帕奇路口,黃油田

5,阿帕奇路口,本森

6,比斯比,女王礦

... 等等

我正在嘗試將列表顯示為...

<section>
  <h1>ajo</h1>
  <h2>belly acres</h2>
</section>
<section>
  <h1>alpine</h1>
  <h2>alpine village</h2>
</section>
<section>
  <h1>apache junction</h1>
  <h2>lost dutchman</h2>
  <h2>butterfield</h2>
  <h2>benson</h2>
</section>
<section>
  <h1>bisbee</h1>
  <h2>queen mine</h2>
</section>

我當前使用的代碼對於只有一個名稱的城市來說效果很好,但是在具有多個名稱的Apache Junction的示例中,我得到了。

<section>
  <h1>apache junction</h1>
</section>
  <h2>lost dutchman</h2>
  <h2>butterfield</h2>
  <h2>benson</h2>
<section>
  <h1>bisbee</h1>
  <h2>queen mine</h2>
</section>

我想在一節中顯示Apache交界處的所有位置名稱。 這是我正在使用的代碼...

    $previousLevel = "";
    $city_query = $wpdb->get_results( $wpdb->prepare("SELECT name, city FROM locations") );
    foreach ($city_query as $city_list) {
        $city = $city_list->city;
        $name = $city_list->name;
        if ($city != $previousLevel) {
            $dump_list .= '<section><h1>' . $city . '</h1>';
            $dump_list_end = '</section>';
        }
        $dump_list .= '<h2><a href="#">' . $name . '</a></h2>';
        $dump_list .= $dump_list_end;
        $previousLevel = $city; 
    }

任何幫助,將不勝感激。

您可以嘗試一下此修改后的代碼嗎?

$previousLevel = "";
$city_query = $wpdb->get_results( $wpdb->prepare("SELECT name, city FROM locations") );
foreach ($city_query as $city_list) {
    $city = $city_list->city;
    $name = $city_list->name;
    if ($city != $previousLevel) {
        if ($previousLevel != "") {
            $dump_list .= '</section>';
        }
        $dump_list .= '<section><h1>' . $city . '</h1>';
        $previousLevel = $city;
    }
    $dump_list .= '<h2><a href="#">' . $name . '</a></h2>';
}

修改后的代碼,更長,但更易於理解,並帶有適當的數據轉義:

$city_query = $wpdb->get_results( $wpdb->prepare("SELECT name, city FROM locations ORDER BY city, name") );
$cities = array();
foreach ($city_query as $city_list) {
    if (!isset($cities[$city_list->city])) {
        $cities[$city_list->city] = array();
    }
    $cities[$city_list->city][] = $city_list->name;
}
$dump_list = '';
foreach ($cities as $city => $names) {
    $dump_list .= '<section><h1>' . htmlspecialchars($city) . '</h1><h2>';
    $dump_list .= implode('</h2><h2>', array_map('htmlspecialchars', $names));
    $dump_list .= '</section>';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM