0

帮助!

我正在尝试使用名为“事件”的 MySQL 数据库表为我的 CI 网站生成一个“过去的事件”页面。有 100 多行数据,其中一些是重复的,分布在 5 个主要国家 - 英格兰、爱尔兰、北爱尔兰、苏格兰和威尔士 - 许多不同的主要城市 - 再次,包括重复的条目 - 和场地。

我已经为如何以以下格式查询和返回数据苦苦挣扎了几个星期:

<h1>** grouped country **</h1>
<h2> ** grouped city **</h2>
<p>** grouped venue **</p>

如:

<h1>England</h1>
<h2>London</h2>
<p>Tower of London</p>
<h2>Manchester</h2>
<p>Canal Street</p>
<p>Old Trafford</p>
<h1>Ireland</h1>
<h2>Dublin</h2>
<p>St. James' Gate</p>
<h1>Scotland</h1>
<h2>Glasgow</h2>
<p>Buchanan Street</p>
<p>Tron Theatre</p>

我故意不包括我的任何模型、视图和控制器代码,因为到目前为止我所拥有的似乎让人们在他们看到我想要实现的目标时感到困惑。而且我对我可能完全从错误的角度攻击这个事实持开放态度......我只需要得到上述结果!

感觉好像这应该是一件相当简单的事情,但我需要帮助!

4

2 回答 2

0

您需要按国家、城市和地点对结果进行排序。

循环时,您可以执行以下操作

<?php
$lastCountry = null;
$lastCity = null;
$query = $this->db->query("SELECT country, city, venue FROM venues ORDER BY country, city, venue"); // CI query
foreach($list = $query->result_array()) {
    if($list['country'] != $lastCountry) {
        $lastCountry = $list['country'];
        print "<h1>".$list['country']."</h1>";
    }
    if($list['city'] != $lastCity) {
        $lastCity = $list['city'];
        print "<h2>".$list['city']."</h2>";
    }
    print "<p>".$list['venue']."</p>";
}
于 2013-07-01T12:14:14.793 回答
0

添加到 Flashin 的答案(并忽略我使用过时的方法),程序解决方案可能看起来像这样......

$query = "
SELECT
     *
  FROM venues
 ORDER
    BY country
     , city
     , venue;
";

$lastCountry = null;
$lastCity = null;
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)) {
    if($row['country'] != $lastCountry) {
        $lastCountry = $row['country'];
        print "<h1>".$row['country']."</h1>";
    }
    if($row['city'] != $lastCity) {
        $lastCity = $row['city'];
        print "<h2>".$row['city']."</h2>";
    }
    print "<p>".$row['venue']."</p>";
}
于 2013-07-01T12:24:43.750 回答