2013-07-01 5 views
0

HELP!코드 그룹 별 배열

"이벤트"라는 MySQL 데이터베이스 테이블을 사용하여 CI 웹 사이트의 "과거 이벤트"페이지를 생성하려고합니다. 잉글리쉬, 아일랜드, 북 아일랜드, 스코틀랜드, 웨일즈 등 5 개 주요 국가에 걸쳐 중복되는 항목과 장소를 포함하여 100 개 이상의 행이 중복되어 있습니다.

지금 조회하고 다음과 같은 형식으로 데이터를 반환하는 방법으로 주 동안 분투

:

<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

일종. 그러나 그것은 부모 그룹 변수 아래에 해당 정보를 스태킹하는 것과 반대로 모든 루프에서 국가, 도시 및 장소를 반복합니다. – user2505513

+0

그건 정확히 루프가 무엇인지에 대한 것입니다 - x는 한 가지 일을하지만, 다른 것은 변경합니다 ! – Strawberry

답변

0

결과를 국가, 도시 및 장소별로 정렬해야합니다.

당신은 루프, 당신이 할 수있는 경우, 절차 해결책은 ... 다음과 같이 보일 수 Flashin의 대답에 추가

<?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에서 자유롭지 않아야하는 뷰 파일을 알고있다. if 파일, 충분히 공정한 - 그러나 변수를 정의하는 것 등이 잘못된 파일이 아닌 view 파일입니까? @ 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>"; 
}