2013-04-28 24 views
0

我正在將數據從數據庫中提取出來。由於我似乎遇到數組和多維數組的麻煩,我需要一些幫助。需要幫助將數據從mysql中拖出到多維數組中

在數據庫中,我拉了以下信息: ID,排長,名稱,位置,狀態

我需要把所有這一切到一個數組。

由於有超過150個名字,許多人持有相同的位置。

這裏是我使用的代碼:我想那些在特定的位置,以通過表格列出

$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']), 
     ), 
     ); 
    } 

例如:

<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> 

我在想什麼?當我運行它時,它只給了我最後一個輸入。

感謝您的幫助

回答

0

您正在用while語句的每次迭代覆蓋$ info的值。 如果你想在陣列結構中的所有數據存儲這樣的:

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

然後使用過程如下所示:(注意:我使用的PDO,你也可以使用PHP中的MySQLi,但使用其中的一個而不是已棄用的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 2013-04-28 22:44:36

+0

嗨邁克。而不是嘗試對數組進行排序。你應該嘗試改變查詢來給你排序的結果。 「選擇編號,位置,排,名稱,狀態從ost_platoon_assignments排序,排名」 這將按字母順序排序,如果這就是你需要的? – antony 2013-04-28 23:23:37

0

應該

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

代替。現在你不斷覆蓋$info,每個結果行都被檢索到。 []表示法將把新行壓入$info數組,而不是簡單地替換之前的數據。