Вот пример макета Mysql
:
| ID | Country | City | ________________________________ | 1 | Sweden | Stockholm | | 2 | Sweden | Stockholm | | 3 | Sweden | Lund | | 4 | Sweden | Lund | | 5 | Germany | Berlin | | 6 | Germany | Berlin | | 7 | Germany | Hamburg | | 8 | Germany | Hamburg |
Обратите внимание, как в обеих строках Country
и city
имеют повторяющиеся значения внутри них.
Используя GROUP BY country, city
в моем запросе PDO, значения не будут повторяться во время loop
. Вот PDO для этого:
$query = "SELECT id, city, country FROM table GROUP BY country, city"; $stmt = $db->query($query); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
Вышеприведенный код приведет к выходу, подобному этому (некоторое редактирование между ними). GROUP BY
работает, но country
повторяет:
Sweden - Stockholm Sweden - Lund Germany - Berlin Germany - Hamburg
Используя развал бутстрапа и код выше, я отделяю country
от city
с помощью простого раскрывающегося коллопаза. Вот код:
<li> <a data-toggle="collapse" data-target="#<?= $row['id']; ?>" href="search.php?country=<?= $row['country']; ?>"> <?= $row['country']; ?> </a> <div id ="<?= $row['id']; ?>" class="collapse in"> //collapse div here <a href="search.php?city=<?= $row['city']; ?>"> <?= $row['city']; ?><br></a> </div> //end </li>
Затем он выглядит примерно так (после начала развала):
Sweden > Stockholm Sweden > Lund Germany >Berlin Germany >Hamburg
Здесь я столкнулся с проблемой. В приведенном выше списке указаны значения Sweden
и Germany
2 раза. Я хочу, чтобы Sweden
и Germany
перечисляли только один раз и города, перечисленные ниже, поэтому желаемый внешний вид должен быть таким:
Sweden // Lists one time > Stockholm > Lund Germany // Lists one time >Berlin >Hamburg
Я пробовал использовать DISTINCT, GROUP_CONTACT
и другие методы, но никто не получил мой желаемый результат (см. Выше). Предложения? Ниже приведен мой текущий полный код в действии:
<? $query = "SELECT id, city, country FROM table GROUP BY country, city"; $stmt = $db->query($query); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : ?> <li> <a data-toggle="collapse" data-target="#<?= $row['id']; ?>" href="search.php?country=<?= $row['country']; ?>"> <?= $row['country']; ?> </a> <div id ="<?= $row['id']; ?>" class="collapse in"> //collapse div here <a href="search.php?city=<?= $row['city']; ?>"> <?= $row['city']; ?><br></a> </div> //end </li> <? endwhile ?>