2014-03-24 2 views
0

저는 주기율표에서 데이터베이스의 모든 요소를 ​​검색하고 있습니다. 주기율표의 해당 위치에 요소를 배치하고 싶습니다.PHP는 배열의 첫 번째 요소 만 구문 분석합니다.

예 : 수소가 1 행에 있으며, 셀 1 - 헬륨이 1 행 18 열에 있습니다. 따라서이 둘 사이의 셀은 공백이어야합니다.

문제는 내가 for-loop를 실행하고 데이터베이스에 저장된 위치와 각 셀에 주어진 ID를 비교할 때 (데이터베이스의 위치 결과와 동일 함)), 첫 번째 요소를 구문 분석 한 다음 중지합니다.

첫 번째 1-1 (헬륨 - 행 1, 셀 1)을 반환하고 필요한대로 구문 분석합니다. 그런 다음 1-2 번 (행 1, 셀 2)이 될 것이며, 여기에서부터 멈 춥니 다.

이 내 쿼리

// SQL Query for retrieving elements 
$query = " 
    SELECT 
     id, name, symbol, row, cell 
    FROM 
     elements 
    ORDER BY 
     id 
"; 
$objResult = $objConnection->query($query); 

while ($row = $objResult->fetch_assoc()) { 
    // Creating two-dimensional, associative array containing each element 
    $ele[] = array(
     'id' => $row['id'], 
     'name' => $row['name'], 
     'symbol' => $row['symbol'], 
     'position' => $row['row'].'-'.$row['cell'] 
    ); 
} 

입니다 그리고 내 나는 꽤 붙어있어 기분이야 내가, 당신이 날 도울 수 있기를 바랍니다

// Element counter 
$cnt = 0; 

// Creating tr's and td's 
for($i = 1; $i <= 9; $i++) { 
    echo '<tr>'; 
     for($h = 1; $h <= 18; $h++) { 
      $cell = $i.'-'.$h; 
      $pos = $ele[$cnt]['position']; 

      echo '<td id="'.$cell.'">'; 
      if($pos == $cell) { 
       echo $ele[$cnt]['symbol']; 
      } 
      echo '</td>'; 
      $cnt++; 
     } 
echo '</tr>'; 

에 대한-반복합니다.

+0

당신은 행 (9)과 열 (18)와 테이블을 생성 할을 같은? 그리고 시작 변수가 0이 아닌 1과 같은 이유는 무엇입니까? 배열 인덱스는 0 - – waki

+0

으로 시작합니다. 배열 인덱스와 관련이 없기 때문에 내 데이터베이스에 저장된 위치입니다. –

답변

2

배열을 재고하고 연관시켜야합니다. 배열의 키를 필드로 만들면 어떨까요?

$ele[ $row['row'].'-'.$row['cell'] ] = array(
    'id' => $row['id'], 
    'name' => $row['name'], 
    'symbol' => $row['symbol'] 
); 

다음 루프에서 쉽게 필요한 요소를 찾을 수 있습니다 :

for($i = 1; $i <= 9; $i++) { 
echo '<tr>'; 
    for($h = 1; $h <= 18; $h++) { 
     $cell = $i.'-'.$h; 

     echo '<td id="'.$cell.'">'; 
     if(isset($ele[$cell]) { 
      echo $ele[$cell]['symbol']; 
     } 
     echo '</td>'; 
     $cnt++; 
    } 
echo '</tr>'; 
+0

고마워! –

+0

이것은 효과가 있습니다. 고마워요! :) –

관련 문제