2012-10-28 3 views
2

MongoDB에서 레코드를 가져 오는 앱을 만들고 있습니다. 나는 내장 한 THEAD> TR> 일 다음과 같이이 나에게주는각 mongodb 레코드를 html 테이블에 출력합니다.

// building table head with keys 
    $cursor = $collection->find(); 
    $array = iterator_to_array($cursor); 
    $keys = array(); 
    foreach ($array as $k => $v) { 
      foreach ($v as $a => $b) { 
        $keys[] = $a; 
      } 
    } 
    $keys = array_values(array_unique($keys)); 
    // assuming first key is MongoID so skipping it 
    foreach (array_slice($keys,1) as $key => $value) { 
     echo "<th>" . $value . "</th>"; 
    } 

: 이것은 아주 잘 작동

<thead> 
    <tr> 
     <th>name</th> 
     <th>address</th> 
     <th>city</th> 
    </tr> 
</thead> 

, 모든 키를 잡고 테이블에 머리를 구축합니다. 나는 아무것도 지정할 필요가 없으며 thead는 데이터로부터 동적으로 구축됩니다. 내가 알아낼 수 없어요 부분은 모든 건물 인 TR> I 쉽게 정보를 잡아 같이 그것을 구축 할 수 있습니다

TD의 : 이렇게

$cursor = $collection->find(); 
$cursor_count = $cursor->count(); 
    foreach ($cursor as $venue) { 
     echo "<tr>"; 
     echo "<td>" . $venue['name'] . "</td>"; 
     echo "<td>" . $venue['address'] . "</td>"; 
     echo "<td>" . $venue['city'] . "</td>"; 
     echo "</tr>"; 
    } 

내 PHP 때마다 수정하는 나를 필요 새 필드를 추가합니다. 나는 thead와 함께 mongodb의 데이터를 기반으로 tr> td를 자동으로 어떻게 구축 할 수 있습니까?

내 데이터는 다음과 같습니다

{ 
    "name": "Some Venue", 
    "address": "1234 Anywhere Dr.", 
    "city": "Some City" 
} 

답변

1

당신이

$cursor = $collection->find(); 
$cursor_count = $cursor->count(); 
    foreach ($cursor as $venue) { 
     echo "<tr>"; 
     foreach (array_slice($keys,1) as $key => $value) { 
      echo "<td>" . $venue[$value] . "</td>"; 
     } 
     echo "</tr>"; 
    } 
+0

이 작동 아래와 같이 두 번째 foreach 문을 사용하려고 가지고, 덕분에 많이 :) – ccheney

+0

이를 유효 HTML을하지 않습니다해야 행은 일부. 서에서 다른 필드를가집니다. 또한 특히 첫 번째 행이 다른 행의 필드를 생략하면 필드 이름이 이상하게 보일 수 있습니다. 기본적으로 이는 대부분의 경우 스키마가없는 행에 대한 형식이 잘못된 테이블을 만듭니다. – Sammaye