2013-04-28 2 views
0

데이터베이스에서 데이터를 가져옵니다. 배열과 다차원 배열에 문제가있는 것 같아 도움이 필요합니다. mysql에서 다차원 배열로 데이터를 가져 오는 데 도움이 필요합니다.

데이터베이스에서 나는 다음과 같은 정보를 당겨 오전 : 아이디, 소대, 이름, 위치, 상태

내가 배열에 모두를 둘 필요가

합니다.

많은 사람들이 동일한 지위를 유지하면서 150 개가 넘는 이름이 있습니다.

예 :

<table border="1"> 
    <? 
    foreach ($info as $position => $names) { 
     echo "<tr>"; 
     echo "<td> {$position} </td>"; 
     foreach ($names as $name) { 
     if ($name[name] =="") {$name[name] = "Vacant"; } 
     echo "<td class=\"status{$name[status]}\"> {$name[name]} </td>"; 
     } 
     echo "</tr>"; 
    } 
    ?> 
    </table> 

내가 무엇을 놓치고을 내가 특정 위치에있는 사람들에 의해 테이블을 통해 나열 할

$sql='SELECT id, position, platoon, name, status FROM ost_platoon_assignments'; 
    $users=db_query($sql); 
    $num=db_num_rows($users); 
    while ($row = db_fetch_array($users)) { 
     $info = array(
      $row['position'] => array(
      $row['platoon'] => array("name" =>$row['name'], "status" => $row['status']), 
     ), 
     ); 
    } 

: 여기

은 내가 사용하고 코드입니다 ? 이걸 실행할 때 마지막 항목 만 제공합니다. 당신의 도움이

답변

0

while 문을 반복 할 때마다 $ info의 값을 덮어 쓰고 있습니다.

$info = array(
    'general' => array(
     array(/* general 1 */), 
     array(/* general 2 */), 
     array(/* general 3 */) 
    ), 
    'colonel' => array(
     array(/* colonel 1 */), 
     array(/* colonel 2 */), 
    ), 
    // ..... 
) 

그런 다음 다음과 같은 프로세스를 사용 :이 같은 배열 구조에있는 모든 데이터를 저장하려면 는 (당신은 또한 PHP의 mysqli를 사용할 수 있습니다, 내가 PDO를 사용하고 있습니다 만,이 중 하나를 사용 PHP의 mysql 라이브러리 대신 사용되지 않음).

$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); 
$result = $conn->query('SELECT id, position, platoon, name, status FROM ost_platoon_assignments'); 

$info = array(); 
while ($row = $result->fetch(PDO::FETCH_ASSOC)) { 
    $info[$row['position']][] = $row; 
} 

는이

foreach ($info as $position => $users) { 
    foreach ($users as $user) { 
     // .... 
    } 
} 
+0

안토니와 같은 위치로 각 사용자를 통해 다음 루프는 당신의 도움을 주셔서 감사 할 수 있습니다. 내가 배열을 표시하려고하고 그것을 인쇄하는 동안 배열을 정렬해야합니다. 예를 들어. 나는 "A"소대원들과 "B"소대 등에있는 다른 사람들을 가지고 있습니다. 소대에 의해 분류 된 위치별로 한 줄에 나열하려고합니다. 약간의 통찰력을 제공 할 수 있습니까 – Mike

+0

안녕 Mike. 배열을 정렬하려고하는 것이 아닙니다. 정렬 된 결과를 제공하기 위해 쿼리를 변경해야합니다. "id, 위치, 소대, 이름, 상태로부터 소대원, 위치 별 ost_platoon_assignments 주문 선택" 필요한 경우 사전 순으로 정렬됩니까? – antony

0

에 대한

덕분에 대신

$info[] = array(.....); 
     ^^----- 

해야한다. 현재 모든 결과 행을 검색하면서 계속해서 $info을 오버라이드하고 있습니다. [] 표기법을 사용하면 새 행을 $info 배열에 푸시 할 수 있습니다.

관련 문제