2013-07-01 59 views
0

幫助!按數組排列的Codeigniter組

我正在嘗試使用名爲「events」的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> 

我故意不包括任何的我的模型,視圖和控制器代碼,就像我迄今爲止似乎混淆了人們在我看到它時試圖達到的目標。而且我對我可能從錯誤的角度攻擊這個事實開放......我只需要得出上述結果!

這感覺好像這應該是一個相當簡單的事情來實現,但我需要幫助!

+1

這不僅僅是一個按國家,城市,地點排序的數據集,然後循環查看結果嗎? – Strawberry

+0

類別。但它會在EVERY循環中重複國家,城市和地點,而不是在父分組變量 – user2505513

+0

之下疊加相應的信息。這正是循環的目的 - 而某些事情是x做一件事,當它發生變化時做另一件事! – Strawberry

回答

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>"; 
} 
+0

上面的答案不會損害視圖文件的完整性嗎? – user2505513

+0

妥協誠信是什麼意思? 你如何輸出這個取決於你。你也可以把循環放在視圖中,然後把查詢放在它應該是的模型中。 – Flashin

+0

但是我明白,視圖文件不應該儘可能免費使用php?如果文件,公平 - 但定義變量等視圖文件不是不正確的地方呢? @Flashin ps。這真的很有幫助,謝謝。 – user2505513

0

添加到閃光類的回答(和無視我的使用不贊成的方法),該程序解決方案可以是這個樣子......

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